CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO
Aulas Práticas – 2013Aulas Práticas – 2013
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 uma podem ser considerados como uma linguagemlinguagem para descrição de para descrição de algoritmosalgoritmos
Algoritmo: Algoritmo: sequência finita e ordenadasequência finita e ordenada de de passospassos (comandos executáveis e não ambíguos), que levam (comandos executáveis e não ambíguos), que levam à aplicação de um à aplicação de um métodométodo para a execução de uma para a execução de uma tarefatarefa ou resolução de um ou resolução de um problemaproblema
Além de computadores, Além de computadores, outras entidadesoutras entidades podem podem executar algoritmos executar algoritmos
Muitas atividades rotineiras dos Muitas atividades rotineiras dos seres humanosseres humanos podem ser descritas por algoritmopodem ser descritas por algoritmoss
Uma vez escrito o Uma vez escrito o algoritmo algoritmo para computadores, para computadores, ele então é ele então é traduzidotraduzido para uma para uma linguagem de linguagem de programaçãoprogramação
Exemplo: raizes da equação do 2º grau AxExemplo: raizes da equação do 2º grau Ax2 2 + + Bx + C = 0Bx + C = 0
← : sinal de atribuição
Blocos dos fluxogramas:Blocos dos fluxogramas:
Círculo: início e final do algoritmo
Retângulo: comandos (atribuição ou chamada de subprograma) a serem executados sequencialmenteLosango: 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> - Usa scanf e printf#include <stdio.h> - Usa scanf e printf
#include <conio.h> - Usa o getch para #include <conio.h> - Usa o getch para encerrarencerrar
#include <math.h> - B#include <math.h> - B22 usa pow; raiz usa pow; raiz quadrada usa sqrtquadrada usa sqrt
void main () {void main () {
- - -- - -
}}
Tradução do fluxograma para a Linguagem C
Digitar para salvar e executar posteriormente
float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;
printf (“Digite os coeficientes de uma equacao de printf (“Digite os coeficientes de uma equacao de 2o grau: ”);2o grau: ”);
scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);
Delta = pow(B,2) – 4*A*C;Delta = pow(B,2) – 4*A*C;
if (Delta >= 0) {if (Delta >= 0) {
- - - - -- - - - -
}}
else {else {
- - - - -- - - - -
}}
printf (“\n\nDigite algo: ”);printf (“\n\nDigite algo: ”);
getch ();getch ();
No escopo de main
O fluxograma não precisa estar amigável, mas o programa sim
if (Delta >= 0) {if (Delta >= 0) {
X1 = (-B + sqrt(Delta)) / (2*A); X1 = (-B + sqrt(Delta)) / (2*A);
X2 = (-B - sqrt(Delta)) / (2*A); X2 = (-B - sqrt(Delta)) / (2*A);
printf (- - - - -);printf (- - - - -);
}}
else {else {
Real = -B / (2*A);Real = -B / (2*A);
Imag = sqrt(-Delta) / (2*A);Imag = sqrt(-Delta) / (2*A);
printf (- - - - -);printf (- - - - -);
}}
if (Delta >= 0) {- - - - -if (Delta >= 0) {- - - - -
printf (“X1 = ”, X1, “ e X2 = ”, X2);printf (“X1 = ”, X1, “ e X2 = ”, X2);
}}
else {- - - - -else {- - - - -
printf (“X1 = (”, Real, “)+i(”, Imag, “) e X2 = printf (“X1 = (”, Real, “)+i(”, Imag, “) e X2 = (”, Real, “)-i(”, (”, Real, “)-i(”, Imag, “)”);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 (“X1 = ”, X1, “ e X2 = ”, X2);
printf (“\nX1 = %g e X2 = %g”, X1, X2);printf (“\nX1 = %g e X2 = %g”, X1, X2);
printf (“X1 = (”, Real, “)+i(”, Imag, “) e X2 = (”, printf (“X1 = (”, Real, “)+i(”, Imag, “) e X2 = (”, Real, “)-i(”, Real, “)-i(”, Imag, “)”);Imag, “)”);
printf (“\nX1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, printf (“\nX1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, Imag, Real, Imag, Real, Imag);Real, Imag);
#include <stdio.h>#include <stdio.h>
#include <conio.h>#include <conio.h>
#include <math.h>#include <math.h>
void main () {void main () {
float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;
printf ("Digite os coeficientes de uma equacao de 2o grau: ");printf ("Digite os coeficientes de uma equacao de 2o grau: ");
scanf ("%f%f%f", &A, &B, &C);scanf ("%f%f%f", &A, &B, &C);
Delta = pow(B,2) - 4*A*C;Delta = pow(B,2) - 4*A*C;
if (Delta >= 0) {if (Delta >= 0) {
X1 = (-B + sqrt(Delta)) / (2*A);X1 = (-B + sqrt(Delta)) / (2*A);
X2 = (-B - sqrt(Delta)) / (2*A);X2 = (-B - sqrt(Delta)) / (2*A);
printf ("\nX1 = %g e X2 = %g", X1, X2);printf ("\nX1 = %g e X2 = %g", X1, X2);
}}
else {else {
Real = -B / (2*A);Real = -B / (2*A);
Imag = sqrt(-Delta) / (2*A);Imag = sqrt(-Delta) / (2*A);
printf ("\nX1 = (%g)+i(%g) e X2 = (%g)-i(%g)", Real, Imag, printf ("\nX1 = (%g)+i(%g) e X2 = (%g)-i(%g)", Real, Imag, Real, Imag);Real, Imag);
}}
printf ("\n\nDigite algo: "); getch ();printf ("\n\nDigite algo: "); getch ();
}}
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 Lab 4: Exercício 1 do Lab 4: fluxograma para inverter fluxograma para inverter os dígitos de um número: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: Exercício 1 do Lab 4: fluxograma para inverter fluxograma para inverter os dígitos de um número: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: Exercício 1 do Lab 4: fluxograma para inverter fluxograma para inverter os dígitos de um número: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: Exercício 2 do Lab 4: fluxograma para encontrar fluxograma para encontrar os números mágicos entre 1 e os números mágicos entre 1 e n (n n (n deve ser deve ser digitado e lidodigitado e lido))
Os números Os números 30253025 e e 998001998001 são chamados de são chamados de números mágicos, pois:números mágicos, pois:
Suas sequências de dígitos significativos podem Suas sequências de dígitos significativos podem ser seccionadas em duas partes de iguais ser seccionadas em duas partes de iguais números de dígitos:números de dígitos:
3025 → {30 3025 → {30 e e 25}25}
998001 → {998 998001 → {998 e e 001}001}
E além disso:E além disso:
(30 + 25 = 55)(30 + 25 = 55) e ( e (55*55 = 3025)55*55 = 3025)
(998 + 001 = 999) (998 + 001 = 999) e e (999*999 = 998001)(999*999 = 998001)
Exercício 2 do Lab 4: Exercício 2 do Lab 4: fluxograma para fluxograma para encontrar os números mágicos entre 1 e encontrar os números mágicos entre 1 e n (n n (n deve ser digitado e lidodeve 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: Exercício 2 do Lab 4: fluxograma para fluxograma para encontrar os números mágicos entre 1 e encontrar os números mágicos entre 1 e n (n n (n deve ser digitado e lidodeve 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