Capítulo 2: Introdução à Linguagem C - PDF Download grátis
Lúcia Barreto Caires
1 Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, utilizaremos a linguagem C. 1
2 Estrutura de um Programa C Comando do Pré-Processador (inclusão de bibl. aux.): #include <nome> Definição de tipo (constantes): #define nome valor Funções auxiliares (cap. 3 para INF1005) Função Principal (início da execução de um programa): int main(void) Comentários em qualquer trecho de um código C: /*isto é um comentário */ Comando do Pré-Processador (inclusão de bibl. aux.): #include <nome> stdio.h: funções de entrada de saída printf,scanf etc. math.h: funções matemáticas cos,sen, sqrt, pow etc. string.h: funções para manipulação de string strcmp,strlen etc. 2
3 Definição de Tipos: a diretiva #define A diretiva #define associa um identificador a um valor. Formato: #define nome_macro valor É usual definir o nome das macros com letras maiúsculas Exemplos: #define UM 1 #define MSG Digite S para sair #define PI Funções Auxiliares (capítulo 3) As funções têm a seguinte estrutura: Um programa C não pode ter duas funções com o mesmo nome. tipo_de_retorno nome_da_funcao (parametros) { variaveis locais } instrucoes em C (comandos = expressoes e operadores) Se uma função não tem uma lista de parâmetros colocamos void ou apenas o (). Se uma função não tem retorno colocamos void. Consiste no bloco de comandos que compõem a função. 3
4 Função Principal Início da execução de um programa C: Para Programação 1: int main (void) { /* corpo da função: declarações de variáveis locais, chamadas a funções auxiliares, cálculos de expressões, leitura e escrita de dados etc. } */ Obs: /* delimita um comentário em C */ Variável Variável é um espaço reservado na memória do computador para armazenar um tipo de dado. Devem receber nomes para poderem ser referenciadas e modificadas quando necessário. Toda variável tem: um nome (identificador) um tipo de dado um valor Restrição para nomes: não é permitido começar o nome com um algarismo (0-9), alguns caracteres não são válidos (*, -, /, +,...), e palavras reservadas não podem ser utilizadas (main, if, while,...). 4
5 Variável É necessário informar o nome e o tipo dos nossos dados: o compilador precisa saber o tipo para alocar (reservar) o espaço de memória pré-definido para aquele tipo (quantidade de bytes). o nome será usado para representar o espaço que está sendo alocado. Exemplo: int main (void) { float cels, fahr; } Tipos de Variáveis na Linguagem C Tipo Tamanho Menor valor Maior valor char 1 byte unsigned char 1 byte short int (short) 2 bytes unsigned short int 2 bytes int (*) 4 bytes long int (long) 4 bytes unsigned long int 4 bytes float 4 bytes double 8 bytes
6 Tipos de Variáveis em Programação 1 int float double char Exemplos de tipos de dados Constantes inteiras: reais (float ou double): caracteres: c? 1 string: banana a 6
7 Variáveis Declaração de variável: variáveis devem ser explicitamente declaradas variáveis podem ser declaradas em conjunto int a; /* declara uma variável do tipo int */ int b; /* declara uma variável do tipo int */ float c; /* declara uma variável do tipo float */ int d, e; /* declara duas variáveis do tipo int */ Operadores e Expressões Expressão = combinação de variáveis, constantes e operadores que, quando avaliados, resulta em um valor. Exemplo: float cels = 10; float fahr = 1.8 * cels + 32; Sinal de atribuição variavel = expressao, onde a expressão pode ser formada por várias operações 7
8 Operadores Aritméticos Soma: + Subtração: - Multiplicação: * Divisão: / Resto da divisão: % (operado apenas entre inteiros) No capítulo 4, veremos ainda os operadores lógicos e relacionais. Expressões Aritméticas Exemplos: numero1 + numero2 salario + bonus * 0.2 / 12 (salario + bonus * 0.2) / 12 Lembre-se que uma expressão é avaliada de acordo com a prioridade dos operadores. 8
9 Atribuição Utilizada para armazenar um valor constante ou o resultado da avaliação de uma expressão em uma variável. Exemplos: int numero1, numero2, soma, total; total = 100; numero1 = 10; numero2 = numero1 % 3; soma = numero1 + numero2; total = total + 1; Operadores e Expressões: continuação Operadores de atribuição : ( =, +=, -=, *=, /=, %= ) C trata uma atribuição como uma expressão» a ordem é da esquerda para a direita C oferece uma notação compacta para atribuições em que a mesma variável aparece dos dois lados var op= expr é equivalente a var = var op (expr) i += 2; é equivalente a i = i + 2; x *= y + 1; é equivalente a x = x * (y +1); 9
10 Operadores e Expressões: continuação Operadores de incremento e decremento ( ++, -- ): incrementa ou decrementa de uma unidade o valor de uma variável» os operadores não se aplicam a expressões» o incremento pode ser antes ou depois da variável ser utilizada n++ incrementa n de uma unidade, depois de ser usado ++n incrementa n de uma unidade, antes de ser usado n = 5; x = n++; /* x recebe 5; n é incrementada para 6 */ x = ++n; /* n é incrementada para 6; x recebe 6 */ a = 3; b = a++ * 2; / b termina com o valor 6 e a com o valor 4 */ Funções de Entrada e Saída em C Função printf : possibilita a saída de valores segundo um determinado formato printf (formato, lista de constantes/variáveis/expressões...); printf ("%d %g", 33, 5.3); tem como resultado a impressão da linha: printf ("Inteiro = %d Real = %g", 33, 5.3); com saída: Inteiro = 33 Real =
11 Funções de Entrada e Saída em C Especificação de formato: %c especifica um char %d especifica um int %u especifica um unsigned int %f especifica um double (ou float) %e especifica um double (ou float) no formato científico %g especifica um double (ou float) no formato mais apropriado (%f ou %e) %s especifica uma cadeia de caracteres Funções de Entrada e Saída em C Especificação de tamanho de campo: %4d %7.2f
12 Funções de Entrada e Saída em C Impressão de texto: printf("curso de Programação 1\n"); exibe na tela a mensagem: Curso de Programação 1 Funções de Entrada e Saída em C Função scanf : captura valores fornecidos via teclado scanf (formato, lista de endereços das variáveis...); int n; scanf ("%d", &n); valor inteiro digitado pelo usuário é armazenado na variável n 12
13 Funções de Entrada e Saída em C Especificação de formato: %c especifica um char %d especifica um int %u especifica um unsigned int %f,%e,%g especificam um float %lf, %le, %lg especificam um double %s especifica uma cadeia de caracteres Funções de Entrada e Saída em C Função scanf (cont.): caracteres diferentes dos especificadores no formato servem para cercar a entrada espaço em branco dentro do formato faz com que sejam "pulados" eventuais brancos da entrada %d, %f, %e e %g automaticamente pulam os brancos que precederem os valores numéricos a serem capturados scanf ("%d:%d", &h, &m); valores (inteiros) fornecidos devem ser separados pelo caractere dois pontos (:) 13
14 Exemplo 1 em Linguagem C #include <stdio.h> int main (void) { int numero1, numero2, diferenca; } printf ( Digite o primeiro número inteiro: ); scanf ( %d, &numero1); printf ( Digite o segundo número inteiro: ); scanf ( %d, &numero2); diferenca = numero1 - numero2; printf ( Resultado da diferenca = %d, diferenca); return 0; Exemplo 1 execução passo-a-passo Chinês numero1 numero2 diferenca saída???????????? 14
15 Exemplo 1 execução passo-a-passo Chinês printf ( Digite o primeiro número inteiro: ); numero1 numero2 diferenca saída???????????? Digite o primeiro... Exemplo 1 execução passo-a-passo Chinês scanf ( %d, &numero1); numero1 numero2 diferenca saída???????????? Digite o primeiro ???????? 15
16 Exemplo 1 execução passo-a-passo Chinês printf ( Digite o segundo número inteiro: ); numero1 numero2 diferenca saída???????????? Digite o primeiro ???????? Digite o segundo... Exemplo 1 execução passo-a-passo Chinês scanf ( %d, &numero2); numero1 numero2 diferenca saída???????????? Digite o primeiro ???????? Digite o segundo ???? 16
17 Exemplo 1 execução passo-a-passo Chinês diferenca = numero1 - numero2; numero1 numero2 diferenca saída???????????? Digite o primeiro ???????? Digite o segundo Exemplo 1 execução passo-a-passo Chinês printf ( Resultado da diferenca = %d, diferenca ); numero1 numero2 diferenca saída???????????? Digite o primeiro ???????? Digite o segundo Resultado... é
18 Programando em C - Exemplo Indentação e comentários MUITO importantes para o entendimento do código /* Programa para converter temperatura de Celsius em Fahrenheit */ #include <stdio.h> int main (void) { float cels; /* armazena temperatura em oc */ float fahr; /* armazena temperatura em of */ /* captura valor fornecido via teclado */ printf( Digite a temperatura em Celsius: ); scanf( %f, &cels); fahr = 1.8 * cels + 32; /* faz a conversão */ } /* exibe resultado na tela */ printf( Temperatura em Fahrenheit: %f, fahr); return 0; Ponto Interessante: Aritmética Inteira Qual o erro na expressao abaixo???? V = 4/3 * PI * pow(raio, 3); O erro não está na expressão e sim no resultado. Como 4 e 3 são valores inteiros, o resultado dessa divisão é um número inteiro e portanto seria 1, e não Outro exemplo: 5/2 = 2 Como está sendo armazenado em um float, o valor dessa divisão em c é
19 Aritmética Inteira A linguagem C oferece um operador aritmético adicional para operandos inteiros chamado operador módulo (%) resto da divisão entre dois números inteiros. int a; a = 8 % 3; /* a recebe o valor 2 */ Aritmética Inteira Escreva um programa em C que leia um valor em segundos e o imprima no formato em horas:minutos:segundos. Por exemplo, se sua entrada for 4322 segundos a saída deve ser 1:12:2. 19
20 Aritmética Inteira #include <stdio.h> int main ( void) { int tot; /* numero total de segundos */ int hor, min, seg; /* numero total de horas, minutos e segundos */ printf( Entre com o numero de segundos transcorridos: ); scanf( %d, &tot); hor = tot / 3600; min = (tot % 3600) / 60; seg = tot % 60; Quando essa truncagem é útil? printf( Tempo transcorrido: ); printf( horas = %d, hor); printf( minutos = %d, min); printf( segundos = %d, seg); return 0; } Chinês: 4322s = 1h 12min 2s Mais um Ponto Interessante: Aritmética Mista Se em uma expressão aritmética os operandos forem de tipos diferentes, a operação é feita na representação do tipo de maior expressividade: double > float > int: 4.0 / 3 = / 3.0 = Se temos duas variáveis inteiras e queremos que a divisão seja feita em representação real, podemos usar um operador de conversão de tipo: No caso, o (float) converte a em 5.0 e depois divide por 2. Note que o valor da variável continua sendo do tipo inteiro. O valor de a não é alterado. 20
21 Aritmética Mista Outros casos em que a conversão de tipo também é útil: O compilador iria gerar uma mensagem de advertência (warning), para evitar: 21