DSCCCTUFCG rangeldsc ufpb br Profs Jos Eustquio Rangel
DSC/CCT/UFCG rangel@dsc. ufpb. br Profs. : José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Carga Horária: 60 h
DSC/CCT/UFCG Introdução à Programação Tópicos rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br 2. 1 2. 2 2. 3 2. 4 2. 5 2. 6 Introdução Um Programa C Simples: Impressão de uma Linha de Texto Outro Programa C Simples : Soma de Dois Inteiros Conceitos sobre Memória Aritmética em C Tomada de Decisões: Operadores de Igualdade e Relacionais 2
2. 1 Introdução DSC/CCT/UFCG ± Linguagem de programação C rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ° Abordagem estruturada e disciplinada para projeto de programa ± Programação estruturada ° Introduzida nos capítulos 3 e 4 do livro-texto ° Usada em todo o restante do livro-texto 3
rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br DSC/CCT/UFCG 1 2 3 4 5 6 7 8 9 10 2. 2 Um Programa Simples: Impressão de uma Linha de Texto /*Primeiro programa em C */ #include <stdio. h> int main() { printf( “Bem-vindo ao C!n" ); return 0; } ± Comentários ° ° Texto delimitado por /* e */ é ignorado pelo computador Usado para descrever programa 4
DSC/CCT/UFCG 2. 2 Um Programa Simples: Impressão de uma Linha de Texto ± #include <stdio. h> ° Diretiva do pré-processador ² rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ° Indicação ao computador para carregar um certo arquivo <stdio. h> ² Permite operações padrão de entrada/saída ± int main() ° ° Programas em C contém uma ou mais funções, uma das quais tem que ser exatamente main Parênteses são usados para indicar uma função 5
DSC/CCT/UFCG 2. 2 Um Programa Simples: Impressão de uma Linha de Texto ± int main() ° int significa que main "retorna" um valor inteiro ° Chaves ({ }) indicam a existência de um bloco rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ² O corpo de todas as funções tem que está contido entre chaves 6
DSC/CCT/UFCG 2. 2 Um Programa Simples: Impressão de uma Linha de Texto ± printf(“Bem-vindo ao C!n"); ° Instrui o computador a realizar uma ação rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ² ° A linha inteira equivale a um comando ² ° Especificamente, imprime a cadeia de caracteres entre aspas (“ ”) Todos os comandos têm que terminar com um ponto-e-vírgula (; ) Caractere de escape () ² Indica que o printf deve fazer algo fora do comum ² n é o caractere nova-linha 7
DSC/CCT/UFCG 2. 2 Um Programa Simples: Impressão de uma Linha de Texto ± return 0; ° Maneira de sair de uma função ° return 0, neste caso, significa que o programa rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br terminou normalmente ± Fecha-chave (}) ° Indica que o fim do main foi encontrado 8
DSC/CCT/UFCG 2. 2 Um Programa Simples: Impressão de uma Linha de Texto rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ± Linker ° Quando uma função é chamada, o linker a localiza na biblioteca ° A insere no programa-objeto (. obj) ° Se o nome da função for escrito incorretamente, o linker produzirá um erro, pois não será capaz de encontrar a função na biblioteca 9
rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br DSC/CCT/UFCG 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2. 2 Um Programa Simples: Impressão de uma Linha de Texto /*Programa de soma */ #include <stdio. h> int main() { int 1, int 2, soma; /* declaração */ Entre com o primeiro inteiro: 45 Entre com o segundo inteiro: 72 Soma eh igual a 117 printf( “Entre com o primeiro inteiro: n" ); /* prompt */ scanf( "%d", &int 1 ); /* le um inteiro */ printf( “Entre com o segundo inteiro: n" ); /* prompt */ scanf( "%d", &int 2 ); /* le um inteiro */ sum = int 1 + int 2; /* atribui soma */ printf( “A soma eh igual a %dn", soma ); /* imprime soma */ return 0; /* indica que o programa foi bem-sucedido */ } 10
DSC/CCT/UFCG 2. 3 Outro Programa Simples: Soma de dois Números ± Vide análise do programa anterior ° Comentários, #include <stdio. h> e main ± int 1, int 2, soma; rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ° Declaração de variáveis ² Variáveis posições na memória nas quais um valor pode ser armazenado ° int significa que as variáveis podem guardar inteiros (-1, 3, 0, 47) 11
DSC/CCT/UFCG 2. 3 Outro Programa Simples: Soma de dois Números ± Vide análise do programa anterior ° Nomes de variáveis (identificadores) ² int 1, int 2, soma rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ² Identificadores consiste de letras, dígitos (não podem começar por dígitos) e sublinha( _ ) ³ Case ° sensitive (maiúscula diferente de minúscula) Declarações executáveis aparecem antes dos comandos ² Se um comando executável referencia uma variável não declarada será produzido um erro de sintaxe (compilador) 12
2. 3 Outro Programa Simples: Soma de dois Números DSC/CCT/UFCG ± scanf( "%d", &inteiro 1 ); ° Obtém um valor do usuário ² scanf rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ° usa a entrada padrão (comumente o teclado) Este comando scanf tem dois argumentos ² %d indica que o dado deve ser um inteiro decimal ² 13
DSC/CCT/UFCG 2. 3 Outro Programa Simples: Soma de dois Números ± scanf( "%d", &inteiro 1 ); rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ° Quando o programa está sendo executado, o usuário responde ao comando scanf digitando um número e, em seguida, pressionando a tecla enter (return) 14
DSC/CCT/UFCG 2. 3 Outro Programa Simples: Soma de dois Números ± Operador de atribuição = ° Atribui um valor para a variável ° É um operador binário (tem dois operandos) rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br soma = variável 1 + variável 2; soma recebe variável 1 + variável 2 ° Variável que recebe valor posicionada à esquerda ± printf("Soma eh igual a %dn", soma); ° ° Similar ao scanf ² %d significa que um decimal inteiro será impresso ² soma especifica qual inteiro será impresso Cálculos podem ser realizados dentro de um comando printf 15 printf("Soma e %dn", int 1 + int 2);
2. 4 Conceitos de Memória DSC/CCT/UFCG rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ± Variáveis ° Nomes de variáveis correspondem a posições (locações) a serem reservadas na memória ° Toda variável tem um nome, um tipo, um tamanho e um valor ° Toda vez que um valor é atribuído a uma variável (através de scanf, por exemplo), o valor anterior é substituído (e destruído) ° A leitura de variáveis da memória não as altera ± Uma representação visual inteiro 1 45 16
2. 5 DSC/CCT/UFCG Aritmética ± Cálculos Aritméticos ° Usa-se * para a multiplicação e / para a divisão ° Divisão inteira Truncamento do quociente rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ² 7 ° / 5 é avaliado como 1 Operador de módulo (%) Retorno do resto ² 7 % 5 é avaliado como 2 17
2. 5 DSC/CCT/UFCG Aritmética ± Precedência de Operadores ° Alguns operadores têm prioridade sobre outros durante a avaliação da expressão (e. g. , multiplicação antes da adição) rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ² Usa-se ° parênteses quando necessário Exemplo ² Encontre ³ Não a média de três variáveis a, b e c se usa a + b + c / 3 ³ Usa-se (a + b + c ) / 3 18
2. 5 DSC/CCT/UFCG Aritmética ± Operadores Aritméticos rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br Operação em C Adição Subtração Multiplicação Divisão Módulo Operador aritmético + * / % Expressão algébrica f+7 p-c bm x/y Expressão em C f+7 p-c b*m x/y r mod s r%s 19
2. 5 DSC/CCT/UFCG Aritmética ± Regras de Precedência de Operadores Operador(es) rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br () Operação(ões) Parênteses * / % Multiplicação, Divisão ou Resto + - Adição ou Subtração Ordem de Avaliação (Precedência) Avaliados primeiro. Se estiverem aninhados, a expressão encerrada no par mais interno é avaliada. Se houver vários pares no mesmo nível, a avaliação ocorre da esquerda para a direita. Avaliados em segundo lugar. Se houver vários operadores no mesmo nível, a avaliação ocorre da esquerda para a direita. Avaliados em terceiro lugar. Se houver vários operadores no mesmo nível, a avaliação ocorre da esquerda para a direita. 20
DSC/CCT/UFCG 2. 6 Tomada de Decisão: Operadores de Igualdade e Relacionais ± Comandos executáveis ° Realização de ações (cálculos, entrada/saída de dados) ° Tomada de decisões de impressão "passa" ou "falha" a partir de um teste de condição rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br ² Decisão ± Estrutura de controle if ° Versão simples neste ponto, maior detalhamento posteriormente Se a condição for verdadeira, então o corpo do comando if será executado ² Igual a 0 é falso, diferente de zero é verdadeiro ° O controle sempre prossegue após o comando if ° 21
DSC/CCT/UFCG 2. 6 Tomada de Decisão: Operadores de Igualdade e Relacionais ± Palavras-chave ° ° Palavras reservadas especiais para C Não podem ser usadas como identificadores ou nomes de variáveis rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br Palavras-chaves auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while 22
2. 6 Tomada de Decisão: Operadores de Igualdade e Relacionais DSC/CCT/UFCG Operador de Igualdade/ Relacional Algébrico Padrão Operador de Igualdade/ Relacional em C Exemplo de Condição em C Significado em C rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br Operadores de Igualdade = == x==y x é igual a y ≠ != x!=y x é diferente de y Operadores Relacionais < < x<y x é menor do que y > > x>y x é maior do que y ≤ <= x<=y x é menor ou igual a y ≥ >= x>=y x é maior ou igual a y 23
rangel@dsc. ufpb. br rangel@lmrs-semarh. ufpb. br DSC/CCT/UFCG 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2. 6 Tomada de Decisão: Operadores de Igualdade e Relacionais /* Usando comandos if, operadores relacionais, e operadores de igualdade */ #include <stdio. h> int main() { } Entre com dois inteiros, e eu lhe direi as relações que eles satisfazem: 7 12 satisfazem : 322 3 22é édiferentede de 7 12 3 22é émenor maiorque 712 3 22é émenor maiorou ouigualaa 712 int num 1, num 2; printf( "Entre com dois inteiros e eu lhe direin" ); printf( “a relação que eles satisfazem: " ); scanf( "%d%d", &num 1, &num 2 ); /* le dois inteiros */ if ( num 1 == num 2 ) printf( "%d é igual a %dn", num 1, num 2 ); if ( num 1 != num 2 ) printf( "%d é diferente de %dn", num 1, num 2 ); if ( num 1 < num 2 ) printf( "%d é menor que %dn", num 1, num 2 ); if ( num 1 > num 2 ) printf( "%d é maior que %dn", num 1, num 2 ); if ( num 1 <= num 2 ) printf( "%d é menor ou igual a %dn", num 1, num 2 ); if ( num 1 >= num 2 ) printf( "%d é maior ou igual a %dn", num 1, num 2 ); return 0; /* indica que o programa foi bem-sucedido */ 24
DSC/CCT/UFCG José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA rangel@dsc. ufpb. br DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
- Slides: 25