Prévia do material em texto
Introdução à linguagem C Programação I – EMB 5600 Objetivos da aula • Introduzir a linguagem de programação C como uma ferramenta para a aprendizagem de programação de computadores 2 Características • Linguagem extremamente popular • Uma linguagem de propósito geral • Uma linguagem de alto nível • Uma linguagem compilada • Uma linguagem com sintaxe bem definida 3 Codeblocks • Realizar download em http://www.codeblocks.org/downloads/26 – Optar pela opção com MingW 4 Codeblocks 5 Codeblocks Aula teórica 01 6 Colocar um nome para o projeto Codeblocks Aula teórica 01 7 Esqueleto programa em C 8 Esqueleto programa em C • No início do programa temos as declarações globais: – #include <nome_da_biblioteca> – Declara as bibliotecas necessárias – Biblioteca é um conjunto de funções (pedaços de códigos) já implementados e que podem ser utilizados pelo programador 9 Esqueleto programa em C • Todo programa C deve conter a função main() – Função responsável pelo início da execução do programa, e é dentro dele que colocamos os comandos que queremos que o programa execute – A função foi definida como inteira e por isso temos que inserir o return 0 para informar que o programa chegou corretamente ao final • As chaves definem os blocos • Os parênteses definem os parâmetros 10 Tipos de variáveis Tipo Tamanho em Bytes Faixa Mínima Especificador char 1 -127 a 127 c unsigned char 1 0 a 255 signed char 1 -127 a 127 int 4 -2.147.483.648 a 2.147.483.647 d ou i unsigned int 4 0 a 4.294.967.295 signed int 4 -2.147.483.648 a 2.147.483.647 short int 2 -32.768 a 32.767 unsigned short int 2 0 a 65.535 signed short int 2 -32.768 a 32.767 long int 4 -2.147.483.648 a 2.147.483.647 signed long int 4 -2.147.483.648 a 2.147.483.647 unsigned long int 4 0 a 4.294.967.295 float 4 Seis dígitos de precisão f double 8 Dez dígitos de precisão long double 10 Dez dígitos de precisão 11 Declaração de variáveis 12 Declaração de variáveis 13 Declaração de variáveis int a; //declarar a = 2; //atribuir //declarar e atribuir int a = 2; //declarar várias variáveis do mesmo tipo int a, b, c; int a=2, b, c; Atribuição sempre utiliza-se um sinal de igual! 14 Condições 15 • Condições são definidas para realizar testes, utilizam operadores matemáticos, relacionais e lógicos e em C são: Operadores relacionais 16 Operadores relacionais a = 1 // atribuição a == b // igualdade a > b // maior a < b // menor a >= b // maior ou igual a <= b // menor ou igual a != b // diferente 17 Operadores relacionais a = 1 // atribuição b = 5 // atribuição a == b // igualdade a > b // maior a < b // menor a >= b // maior ou igual a <= b // menor ou igual a != b // diferente 18 Operações aritméticas Operações: • Precedência de operadores 19 Operação Operador Exemplo Multiplicação * 3 * 2 6 Divisão inteira int / int 5 / 2 2 Divisão real Int / float 5 / 2.0 2.5 Resto de divisão (mod) % 5 % 2 1 Subtração - 5 – 2 3 Soma + 2 + 3 5 Operações lógicas Operações lógicas: 20 Operações lógicas 21 Operações lógicas 22 Entrada de dados • Comando scanf(especificador, &variável); • Exemplo: int a; scanf("%i", &a); 23 Saída de dados • Comando printf (mensagem, variáveis) • Exemplos: int a = 2; printf("%i\n", a); //mostra o valor printf("Valor: %i\n", a); //concatena com mensagem printf("Dobro: %i\n", a*2); //concatena e faz operação printf("Valor: %i - Dobro: %i\n", a, a*2); //vários valores 24 Definição de blocos • São utilizados como delimitadores de bloco { e } • Exemplo: int a=2, b=3; if (a == b) { printf(“%i”, b); } 25 Exemplo #include <stdio.h> int main() { int anos, valor_por_ano, bonus; printf("Anos de servico: "); scanf("%i", &anos); printf("Valor por ano: "); scanf("%i", &valor_por_ano); bonus = (anos - 1) * valor_por_ano; printf("Bonus de: %i", bonus); return 0; } 26 Compilação e Execução Compilar (construir) – CTRL F9 Construir e executar – F9 27 Compilação e Execução Executar CTRL F10 • Arquivo executável na pasta Debug 28 Compilando programas C no Linux • Para compilar um programa C no Linux utiliza-se, via linha de comando, o seguinte comando: gcc prog.c -o prog Onde: prog.c é o nome do arquivo que contém o código; -o prog indica o arquivo de saída do compilador — o arquivo executável que conterá o programa. • Para executar o programa digita-se: ./prog Entrada e saída de dados 30 Lendo variáveis do teclado • A função scanf() permite a leitura de variáveis do teclado de acordo com o formato especificado scanf(“tipos de saída”, lista de variáveis) • A função recebe dois parâmetros de entrada: – “tipos de saída”: conjunto de caracteres que especifica o formato dos dados a serem lidos – Lista de variáveis: conjunto de nomes de variáveis, separados por vírgula, em que cada nome de variável é precedido pelo operador & (variáveis passadas pelo endereço) 31 Lendo variáveis do teclado scanf(“tipos de saída”, lista de variáveis) 32 Lendo variáveis do teclado scanf(“tipos de saída”, lista de variáveis) 33 Lendo variáveis do teclado int getchar(void): permite ler um único caractere do teclado (lê o código ASCII do caractere) #include <stdio.h> #include <stdlib.h> int main() { char c; c = getchar(); printf("caractere: %c\n", c); printf("codigo ASCII: %d\n", c); system("pause"); return 0; } 34 Escrevendo variáveis na tela • A função printf() permite a escrita formatada na saída de vídeo (tela) printf(“tipos de saída”, lista de variáveis) • A função recebe dois parâmetros de entrada: – “tipos de saída”: conjunto de caracteres que especifica o formato dos dados a serem escritos e/ou o texto a ser escrito – Lista de variáveis: conjunto de nomes de variáveis, separados por vírgula, que serão escritos 35 Escrevendo variáveis na tela printf(“tipos de saída”, lista de variáveis) 36 Escrevendo variáveis na tela 37 Escrevendo variáveis na tela 38 • É possível adicionar texto antes, depois ou entre dois tipos de saída Escrevendo variáveis na tela • A função printf() também permite escrever apenas mensagens de texto simples na tela printf(“texto) • As aspas duplas são obrigatórias 39 Escrevendo variáveis do teclado int putchar(int caractere): permite escrever um único caractere do teclado • A função recebe um inteiro e converte em caractere #include <stdio.h> #include <stdlib.h> int main() { char c = 'a'; int x = 65; putchar(c); putchar('\n'); putchar(x); putchar('\n'); system("pause"); return 0; } 40 Estruturas de Seleção em C 41 Estrutura de Seleção • Condicional simples (apenas bloco verdade): if (<condição 1>) { <comandos> }42 Estrutura de Seleção • Condicional com bloco verdade e bloco falso: if (<condição 1>) { <comandos> } else { <comandos> } 43 Estrutura de Seleção • Condicionais aninhados: if (<condição 1>) { <comandos> } else { if (<condição 2>) { <comandos> } else { if (<condição 3>): <comandos> } else { <comandos> } } 44 Estrutura de Seleção • Condicionais aninhados: 45 if (<condição 1>) { <comandos> } else if (<condição 2>) { <comandos> } else if (<condição 3>): <comandos> } else { <comandos> } Estrutura de seleção switch • Outra opção para condicionamento aninhado: switch (<condição>) { case <valor1_da_condição>: <comandos> break; case <valor2_da_condição>: <comandos> break; default: <comandos> } 46 Estruturas de seleção aninhadas 47 Problemas resolvidos em C 1 - Faça um algoritmo para calcular o volume de uma esfera de raio R, em que R é um dado fornecido pelo usuário. O volume de uma esfera é dado por V = 4/3 π R3. 48 #include <stdio.h> int main() { float raio, volume, pi = 3.14; printf("Digite o raio: "); scanf("%f", &raio); volume = (4.0 / 3) * pi * (raio * raio * raio); printf("Volume = %f", volume); return 0; } Problemas resolvidos em C 2 - Escreva um algoritmo que leia o ano de nascimento de uma pessoa, calcule e mostre sua idade e, também, verifique e mostre se ela já tem idade para votar (16 anos ou mais) e para conseguir a Carteira de Habilitação (18 anos ou mais). 49 (continuação) if (idade >= 18) { printf("Pode votar e dirigir"); } else if (idade >= 16) { printf("Pode votar"); } else { printf("Nao pode votar e nem dirigir"); } return 0; } #include <stdio.h> int main() { int ano, ano_atual, idade; printf("Digite ano de nascimento: "); scanf("%i", &ano); printf("Digite ano atual: "); scanf("%i", &ano_atual); idade = ano_atual - ano; printf("Idade: %i \n", idade); Problemas resolvidos em C 3 - Escreva um programa que solicita ao usuário dois números inteiros e a operação matemática que deseja realizar (soma, subtração ou multiplicação). 50 (continuação) switch(ch){ case '+': z = x+y; break; case '-': z = x-y; break; case '*': z = x*y; break; default: z = 0; } printf("Resultado = %d\n", z); return 0; } #include <stdio.h> int main() { int x,y,z; char ch; printf("Digite operacao matematica (+,-,*): "); scanf("%c", &ch); printf("Digite 2 numeros: "); scanf("%d %d", &x, &y); Estruturas de Repetição em C 51 WHILE • Repetição com teste no início (enquanto): while (<teste>) { <comandos> } • Os comandos serão executados enquanto o teste retornar True, ou seja, 1 52 Repetição no C com while 53 DO WHILE • Repetição com teste no fim (mas não é o repita): do { <comandos> } while (<teste>); • Os comandos serão executados enquanto o teste retornar True, ou seja, 1 54 do ... while Aula teórica 01 55 do ... while 56 #include <stdio.h> #include <stdlib.h> int main(){ int i= 0; do{ printf("valor %d\n", i); i++; }while (i<10); system("pause"); return 0; } • Operadores simplificados são muito utilizados na linguagem C, e os principais são: Operadores de incremento e decremetno 57 Retorna o valor da variável após a operação Retorna o valor da variável antes da operação Operadores de incremento e decremento 58 #include <stdio.h> int main() { int x = 10; ++x; printf("x = %d \n", x); return 0; } #include <stdio.h> int main() { int x = 10; x++; printf("x = %d \n", x); return 0; } • Os dois programas retornam x=11 • Comandos de incremento utilizados sozinhos Operadores de incremento e decremento 59 #include <stdio.h> int main() { int y,x = 10; y = ++x; printf("x = %d \n", x); printf("y = %d \n", y); return 0; } #include <stdio.h> int main() { int y,x = 10; y = x++; printf("x = %d \n", x); printf("y = %d \n", y); return 0; } x=11 e y=11 pois realizou atribuição após a operação x= x + 1 y = x x=11 e y=10 pois realizou atribuição antes da operação y = x x= x + 1 Operadores simplificados 60 Operadores simplificados 61 FOR 62 Não é possível utilizar uma estrutura mais enxuta? Repetição com for 63 • O for automatiza uma estrutura de repetição típica Repetição no C com for • Repetição com variável de controle (for): for (<inicialização>; <condição>; <alteração>) { <comandos> } • <inicialização> recebe a criação/inicialização de uma variável que controlará a repetição; • <condição> é um teste relacional que fará o bloco repetir se a condição for verdadeira; • <alteração> é a modificação da variável que controla a repetição (normalmente um incremento). 64 Repetição com for 65 Exemplo #include <stdio.h> int main() { int a; for (a = 1; a <= 4; a++) { printf("%i \n", a); } return 0; } Repetição no C com for 66 Repetição no C com for Aula teórica 01 67 Qual estrutura utilizar? 68 Qual estrutura utilizar? 69 Uso do break 70 Uso do break 71 Uso do break Exemplo #include <stdio.h> int main() { int a = 1, b = 4; while (a <= 10) { printf("%i", a); a = a + 1; if (a == b) { printf(" Break"); break; } printf("....\n"); } return 0; } 72 Utilizado para gerar uma nova linha Uso do break 73 Uso do break 74 Exemplo: Elabore um algoritmo que efetue a soma de todos os números ímpares que são múltiplos de 3 e que se encontram no conjunto dos números de 1 até 500 (inclusive). Exemplo: repetição no C 75 //Código em C #include <stdio.h> int main() { int si = 0, i; // inicializa si for (i = 1; i < 501; i++) { // analisa 500 números if (i%2 == 1) { // testa se é par if (i%3 == 0) { // testa se é múltiplo de 3 si += i // acumula a soma } } } printf("Soma = %i", si); // apresenta o resultado return 0; } Exemplo: uso do break Programa que lê dois números inteiros a e b digitados pelo usuário e imprime todos os inteiros entre eles. Se a= 5 o laço termina pelo break. #include <stdio.h> #include <stdlib.h> int main(){ int a,b; printf("Digite o valor de a: "); scanf("%d",&a); printf("Digite o valor de b: "); scanf("%d",&b); while (a <= b){ a= a+1; if (a == 5) break; printf("%d \n", a); } system("pause"); return 0; } 76 Referências desta aula BACKES, A. Linguagem C completa e descomplicada. São Paulo: Campus, 2013. PINHEIRO, F. A. C. Elementosde programação em C. Porto Alegre: Bookman, 2012. (disponível no Minha Biblioteca) http://olimpiada.ic.unicamp.br/extras/cursoC/ 77