CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IV Fluxogramas Fluxogramas foram usados para descrever comandos condicionais e repetitivos: if (Condição) Comandos V if (Condição) Comandos 1 else Comandos 2 Comandos F Condição V Condição F Comandos 2 1 Comandos do while (Condição) Comandos F Condição V Comandos Comandos while (Condição); Comandos Dentro dos comandos: variável = expressão; scanf (--------); printf (--------); Condicionais e repetitivos V Condição F Fluxogramas podem ser considerados como uma linguagem para descrição de algoritmos Algoritmo: sequência finita e ordenada de passos (comandos executáveis e não ambíguos), que levam à aplicação de um método para a execução de uma tarefa ou resolução de um problema Além de computadores, outras entidades podem executar algoritmos Muitas atividades rotineiras dos seres humanos podem ser descritas por algoritmos Uma vez escrito o algoritmo para computadores, ele então é traduzido para uma linguagem de programação Exemplo: raizes da equação do 2º grau Ax2 + Bx + C = 0 ← : sinal de atribuição Blocos dos fluxogramas: Círculo: início e final do algoritmo Retângulo: comandos (atribuição ou chamada de subprograma) a serem executados sequencialmente Losango: decisão por um de dois caminhos alternativos Cartão: entrada de dados Folha de papel: saída de resultados Elipse: decisão por um de vários caminhos alternativos #include <stdio.h> #include <conio.h> #include <math.h> void main () { --} Tradução do fluxograma para a Linguagem C Digitar para salvar e executar posteriormente - Usa scanf e printf Usa o getch para encerrar B2 usa pow; raiz quadrada usa sqrt float A, B, C, X1, X2, Delta, Real, Imag; printf (“Digite os coeficientes de uma equacao de 2o grau: ”); scanf (“%f%f%f”, &A, &B, &C); O fluxograma não Delta = pow(B,2) – 4*A*C; precisa estar amigável, if (Delta >= 0) { mas o programa sim ----} else { ----} printf (“\n\nDigite algo: ”); getch (); No escopo de main if (Delta >= 0) { X1 = (-B + sqrt(Delta)) / (2*A); X2 = (-B - sqrt(Delta)) / (2*A); printf (- - - - -); } else { Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A); printf (- - - - -); } if (Delta >= 0) {- - - - printf (“X1 = ”, X1, “ e X2 = ”, X2); } else {- - - - printf (“X1 = (”, Real, “)+i(”, Imag, “) e X2 = (”, Real, “)-i(”, Imag, “)”); } As chamadas de printf contém os elementos a serem escritos Não estão escritas em C printf (“X1 = ”, X1, “ e X2 = ”, X2); printf (“\nX1 = %g e X2 = %g”, X1, X2); printf (“X1 = (”, Real, “)+i(”, Imag, “) e X2 = (”, Real, “)-i(”, Imag, “)”); printf (“\nX1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, Imag, Real, Imag); #include <stdio.h> #include <conio.h> Programa final #include <math.h> void main () { float A, B, C, X1, X2, Delta, Real, Imag; printf ("Digite os coeficientes de uma equacao de 2o grau: "); scanf ("%f%f%f", &A, &B, &C); Delta = pow(B,2) - 4*A*C; if (Delta >= 0) { X1 = (-B + sqrt(Delta)) / (2*A); X2 = (-B - sqrt(Delta)) / (2*A); printf ("\nX1 = %g e X2 = %g", X1, X2); } else { Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A); printf ("\nX1 = (%g)+i(%g) e X2 = (%g)-i(%g)", Real, Imag, Real, Imag); } printf ("\n\nDigite algo: "); getch (); Salvar e executar } Exercício: Escrever e executar um programa em C para o seguinte fluxograma destinado a calcular a soma dos dígitos ímpares de vários números positivos lidos: O programa deve ser amigável É necessário discernir qual o comando correspondente a cada losango: if-sem-else if-else while do-while Todas as variáveis são inteiras Exercício 1 do Lab 4: fluxograma para inverter os dígitos de um número: Escrever e executar um programa para ele A leitura de c pode ser feita com getche Cuidado para não confundir “=” com “==” Exercício 1 do Lab 4: fluxograma para inverter os dígitos de um número: Escolher o comando correto para cada estrutura com losango Esse comando não deve desobedecer ao fluxograma, mesmo que o programa funcione corretamente Exercício 1 do Lab 4: fluxograma para inverter os dígitos de um número: No fluxograma não aparece o fechamento da tela Deixar a saída no vídeo com certa estética Exercício 2 do Lab 4: fluxograma para encontrar os números mágicos entre 1 e n (n deve ser digitado e lido) Os números 3025 e 998001 são chamados de números mágicos, pois: Suas sequências de dígitos significativos podem ser seccionadas em duas partes de iguais números de dígitos: 3025 → {30 e 25} 998001 → {998 e 001} E além disso: (30 + 25 = 55) e (55*55 = 3025) (998 + 001 = 999) e (999*999 = 998001) Exercício 2 do Lab 4: fluxograma para encontrar os números mágicos entre 1 e n (n deve ser digitado e lido) div ← 10 j/2 pow (10, j/2) é um valor real Não pode ser atribuído à variável inteira div Usar: (int) pow (10, j/2) que faz a conversão para inteiro Exercício 2 do Lab 4: fluxograma para encontrar os números mágicos entre 1 e n (n deve ser digitado e lido) Escrever e executar um programa para este fluxograma Valem os mesmos requisitos anteriores para escolher entre os comandos if-sem-else, if-else, while e do-while