CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 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 Uma vez escrito o fluxograma, ele então é traduzido para uma linguagem de programação Exemplo: fluxograma para inverter os dígitos de um número num aux Método: ilustrado com a inversão do número 48728 48728 para 48728 10 82784 8 inv 0 4872 10 2 487 10 7 48 10 8 4 10 4 0 aux * 10 + 8 8 * 10 + 2 82 aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; } * 10 + 7 827 * 10 + 8 8278 inv * 10 + 4 82784 Fluxograma: aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; } ← : sinal de atribuição #include <stdio.h> #include <stdlib.h> int main () { --} Tradução do fluxograma para a Linguagem C Copiar para salvar e executar posteriormente - Usa scanf e printf Usa system para encerrar int num, aux, inv; char c, lixo; printf ("INVERSAO DE NUMEROS:"); printf ("\n\nInverter numero? (s/n): "); Detalhes da manipulação do buffer do teclado não precisam aparecer no fluxograma No escopo de main if, if-else, while ou do-while? int num, aux, inv; char c, lixo; printf ("INVERSAO DE NUMEROS:"); printf ("\n\nInverter numero? (s/n): "); do -------while (- - - - -); while (- - - - -) { ----} printf ("\n\n"); system ("pause"); return 0; if, if-else, while ou do-while? if, if-else, while ou do-while? int num, aux, inv; char c, lixo; printf ("INVERSAO DE NUMEROS:"); printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N'); while (- - - - -) { ----} printf ("\n\n"); system ("pause"); return 0; int num, aux, inv; char c, lixo; printf ("INVERSAO DE NUMEROS:"); printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N'); while (- - - - -) { ----} printf ("\n\n"); system ("pause"); return 0; while (c == 's' || c == 'S') { printf ("\n\tDigite o numero: "); scanf("%d%c", &num, &lixo); aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; } ----} Feito anteriormente while (c == 's' || c == 'S') { printf ("\n\tDigite o numero: "); scanf("%d%c", &num, &lixo); aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; } ----} while (c == 's' || c == 'S') { printf ("\n\tDigite o numero: "); scanf("%d%c", &num, &lixo); aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; } printf ("\n\t%d invertido torna-se %d", num, inv); printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N'); } Repetição de código anterior #include <stdio.h> #include <stdlib.h> Programa final int main () { int num, aux, inv; char c, lixo; printf ("INVERSAO DE NUMEROS:"); printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N'); while (c == 's' || c == 'S') { printf ("\n\tDigite o numero: "); scanf("%d%c", &num, &lixo); aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; } printf ("\n\t%d invertido torna-se %d", num, inv); printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N'); } Salvar e printf ("\n\n"); system ("pause"); return 0; } 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 encontrar os divisores de vários números lidos: Escrever e executar um programa para ele Cuidado para não confundir “=” com “==” 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 encontrar os divisores de vários números lidos: 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 MMC’s de vários pares de números lidos 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 No fluxograma não aparece o fechamento da tela Deixar a saída no vídeo com certa estética