ces-10 introduÇÃo À computaÇÃo aulas práticas – 2014 capítulo iv fluxogramas
TRANSCRIPT
CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO
Aulas Práticas – 2014Aulas Práticas – 2014
Capítulo IV Capítulo IV
FluxogramasFluxogramas
Fluxogramas foram usados para descrever Fluxogramas foram usados para descrever comandos condicionais e repetitivos:comandos condicionais e repetitivos:
Comandos
Condição
V
F
do Comandoswhile (Condição);
Comando
s
Condição
V
Fwhile (Condição) Comandos
Comando
s 2
Condição
V F
Comand
os 1
Condição
V
F
Comand
os
if (Condição) Comandos
if (Condição) Comandos 1else Comandos 2
Dentro dos comandos:
variável = expressão;scanf (--------); printf (--------);Condicionais e repetitivos
FluxogramasFluxogramas podem ser considerados como podem ser considerados como uma uma linguagemlinguagem para descrição de para descrição de algoritmosalgoritmos
Uma vez escrito o Uma vez escrito o fluxogramafluxograma, ele então é , ele então é traduzidotraduzido para uma para uma linguagem de linguagem de programaçãoprogramação
Exemplo: Exemplo: fluxograma para inverter os dígitos de fluxograma para inverter os dígitos de um númeroum número
Método: ilustrado com a inversão do Método: ilustrado com a inversão do número 48728 para 82784número 48728 para 82784
48728 10
8 4872 10
2 487 10
7 48 10
8 4 10
4 0* 10 +
88 * 10 + 282 * 10 +
7827 * 10 + 88278 * 10 +
4 82784
0
48728numaux
inv
aux
inv
aux = num; inv = 0;while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10;}
Fluxograma:Fluxograma:
← : sinal de atribuição
aux = num; inv = 0;while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10;}
#include <stdio.h> - Usa #include <stdio.h> - Usa scanf scanf e e printfprintf
#include <stdlib.h> - Usa #include <stdlib.h> - Usa systemsystem para para encerrarencerrar
int main () {int main () {
- - -- - -
}}
Tradução do fluxograma para a Linguagem C
Copiar para salvar e executar posteriormente
int num, aux, inv; char c, int num, aux, inv; char c, lixolixo;;
printf ("INVERSAO DE NUMEROS:");printf ("INVERSAO DE NUMEROS:");
printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");
No escopo de main
if, if-else, while ou do-while?
Detalhes da manipulação do buffer do teclado não precisam aparecer no fluxograma
int num, aux, inv; char c, int num, aux, inv; char c, lixolixo;;
printf ("INVERSAO DE NUMEROS:");printf ("INVERSAO DE NUMEROS:");
printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");
do do
- - - - - - - - - - - - - - - -
while (- - - - -);while (- - - - -);
while (- - - - -) {while (- - - - -) {
- - - - -- - - - -
}}
printf ("\n\n");printf ("\n\n");
system ("pause");system ("pause");
return 0;return 0;
if, if-else, while ou do-while?
if, if-else, while ou do-while?
int num, aux, inv; char c, int num, aux, inv; char c, lixolixo;;
printf ("INVERSAO DE NUMEROS:");printf ("INVERSAO DE NUMEROS:");
printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");
do do
scanf ("%c%c", &c, &lixo); scanf ("%c%c", &c, &lixo);
while (c != 's' && c != 'n' && c != 'S' && c != 'N');while (c != 's' && c != 'n' && c != 'S' && c != 'N');
while (- - - - -) {while (- - - - -) {
- - - - -- - - - -
}}
printf ("\n\n");printf ("\n\n");
system ("pause");system ("pause");
return 0;return 0;
int num, aux, inv; char c, int num, aux, inv; char c, lixolixo;;
printf ("INVERSAO DE NUMEROS:");printf ("INVERSAO DE NUMEROS:");
printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");
do do
scanf ("%c%c", &c, &lixo); scanf ("%c%c", &c, &lixo);
while (c != 's' && c != 'n' && c != 'S' && c != 'N');while (c != 's' && c != 'n' && c != 'S' && c != 'N');
while (- - - - -) {while (- - - - -) {
- - - - -- - - - -
}}
printf ("\n\n");printf ("\n\n");
system ("pause");system ("pause");
return 0;return 0;
while (c == 's' || c == 'S') {while (c == 's' || c == 'S') {
printf ("\n\tDigite o numero: "); printf ("\n\tDigite o numero: ");
scanf("%d%c", &num, &lixo);scanf("%d%c", &num, &lixo);
aux = num; inv = 0;aux = num; inv = 0;
while (aux != 0) {while (aux != 0) {
inv = 10 * inv + aux % 10; aux = aux/10;inv = 10 * inv + aux % 10; aux = aux/10;
}}
- - - - -- - - - -
}}
Feito anteriormente
while (c == 's' || c == 'S') {while (c == 's' || c == 'S') {
printf ("\n\tDigite o numero: "); printf ("\n\tDigite o numero: ");
scanf("%d%c", &num, &lixo);scanf("%d%c", &num, &lixo);
aux = num; inv = 0;aux = num; inv = 0;
while (aux != 0) {while (aux != 0) {
inv = 10 * inv + aux % 10; aux = aux/10;inv = 10 * inv + aux % 10; aux = aux/10;
}}
- - - - -- - - - -
}}
while (c == 's' || c == 'S') {while (c == 's' || c == 'S') {
printf ("\n\tDigite o numero: "); printf ("\n\tDigite o numero: ");
scanf("%d%c", &num, &lixo);scanf("%d%c", &num, &lixo);
aux = num; inv = 0;aux = num; inv = 0;
while (aux != 0) {while (aux != 0) {
inv = 10 * inv + aux % 10; aux = aux/10;inv = 10 * inv + aux % 10; aux = aux/10;
}}
printf ("\n\t%d invertido torna-se %d", num, inv);printf ("\n\t%d invertido torna-se %d", num, inv);
printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");
dodo
scanf ("%c%c", &c, &lixo);scanf ("%c%c", &c, &lixo);
while (c != 's' && c != 'n' && c != 'S' && c != 'N');while (c != 's' && c != 'n' && c != 'S' && c != 'N');
}}
Repetição de código anterior
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int main () {int main () {
int num, aux, inv; char c, lixo;int num, aux, inv; char c, lixo; printf ("INVERSAO DE NUMEROS:");printf ("INVERSAO DE NUMEROS:"); printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo);do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N');while (c != 's' && c != 'n' && c != 'S' && c != 'N');
while (c == 's' || c == 'S') {while (c == 's' || c == 'S') { printf ("\n\tDigite o numero: "); scanf("%d%c", &num, printf ("\n\tDigite o numero: "); scanf("%d%c", &num,
&lixo);&lixo);aux = num; inv = 0;aux = num; inv = 0;while (aux != 0) {while (aux != 0) {
inv = 10 * inv + aux % 10; aux = aux/10;inv = 10 * inv + aux % 10; aux = aux/10;}}printf ("\n\t%d invertido torna-se %d", num, inv);printf ("\n\t%d invertido torna-se %d", num, inv);
printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): "); do scanf ("%c%c", &c, &lixo);do scanf ("%c%c", &c, &lixo); while (c != 's' && c != 'n' && c != 'S' && c != 'N');while (c != 's' && c != 'n' && c != 'S' && c != 'N');
}}printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;
}}
Programa final
Salvar e executar
Exercício:Exercício: Escrever e executar um Escrever e executar um programa programa em Cem C para o seguinte para o seguinte fluxogramafluxograma destinado destinado a calcular a a calcular a soma dos dígitos ímparessoma dos dígitos ímpares de de vários números positivos lidos:vários números positivos lidos:
Todas as variáveis são inteiras
O programa deve ser amigável
É necessário discernir qual o comando correspondente a cada losango:
if-sem-elseif-elsewhiledo-while
Exercício 1 do Exercício 1 do Lab 4: Lab 4: fluxograma fluxograma para encontrar para encontrar os divisores de os divisores de vários números vários números lidos: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 Exercício 1 do Lab 4: Lab 4: fluxograma fluxograma para encontrar para encontrar os divisores de os divisores de vários números vários números lidos: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 Exercício 2 do Lab 4: 4: fluxograma para fluxograma para encontrar os encontrar os MMC’s de vários MMC’s de vários pares de números pares de números lidoslidosEscrever 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