ALGORITMOS
Rodrigo Kiyoshi Saito / rodrigok@anchieta.br
Teste lógico no início do laço
programa Laco_1A
var
X, R : inteiro
CONT : inteiro
inicio
CONT  1
enquanto (CONT <=5) faça
leia X
R  X * 3
escreva R
CONT  CONT + 1
fim_enquanto
fim
#include <stdio.h>
void main ()
{
int X, R;
int CONT;
CONT = 1;
while (CONT < 5) {
printf("nDigite o valor de X: ");
scanf("%d", &X);
R = X * 3;
printf("nValor de R: %d", R);
CONT++;
}
}
Teste lógico no início do laço
programa Laco_1B
var
X, R : inteiro
RESP : caractere
inicio
RESP  “SIM”
enquanto (RESP = “SIM”)
faça
leia X
R  X * 3
escreva R
escreva “Deseja
continuar?”
leia RESP
fim_enquanto
fim
#include <stdio.h>
void main ()
{
int X, R;
char RESP;
RESP = 'S';
while (RESP == 'S') {
printf("nDigite o valor de X: ");
scanf("%d", &X);
R = X * 3;
printf("nValor de R: %d", R);
printf("nDeseja continuar? (S/N) ");
scanf("%s", &RESP);
}
}
Teste lógico no fim do laço
programa Laco_2A
var
X, R : inteiro
CONT : inteiro
inicio
CONT  1
repita
leia X
R  X * 3
escreva R
CONT  CONT + 1
até_que (CONT < 5)
fim
#include <stdio.h>
void main ()
{
int X, R;
int CONT;
CONT = 1;
do {
printf("nDigite o valor de X: ");
scanf("%d", &X);
R = X * 3;
printf("nValor de R: %d", R);
CONT++;
} while (CONT < 5);
}
Teste lógico no fim do laço
programa Laco_2B
var
X, R : inteiro
RESP : caractere
inicio
repita
leia X
R  X * 3
escreva R
escreva “Deseja continuar?”
leia RESP
até_que (RESP == “SIM”)
fim
#include <stdio.h>
void main ()
{
int X, R;
char RESP;
do {
printf("nDigite o valor de X: ");
scanf("%d", &X);
R = X * 3;
printf("nValor de R: %d", R);
printf("nDeseja continuar? (S/N) ");
fflush(stdin);
scanf("%s", &RESP);
//printf("nResp: %s", RESP);
} while (RESP == 'S');
}
Repetição da Variável
de Controle
programa Laco_2C
var
X, R : inteiro
CONT : inteiro
inicio
para CONT de 1 até 5 passo 1 faça
leia X
R  X * 3
escreva R
fim_para
fim
#include <stdio.h>
void main ()
{
int X, R, i;
int CONT;
for (i=1; i<=5; i++)
{
printf("nDigite o valor de X: ");
scanf("%d", &X);
R = X * 3;
printf("nValor de R: %d", R);
}
}
EXERCÍCIOS
1 – Faça um programa que leia 3 números inteiros e mostre qual o maior número digitado.
(Opção recomendada: utilizar o recurso de laço “para”)
programa Exercicio01
var
X : inteiro
NUM : inteiro
MAX : inteiro
inicio
MAX  -2147483648
para X de 1 até 3 passo 1 faça
leia NUM
se (NUM > MAX) então
MAX  NUM
fim_se
fim_para
escreva “Maior número digitado”, MAX
fim
2 – Faça um programa que
calcule a média aritmética
de números inteiros, até
que o usuário decida sair
do programa. Obs: não
existe um número fixo
vezes que o laço se
repetirá. O usuário decide
quando não quer mais
calcular a média. (Opção
recomendada: utilizar os
laços “repita” ou
“enquanto”).
programa Exercicio02
var
NUM : inteiro
ACUMULADO : inteiro
CONT : inteiro
TOTAL : real
RESP : caractere
inicio
ACUMULADO  0
CONT  0
repita
leia NUM
ACUMULADO  ACUMULADO +
NUM
CONT  CONT + 1
escreva “Deseja continuar?”
leia RESP
até_que (RESP < > “sim”)
TOTAL  ACUMULADO / CONT
escreva “Média aritmética é:”,
TOTAL
fim
Resolução com português
estruturado com a instrução
enquanto...faça
Exemplo de problema: “Elaborar um programa
que efetue o calculo fatorial de um número”.
Desta forma, tem-se que 5! = 5 * 4 * 3 * 2 * 1 ou
5! = 1 * 2 * 3 * 4 * 5, equivalente a 120.
Fatorial é o produto dos números naturais desde
1 até o inteiro n. Sendo assim, o cálculo de um
fatorial é conseguido pela multiplicação
sucessiva do número de termos.
Resolução com português
estruturado com a instrução
enquanto...faça
programa FATORIAL_A
var
CONTADOR: inteiro
FATORIAL: inteiro
inicio
FATORIAL  1
CONTADOR  1
enquanto (contador <= 5) faça
FATORIAL  FATORIAL * CONTADOR
CONTADOR  CONTADOR + 1
fim_enquanto
escreva “Fatorial de 5 é =”, FATORIAL
fim
Resolução com português
estruturado com a instrução
enquanto...faça
Desta forma serão executados os outros cálculos
até que a condição se torne falsa e seja então
apresentado o valor 120. Veja em seguida, a
tabela com os valores das variáveis antes e
durante a execução do laço.
Resolução com português
estruturado com a instrução
enquanto...faça
Contador Fatorial Fatorial  Fatorial *
Contador
Comentários
1 1 1 Valor inicial das variáveis e da
fatorial
2 1 2 Cálculo da fatorial com o
contador em 2
3 2 6 Cálculo da fatorial com o
contador em 3
4 6 24 Cálculo da fatorial com o
contador em 4
5 24 120 Cálculo da fatorial com o
contador em 5
Resolução com português
estruturado com a instrução
repita...até_que
programa FATORIAL_B
var
CONTADOR : inteiro
FATORIAL : inteiro
inicio
FATORIAL  1
CONTADOR  1
repita
FATORIAL  FATORIAL * CONTADOR
CONTADOR  CONTADOR + 1
até_que (CONTADOR > 5)
escreva “Fatorial de 5 é: ”, FATORIAL
fim
Resolução com português
estruturado com a instrução
enquanto...faça
programa FATORIAL_C
var
CONTADOR : inteiro
FATORIAL : inteiro
inicio
FATORIAL  1
para CONTADOR de 1 até 5 passo 1 faça
FATORIAL  FATORIAL * CONTADOR
fim_para
escreva “Fatorial de 5 é:”, FATORIAL
fim
Resolução com português
estruturado com a instrução
enquanto...faça
Os algoritmos apresentados até agora
solucionam apenas o fatorial de 5. Seria melhor
possuir a solução aberta ara que um programa
calcule a fatorial de um número qualquer, e que
pudesse calcular outras fatoriais até que o
usuário não mais desejasse utilizar o programa.
Resolução
com
português
estrutura
do com a
instrução
enquanto.
..faça
programa FATORORIAL_D
var
CONTADOR : inteiro
FATORIAL : inteiro
RESP : caractere
N : inteiro
inicio
RESP  “SIM”
enquanto (RESP = “SIM”) faça
FATORIAL  1
escreva “Fatorial de um número: ”
leia N
para CONTADOR de 1 até N passo 1 faça
FATORIAL  FATORIAL * CONTADOR
fim_para
escreva “Fatorial de ”, N, “é ”, FATORIAL
escreva “Deseja continuar?”
leia RESP
fim_enquanto
fim
Operadores DIV e MOD
DIV – Com o operador DIV, pegamos somente o
resultado inteiro da divisão.
Exemplos de utilização:
RESULTADO  10 DIV 2 (inteiro da divisão = 5)
RESULTADO  5 DIV 2 (inteiro da divisão = 2)
Operadores DIV e MOD
MOD - Com o operador MOD, pegamos somente
o resultado do resto da divisão.
Exemplo de utilização:
RESULTADO  10 MOD 2 (resto da divisão = 0)
RESULTADO  5 MOD 2 (resto da divisão = 1)
Exemplos de portugues
estruturado
programa verificar_ParImpar
var
NUMERO : inteiro
RESULT : inteiro
inicio
escreva “Digite um numero inteiro”
leia NUMERO
RESULT  NUMERO MOD 2
se (RESULT = 0) então
escreva “Numero é par”
senão
escreva “Numero é impar”
fim_se
fim
EXERCÍCIOS
Desenvolva o português estruturado dos
problemas abaixo que apresentar os
quadrados dos números inteiros de 15 a
200;
Exercício 1 - Enunciado
Apresentar os resultados de uma tabuada de um
número qualquer, a qual deve ser impressa no
seguinte formato: (Considerando como por
exemplo o fornecimento do número 2:)
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 x 5 = 10
(...)
2 X 10 = 20
Exercício 2 - Enunciado
Exercício 3 - Enunciado
Apresentar o total da soma dos cem primeiros
números inteiros (1 + 2 + 3 + 4 + 5 ... + 97 + 98 +
99 + 100
Exercício 4 - Enunciado
Elaborar um programa que apresente no final o
somatório dos valores pares existentes na faixa
de 1 até 500. (Dica: para saber se o número é
par ou impar, utilize o operador MOD e caso
tenha resto diferente de 0, é impar, senão é um
número par)
Exercício 5 - Enunciado
Apresentar todos os valores numéricos
inteiros impares situados na faixa de 0 a
20. Para verificar se o número é impar,
dentro da malha fazer a verificação lógica
desta condição com a instrução “se”.

Algoritmos - Aula 13 A - Lacos em C

  • 1.
    ALGORITMOS Rodrigo Kiyoshi Saito/ rodrigok@anchieta.br
  • 2.
    Teste lógico noinício do laço programa Laco_1A var X, R : inteiro CONT : inteiro inicio CONT  1 enquanto (CONT <=5) faça leia X R  X * 3 escreva R CONT  CONT + 1 fim_enquanto fim #include <stdio.h> void main () { int X, R; int CONT; CONT = 1; while (CONT < 5) { printf("nDigite o valor de X: "); scanf("%d", &X); R = X * 3; printf("nValor de R: %d", R); CONT++; } }
  • 3.
    Teste lógico noinício do laço programa Laco_1B var X, R : inteiro RESP : caractere inicio RESP  “SIM” enquanto (RESP = “SIM”) faça leia X R  X * 3 escreva R escreva “Deseja continuar?” leia RESP fim_enquanto fim #include <stdio.h> void main () { int X, R; char RESP; RESP = 'S'; while (RESP == 'S') { printf("nDigite o valor de X: "); scanf("%d", &X); R = X * 3; printf("nValor de R: %d", R); printf("nDeseja continuar? (S/N) "); scanf("%s", &RESP); } }
  • 4.
    Teste lógico nofim do laço programa Laco_2A var X, R : inteiro CONT : inteiro inicio CONT  1 repita leia X R  X * 3 escreva R CONT  CONT + 1 até_que (CONT < 5) fim #include <stdio.h> void main () { int X, R; int CONT; CONT = 1; do { printf("nDigite o valor de X: "); scanf("%d", &X); R = X * 3; printf("nValor de R: %d", R); CONT++; } while (CONT < 5); }
  • 5.
    Teste lógico nofim do laço programa Laco_2B var X, R : inteiro RESP : caractere inicio repita leia X R  X * 3 escreva R escreva “Deseja continuar?” leia RESP até_que (RESP == “SIM”) fim #include <stdio.h> void main () { int X, R; char RESP; do { printf("nDigite o valor de X: "); scanf("%d", &X); R = X * 3; printf("nValor de R: %d", R); printf("nDeseja continuar? (S/N) "); fflush(stdin); scanf("%s", &RESP); //printf("nResp: %s", RESP); } while (RESP == 'S'); }
  • 6.
    Repetição da Variável deControle programa Laco_2C var X, R : inteiro CONT : inteiro inicio para CONT de 1 até 5 passo 1 faça leia X R  X * 3 escreva R fim_para fim #include <stdio.h> void main () { int X, R, i; int CONT; for (i=1; i<=5; i++) { printf("nDigite o valor de X: "); scanf("%d", &X); R = X * 3; printf("nValor de R: %d", R); } }
  • 7.
  • 8.
    1 – Façaum programa que leia 3 números inteiros e mostre qual o maior número digitado. (Opção recomendada: utilizar o recurso de laço “para”) programa Exercicio01 var X : inteiro NUM : inteiro MAX : inteiro inicio MAX  -2147483648 para X de 1 até 3 passo 1 faça leia NUM se (NUM > MAX) então MAX  NUM fim_se fim_para escreva “Maior número digitado”, MAX fim
  • 9.
    2 – Façaum programa que calcule a média aritmética de números inteiros, até que o usuário decida sair do programa. Obs: não existe um número fixo vezes que o laço se repetirá. O usuário decide quando não quer mais calcular a média. (Opção recomendada: utilizar os laços “repita” ou “enquanto”). programa Exercicio02 var NUM : inteiro ACUMULADO : inteiro CONT : inteiro TOTAL : real RESP : caractere inicio ACUMULADO  0 CONT  0 repita leia NUM ACUMULADO  ACUMULADO + NUM CONT  CONT + 1 escreva “Deseja continuar?” leia RESP até_que (RESP < > “sim”) TOTAL  ACUMULADO / CONT escreva “Média aritmética é:”, TOTAL fim
  • 10.
    Resolução com português estruturadocom a instrução enquanto...faça Exemplo de problema: “Elaborar um programa que efetue o calculo fatorial de um número”. Desta forma, tem-se que 5! = 5 * 4 * 3 * 2 * 1 ou 5! = 1 * 2 * 3 * 4 * 5, equivalente a 120. Fatorial é o produto dos números naturais desde 1 até o inteiro n. Sendo assim, o cálculo de um fatorial é conseguido pela multiplicação sucessiva do número de termos.
  • 11.
    Resolução com português estruturadocom a instrução enquanto...faça programa FATORIAL_A var CONTADOR: inteiro FATORIAL: inteiro inicio FATORIAL  1 CONTADOR  1 enquanto (contador <= 5) faça FATORIAL  FATORIAL * CONTADOR CONTADOR  CONTADOR + 1 fim_enquanto escreva “Fatorial de 5 é =”, FATORIAL fim
  • 12.
    Resolução com português estruturadocom a instrução enquanto...faça Desta forma serão executados os outros cálculos até que a condição se torne falsa e seja então apresentado o valor 120. Veja em seguida, a tabela com os valores das variáveis antes e durante a execução do laço.
  • 13.
    Resolução com português estruturadocom a instrução enquanto...faça Contador Fatorial Fatorial  Fatorial * Contador Comentários 1 1 1 Valor inicial das variáveis e da fatorial 2 1 2 Cálculo da fatorial com o contador em 2 3 2 6 Cálculo da fatorial com o contador em 3 4 6 24 Cálculo da fatorial com o contador em 4 5 24 120 Cálculo da fatorial com o contador em 5
  • 14.
    Resolução com português estruturadocom a instrução repita...até_que programa FATORIAL_B var CONTADOR : inteiro FATORIAL : inteiro inicio FATORIAL  1 CONTADOR  1 repita FATORIAL  FATORIAL * CONTADOR CONTADOR  CONTADOR + 1 até_que (CONTADOR > 5) escreva “Fatorial de 5 é: ”, FATORIAL fim
  • 15.
    Resolução com português estruturadocom a instrução enquanto...faça programa FATORIAL_C var CONTADOR : inteiro FATORIAL : inteiro inicio FATORIAL  1 para CONTADOR de 1 até 5 passo 1 faça FATORIAL  FATORIAL * CONTADOR fim_para escreva “Fatorial de 5 é:”, FATORIAL fim
  • 16.
    Resolução com português estruturadocom a instrução enquanto...faça Os algoritmos apresentados até agora solucionam apenas o fatorial de 5. Seria melhor possuir a solução aberta ara que um programa calcule a fatorial de um número qualquer, e que pudesse calcular outras fatoriais até que o usuário não mais desejasse utilizar o programa.
  • 17.
    Resolução com português estrutura do com a instrução enquanto. ..faça programaFATORORIAL_D var CONTADOR : inteiro FATORIAL : inteiro RESP : caractere N : inteiro inicio RESP  “SIM” enquanto (RESP = “SIM”) faça FATORIAL  1 escreva “Fatorial de um número: ” leia N para CONTADOR de 1 até N passo 1 faça FATORIAL  FATORIAL * CONTADOR fim_para escreva “Fatorial de ”, N, “é ”, FATORIAL escreva “Deseja continuar?” leia RESP fim_enquanto fim
  • 18.
    Operadores DIV eMOD DIV – Com o operador DIV, pegamos somente o resultado inteiro da divisão. Exemplos de utilização: RESULTADO  10 DIV 2 (inteiro da divisão = 5) RESULTADO  5 DIV 2 (inteiro da divisão = 2)
  • 19.
    Operadores DIV eMOD MOD - Com o operador MOD, pegamos somente o resultado do resto da divisão. Exemplo de utilização: RESULTADO  10 MOD 2 (resto da divisão = 0) RESULTADO  5 MOD 2 (resto da divisão = 1)
  • 20.
    Exemplos de portugues estruturado programaverificar_ParImpar var NUMERO : inteiro RESULT : inteiro inicio escreva “Digite um numero inteiro” leia NUMERO RESULT  NUMERO MOD 2 se (RESULT = 0) então escreva “Numero é par” senão escreva “Numero é impar” fim_se fim
  • 21.
  • 22.
    Desenvolva o portuguêsestruturado dos problemas abaixo que apresentar os quadrados dos números inteiros de 15 a 200; Exercício 1 - Enunciado
  • 23.
    Apresentar os resultadosde uma tabuada de um número qualquer, a qual deve ser impressa no seguinte formato: (Considerando como por exemplo o fornecimento do número 2:) 2 X 1 = 2 2 X 2 = 4 2 X 3 = 6 2 X 4 = 8 2 x 5 = 10 (...) 2 X 10 = 20 Exercício 2 - Enunciado
  • 24.
    Exercício 3 -Enunciado Apresentar o total da soma dos cem primeiros números inteiros (1 + 2 + 3 + 4 + 5 ... + 97 + 98 + 99 + 100
  • 25.
    Exercício 4 -Enunciado Elaborar um programa que apresente no final o somatório dos valores pares existentes na faixa de 1 até 500. (Dica: para saber se o número é par ou impar, utilize o operador MOD e caso tenha resto diferente de 0, é impar, senão é um número par)
  • 26.
    Exercício 5 -Enunciado Apresentar todos os valores numéricos inteiros impares situados na faixa de 0 a 20. Para verificar se o número é impar, dentro da malha fazer a verificação lógica desta condição com a instrução “se”.