31
1/31 Fundamentos de Programação Compilação por linha de comando. Ambiente integrado de desenvolvimento (IDE). Parâmetros de compilação. Estrutura de um programa em C. Paradigmas de programação. Operador de atribuição e armazenamento em variáveis. Funções de entrada e saída. Aula 3 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia Eletrônica – 2º Período 2015.1 ET42G

Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

1/31

Fundamentos de ProgramaçãoCompilação por linha de comando. Ambiente integrado de desenvolvimento (IDE). Parâmetros de compilação. Estrutura de um programa em C. Paradigmas de programação. Operador de atribuição e armazenamento em variáveis. Funções de entrada e saída.

Aula 3Prof. Daniel Cavalcanti Jeronymo

Universidade Tecnológica Federal do Paraná (UTFPR)Engenharia Eletrônica – 2º Período2015.1

ET42G

Page 2: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

2/31

Plano de Aula

• Operador de atribuição e armazenamento em variáveis

• Paradigmas de programação

• Estrutura de um programa em C

• Compilação por linha de comando

• Parâmetros de compilação

• Ambiente integrado de desenvolvimento

Page 3: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

3/31

Operador de atribuição e armazenamento em variáveis

• Variável:

• Local de armazenamento associado com um identificador (nome simbólico).

• O nome permanece fixo porém a informação armazenada varia.

• Exemplos:

tipo variável1;

tipo variável2, Variável2; domínio da memória

duas variáveis diferentes!

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 4: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

4/31

Operador de atribuição e armazenamento em variáveis• Nomes de variáveis:

• Devem começar com uma letra ou um sublinhado “_”, não com um número.

• Pode conter letras, dígitos e “_”

• Não são permitidos espaços

• Diferença entre caixa alta e caixa baixa

• Não pode ser um nome reservado

Nomes reservados:

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 5: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

5/31

Operador de atribuição e armazenamento em variáveis

• Nomes corretos:

• Variavel, VaRiAvEl, nome_da_variável, nome_123, _123

• Nomes incorretos:

• nome da variavel, 123nome, variavel@123, nome-da-variavel, char

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 6: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

6/31

Operador de atribuição e armazenamento em variáveis

• Alcance (visibilidade) de variáveis:

• É o escopo de onde a variável pode ser acessada

• Variáveis declaradas fora de qualquer bloco: global

• Variável declarada dentro de um bloco: local

• Variáveis locais podem ser acessadas apenas pelo bloco de origem e seus descendentes

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 7: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

7/31

Operador de atribuição e armazenamento em variáveis

• Alcance (visibilidade) de variáveis:

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 8: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

8/31

Operador de atribuição e armazenamento em variáveis

• Operador de atribuição:

• Atribui valores a variáveis.

• Sintaxe:

variável = valor;

• Exemplos:

int a;

int b = 0;

int c = 2 + 5;

a = 10;

variável NÃO inicializada

variáveis inicializadas

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 9: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

9/31

Operador de atribuição e armazenamento em variáveis

• Operador de atribuição:

• Pode conter expressões no lado direito

variável = expressão;

• A expressão é calculada e o valor resultante é atribuído a variável

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 10: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

10/31

Operador de atribuição e armazenamento em variáveis• Operador de atribuição:

• O sinal de igual é o operador de atribuição

• Outros operadores serão vistos futuramente

• Sintaxe geral:

lvalue = rvalue

lvalue é uma variável

rvalue é uma expressão, constante ou variável

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 11: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

11/31

Paradigmas de Programação

• Paradigmas principais:

• Declarativa (what) x Imperativa (how)

• Não-estruturada x Estruturada

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 12: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

12/31

Estrutura de um programa em C

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 13: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

13/31

Compilação por linha de comando• Escreva o seguinte programa e salve-o como test.c:

#include <stdio.h>

int main(void)

{

printf(“Ola mundo!\n”);

return 0;

}

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 14: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

14/31

Compilação por linha de comando

• Abra o console (shell ou linha de comando) na pasta onde o arquivo test.c foi salvo e digite:

gcc.exe test.c –o test.exe

• !ERRO! No caso de erro afirmando que gcc.exe não foi encontrado, é necessário colocar a pasta do compilador no PATH.

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 15: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

15/31

Compilação por linha de comando

• Para ajustar o PATH digite no console:

set PATH=%PATH%;C:\Program Files (x86)\CodeBlocks\MinGW\bin

• Essa linha de PATH assume sistema operacional Windows x64 e CodeBlocksinstalado com MinGW.

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 16: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

16/31

Parâmetros de compilação

• Conseguiu compilar?

• Teste parâmetros diferentes do compilador: -E -S –c –o

• Compare os resultados obtidos com o esperado do ciclo de compilação.

• Na dúvida sobre cada parâmetro, procure referências do compilador!

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 17: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

17/31

Parâmetros de compilação

• Dessa vez utilize os seguintes parâmetros:

gcc.exe -pedantic-errors -Wextra -Wall -ansi test.c –o test.exe

• Leia no manual do GCC o que cada parâmetro faz!

https://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html

https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 18: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

18/31

Ambiente de Desenvolvimento

• Repita o processo de compilação.

• Dessa vez utilize uma IDE (Integrated DevelopmentEnvironment) da sua escolha

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 19: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

19/31

Exercícios

• Exercício 1 – Qual o valor armazenado em a ao final do programa?

int main(void){

int a, b=10, c, d;d = 1;c = 5;d = c + b;a = c + 2;a = a + 1;

}

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 20: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

20/31

Exercícios

• Exercício 2 – Implemente o algoritmo de solução do problema dos galões. Qual a saída de g5 e de g3?

int main(void){

int g5 = 0, g3 = 0;...printf(“%d %d\n”, g5, g3);return 0;

}

Variáveis Atribuição Paradigmas Estrutura C Compilação Parâmetros IDE Exercícios

Page 21: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

21/31

Plano de Aula• Ponteiros para dispositivos

• Sequências de escape e identificadores de formato

• Funções de saída

• printf

• puts

• putchar

• Funções de entrada

• scanf

• gets

• getchar

Page 22: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

22/31

Ponteiros para dispositivos

• Herança do Unix – no C todo dispositivo é um arquivo:

• As funções de entrada e saída utilizam os ponteiros stdin e stdout

• Algumas funções permitem especificar o ponteiro

Ponteiros Sequencias Saída Entrada Problemas

Page 23: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

23/31

Sequências de escape e identificadores de formato

Ponteiros Sequencias Saída Entrada Problemas

Page 24: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

24/31

Sequências de escape e identificadores de formato

http://www.cplusplus.com/reference/cstdio/printf/

Ponteiros Sequencias Saída Entrada Problemas

Page 25: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

25/31

Saída

• int putchar(int c);

• Retorno: o caractere escrito como um inteiro ou EOF em caso de erro

• int puts(const char *s);

• Retorno: um número não-negativo em caso de sucesso ou EOF em caso de erro

Ponteiros Sequencias Saída Entrada Problemas

Page 26: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

26/31

Saída

• int printf(const char *format, ...);

• Retorno: número de caracteres escritos ou, no caso de erro, um valor negativo

Ponteiros Sequencias Saída Entrada Problemas

Page 27: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

27/31

Entrada

• int getchar(void);

• Retorno: caractere obtido ou EOF

• A variável para retorno deve ser um inteiro!

• Equivalente a getc(stdin)

• char *gets(char *s);

• Retorno: s no caso de sucesso, nulo em caso de EOF ou erro

Ponteiros Sequencias Saída Entrada Problemas

Page 28: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

28/31

Entrada

• int scanf(const char *format, ...);

• Retorno: número de termos lidos ou EOF no caso de erro

Ponteiros Sequencias Saída Entrada Problemas

Page 29: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

29/31

scanf - problemas• Misturando scanf com gets. Qual o problema do código abaixo?

int n = 0;

char str[80] = {0};

printf(“entre com um número: ");

scanf("%d", &n);

printf(“entre com uma string: ");

gets(str);

printf(“você digitou %d e \"%s\"\n", n, str);

Ponteiros Sequencias Saída Entrada Problemas

Page 30: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

30/31

scanf - problemas

• Agora teste o seguinte código e veja o que acontece:

int c=0;

printf("Primeira linha\n");

scanf("%d",&c);

while((c = getchar()) != '\n' && c != EOF);

printf("Segunda linha %X\n", c);

Ponteiros Sequencias Saída Entrada Problemas

Page 31: Fundamentos de Programaçãopaginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/… · 4/31 Operador de atribuição e armazenamento em variáveis • Nomes de variáveis:

31/31

scanf - problemas• Moral da história: não misture scanf com outras funções de entrada!

Leia:

• Alternativas:

• Toda chamada para scanf deve acompanhar uma linha para limpar o buffer de entrada:

while((c = getchar()) != '\n' && c != EOF);

• Considere usar fgets + sscanf. Porque?

• NÃO USE fflush(stdin)! Porque?

http://c-faq.com/stdio/scanfinterlace.htmlhttp://c-faq.com/stdio/gets_flush2.html

Leia: http://c-faq.com/stdio/getcharc.html

Ponteiros Sequencias Saída Entrada Problemas