Aula de revisão • ALGORITMO: – Seqüência finita de passos que levam à execução de uma tarefa – Claro e preciso. Ex. “somar dois números”: • Escrever o primeiro número no retângulo A • Escrever o segundo número no retângulo B • Somar o número do retângulo A com o número do retângulo B e escrever o resultado no retângulo C A B + 2 C = Variável – Representa uma posição na memória, onde pode ser armazenado um dado – Possui um nome e um valor – Durante a execução do algoritmo, pode ter seu valor alterado (seu valor pode variar) – Mudanças no valor das variáveis: • Por entrada de dados (“Ler N1”) • Por atribuição (“MEDIA SOMA/4”) 3 Atribuição • Atribui o valor da direita à variável da esquerda • O valor pode ser uma constante, uma variável ou uma expressão – MEDIA (N1+N2+N3+N4) / 4 – (Lê-se media recebe N1+...) • Neste caso, estamos atribuindo o resultado da fórmula à variável média, ou seja, a variável média está recebendo como valor o resultado da fórmula • Outros Exemplos: – a 3; – a x; – c ‘Luis’ 4 Operadores – Usados para incrementar, decrementar, comparar e avaliar dados, que são operações básicas em processamento de dados. – Tipos: • Aritméticos (+, -, *, /, ** ) – Resultados numéricos • Relacionais (>, <, >=, <=, =, <> ou #) – Resultados lógicos (V ou F) • Lógicos (e, ou, não) – Combinam resultados lógicos 5 Precedência dos operadores • Operadores relacionais são muito usados quando temos que tomar decisões nos algoritmos. Com eles fazemos testes, comparações, que resultam em valores lógicos (verdadeiro ou falso): Exemplo: tendo duas variáveis, A = 5 e B = 3: 6 Operadores Aritméticos Exemplos: X=1 + 7 * 2 ** 2 - 1 Y=3 * (1 – 2) + 4 * 2 MEDIA = (N1+N2+N3+N4) / 4 7 • Operadores lógicos combinam resultados lógicos, gerando novos valores lógicos (verdadeiro ou falso). A “tabela-verdade” abaixo mostra todos os valores possíveis de se obter com oper. lógicos: T = Verdad. F = Falso AND = E OR = OU NOT = NÃO 8 Exercícios Sabe-se que o uso incorreto da precedência de operadores ocasiona erros. Pensando nisso, determine o resultado das expressões a seguir (valores: A= 8, B = 5, C = -4, D = 2) a) b) c) d) 9 Delta = B*B – 4 * A * C Media = (A + B + C + D) / 4 Media = A + B + C + D / 4 Resultado = A + B – 10 * C Seleção de caminho (decisão) SE ... ENTÃO ... - Formato: • Se <condição> então <ações> • Significado: Se a <condição> resultar em verdadeiro, então executar as <ações>. Senão, simplesmente ignorar as <ações> e seguir para a próxima instrução no algoritmo. • Usada para decidir se um conjunto de ações opcionais deve ser executado ou não, dependendo do valor de algum dado ou de algum resultado que já tenha sido calculado no algoritmo. 11 SE ... ENTÃO ...SENÃO... - Formato: Se <condição> • • • • 12 então <ações 1> senão <ações 2> Significado: Se a <condição> resultar em verdadeiro, então executar <ações 1>e ignorar <ações 2>. Se a <condição> resultar em falso, então ignorar <ações 1> e executar <ações 2>. Usada para decidir entre duas alternativas de ações. Um dos dois conjuntos de ações será executado e o outro não, dependendo do valor de algum dado ou de algum resultado que já tenha sido calculado no algoritmo. O valor do dado ou do resultado anterior será testado na condição, determinando qual conjunto de ações será executado. Faça um algoritmo que leia um número e mostre uma mensagem indicando se este número é par ou ímpar, se é positivo ou negativo, ou se é o zero Ler N Se N=0 Então mostrar “o número é zero” Senao Se N%2 = 0 Então mostar “o número é par” Senão mostrar “o número é ímpar” Se N>0 Então mostrar “o número é positivo” senão mostrar “o número é negativo” Estruturas de repetição Enquanto...Repetir condição Enquanto (condição) repetir V <instruções> instrução Repetir...Enquanto instrução Repetir <instruções> enquanto (condição) condição Para...até...repetir Para <variável> = <inicio> até <fim> repetir <instruções> 14 V F F Exemplo Para... até...repetir • Ler 50 números fornecidos pelo usuário e calcular e exibir a média. Pseudocódigo: 1. Real: soma, num, media 2. Inteiro: cont 3. Soma = 0 <<< o acumulador precisa ter um valor inicial 4. Para cont =1 até 50 repetir 4.1 ler num 4.2 soma = soma + num 5. Media = soma / cont 6. Mostrar media 15 Exercício • Faça um algoritmo para mostrar os 30 primeiros números ímpares 16 Exemplo enquanto… repetir Faça um algoritmo para mostrar os 30 primeiros números ímpares 1. 2. 2.1 2.2 2.3 I=0 Enquanto I<30 repetir I=I+1 impar=I*2-1 mostrar impar Outra forma: 1. I=1 2. impar=1 3. Enquanto I<=30 repetir 3.1 se impar mod 2 = 1 3.1.1 então mostrar impar 3.1.2 I=I+1 3.2 impar=impar+1 17 (é um número ímpar) Exemplo repetir… enquanto Faça um algoritmo para mostrar os 30 primeiros números ímpares 1. 2. 2.1 2.2 2.3 18 I=0 repetir I=I+1 impar=I*2-1 mostrar impar enquanto I<30 Usando o Dev-C++ #include <stdio.h> #include <stdlib.h> main() { printf ("Alo mundo!"); system("PAUSE"); } 19 Declarações • Declaram as variáveis e seus tipos • Os nomes das variáveis devem conter apenas letras, dígitos e o símbolo _ e iniciar com letra ou _ • Os principais tipos são: int, float, double e char • Exemplos int n; int quantidade_valores; float x, y, somaValores; char sexo; C diferencia letras maiúsculas de minúsculas! int n, N; n é diferente de N! 20 Algoritmo Na Linguagem C... Real: n1, n2, n3, media #include <stdio.h> #include <stdlib.h> main() { float n1, n2, n3, media; system("PAUSE"); } 21 Comando de atribuição • Atribui o valor da direita à variável da esquerda • O valor pode ser: – uma constante, – uma variável ou – uma expressão • Exemplos x = 4; --> lemos: x recebe 4 y = x + 2; --> lemos: y recebe x mais 2 y = y + 4; --> lemos: y recebe y mais 4 valor = 2.5; sexo = 'F' --> constantes devem estar entre aspas simples 22 Saída de Dados #include <stdio.h> #include <stdlib.h> main() { int i, j; float x; i = 1; j = 2; x = 3.5; printf("%d", i); printf(" %d %f", j, x); system("PAUSE"); } 23 Operadores de Atribuição Operador Exemplo Comentário = x = y Atribui o valor de y a x += x += y Equivale a x = x + y -= x -= y Equivale a x = x – y *= x *= y Equivale a x = x * y /= x /= y Equivale a x = x / y %= x %= y Equivale a x = x % y 24 Funções Matemáticas Função Exemplo Comentário ceil ceil(x) Arredonda o número real para cima; ceil(3.2) é 4 cos cos(x) Cosseno de x (x em radianos) exp exp(x) e elevado à potencia x fabs fabs(x) Valor absoluto de x floor floor(x) Arredonda o número real para baixo; floor(3.2) é 3 log log(x) Logaritmo natural de x log10 log10(x) Logaritmo decimal de x pow pow(x, y) Calcula x elevado à potência y sin sin(x) Seno de x sqrt sqrt(x) Raiz quadrada de x tan tan(x) Tangente de x #include <math.h> 25 Exemplo 2) Construa um programa que tendo como entrada dois pontos quaisquer do plano P(x1,y1) e Q(x2,y2), imprima a distância entre eles. A fórmula da distância é: #include <stdio.h> #include <stdlib.h> #include <math.h> main() { float x1, y1, x2, y2; float distancia; printf ("\nDigite o valor de x1: "); scanf ("%f",&x1); printf ("\nDigite o valor de y1: "); scanf ("%f",&y1); printf ("\nDigite o valor de x2: "); scanf ("%f",&x2); printf ("\nDigite o valor de y2: "); scanf ("%f",&y2); distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2)); printf ("\nA distancia entre os pontos P1 e P2 e’ %.2f\n", distancia); system("PAUSE"); } 26 Operadores Relacionais em C Operador Exemplo Significado == x == y O conteúdo de x é igual ao de y? != x != y O conteúdo de x é diferente do de y? <= x <= y O conteúdo de x é menor ou igual ao de y? >= x >= y O conteúdo de x é maior ou igual ao de y? < x < y O conteúdo de x é menor que o de y? > x > y O conteúdo de x é maior que o de y? As expressões relacionais em C retornam : 1 se verdadeiro 0 se falso. 27 Operadores Lógicos • && (E lógico): retorna verdadeiro se ambos os operandos são verdadeiros e falso nos demais casos. Exemplo: if( a>2 && b<3). • || (OU lógico): retorna verdadeiro se pelo menos um dos operandos é verdadeiro, e falso se ambos são falsos. Exemplo: if( a>1 || b<2). • ! (NÃO lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa. Exemplo: if( !var ). 28 Operadores Lógicos Tabela E Tabela OU Tabela NÃO VeVV V ou V V Não V F VeFF V ou F V Não F V FeVF F ou V V FeFF F ou F F 29 Estrutura condicional simples • Comando if if (condição) comando; Exemplo em pseudo-código: SE a<menor ENTÃO menor=a; if (a<menor) menor=a; if (condição) { comando1; comando2; comando3; … } 30 if (a<menor) { menor=a; printf (“%d”, menor); } Estrutura condicional composta • Comando if...else if (condição) comando1; else comando2; Executa o comando1 se a condição for qualquer coisa diferente de zero (verdadeira), senão executa o comando2 Exemplo: if (condição) { comando1; comando2; } else { comando3; comando4; } 31 if (peso= =peso_ideal) printf (“Voce esta’ em forma!”); else printf (“Melhor fazer dieta!”); em pseudo-código: se (peso= =peso_ideal) entao exibir “Voce esta’ em forma!” senao exibir “Melhor fazer dieta!” Lembretes importantes no uso do comando if A condição deve estar sempre entre parênteses. É possível usar mais de um comando no if, após a condição ou após o else, mas então os comandos devem estar entre chaves (constituindo-se em um bloco). É possível aninhar ifs, e então cada else vai corresponder ao if imediatamente anterior, se não houver blocos delimitados por chaves alterando isso. Comando switch Uma variável é testada sucessivamente contra uma lista de constantes inteiras ou caracteres. Depois de encontrar uma coincidência, o comando ou o bloco de comandos é executado. Sintaxe: Switch(variável) { case constante1: sequência de comandos break; case constante2: sequência de comandos break; ….. default: sequência de comandos } O comando default é opcional Se nenhuma coincidencia for encontrada, o comando default será executado Exemplo de comando switch #include<stdio.h> #include<stdlib.h> main() { int numero; printf("digite o mes"); scanf ("%d",&numero); switch (numero){ case 1: printf ("Janeiro\n"); break; case 2: printf ("Fevereiro\n"); break; case 3: printf ("Marco\n"); break; case 4: printf ("Abril\n"); break; case 5: printf ("Maio\n"); break; case 6: printf ("Junho\n"); break; case 7: printf ("Julho\n"); break; case 8: printf ("Agosto\n"); break; case 9: printf ("Setembro\n"); break; case 10: printf ("Outubro\n"); break; case 11: printf ("Novembro\n"); break; case 12: printf ("Dezembro\n"); break; default: printf ("Mes invalido\n"); } system ("pause"); 34 } Estruturas de repetição em C 35 Estrutura de repetição: comando for • Comando for for (var=valor inicial; condição; incremento/decremento) comando; Exemplo: for (cont=3; cont<=11; cont++) printf (“%d”,cont); for (var=valor inicial; condição; incremento/decremento) { comando1; comando2; comando3; } 36 Estrutura de repetição • Comando while while (condição) comando; while (condição) { comando1; comando2; comando3; } 37 Estrutura de repetição Comando do...while do { comando; } while (condição); do { comando1; comando2; comando3; } while (condição); 38 Em pseudo-código: CONTADOR = 0 Repetir CONTADOR = CONTADOR + 1 exibir CONTADOR enquanto CONTADOR < 10 Exemplo: … cont=0; do { cont = cont + 1; printf("%d\n",cont); } while (cont < 10);