CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e...

131
CCO 016 / COM 110 Fundamentos de Fundamentos de Programação Programação Universidade Federal de Itajubá Prof. Roberto Affonso da Costa Junior

Transcript of CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e...

Page 1: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

CCO 016 / COM 110Fundamentos de Fundamentos de

ProgramaçãoProgramação

Universidade Federal de Itajubá

Prof. Roberto Affonso da Costa Junior

Page 2: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

AULA 07AULA 07

– Comandos Sequenciais (se – senao)– Linguagem de Programação C (if – else)– Estrutura Condicionais (caso)– Linguagem de Programação C (switch)

Page 3: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Estrutura CondicionaisEstrutura Condicionais➢ Até agora estávamos trabalhando com algoritmos puramente sequenciais, ou seja, todas as instruções eram executadas seguindo a ordem do algoritmo (normalmente, de cima para baixo). A partir de agora começamos a estudar estruturas de seleção.

➢ Uma estrutura de seleção, como o próprio nome já diz, permite que determinadas instruções sejam executadas ou não, dependendo do resultado de uma condição (teste), ou seja, o algoritmo vai tomar decisão de um processo (leitura, processo e impressão) a ser realizado.

Page 4: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

4

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Isto é, são testados parâmetros e, dependendo de seus valores, tomamos um caminho ou outro. As condições que são testadas num Algoritmo são do tipo lógica (booleano), portanto podem ter somente dois resultados: Verdadeiro ou Falso. Assim, a seleção de ações pode seguir, no máximo, duas alternativas: uma se a condição for verdadeira e outra se a condição testada for falsa. Existem seleções simples, compostas e múltiplas.

Page 5: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Operadores LógicosOperadores Lógicos

✔ Utilizados na confecção das condições

✔ São eles: Portugol Linguagem C/C++– Maior que > >– Menor que < <– Maior ou igual a >= >=– Menor ou igual a <= <=– Diferente de <> !=– Igual a = ==

Page 6: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Operadores RelacionaisOperadores Relacionais

✔ Complementando a confecção das condições

✔ São eles: Portugol Linguagem C/C++– E e &&– OU ou ||– não não !

Page 7: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Operadores RelacionaisOperadores Relacionais

A Não A

V F

F V

A B A ou B

V V V

V F V

F V V

F F F

A B A e B

V V V

V F F

F V F

F F F

Page 8: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

TreinamentoTreinamento1) Com base nas tabelas de decisão, determine os resultados lógicos das expressões mencionadas, assinalando se são verdadeiras ou falsas. Considere para as respostas os seguintes valores: X = 1, A = 3, B = 5, C = 8 e D = 7.

a) ! (X <= 3) resp: ( )

b) ((X != 1) && ! (B > A)) resp: ( )

c) (!(B < 0) && (D > 8)) resp: ( )

d) (!(X > -2) || (C < 9)) resp: ( )

e) ((X > A) || (A > C)) resp: ( )

f) (B >= 5) resp: ( )

g) ((C < 1) && (B >= A)) resp: ( )

Page 9: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

9

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Seleções Simples: A seleção mais simples existente é quando o único bloco

de comando (leitura, processo e/ou escreva) a ser realizado é aquele que a situação da <condição> é verdadeira. Não existe a opção falsa, ou não é necessário realizar nada neste tipo de opção. É o que chamamos de opção “default”.

Page 10: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

10

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Portugol: se <condição> então bloco de comandos fim-se

Fluxograma:

<condições>F

V

Bloco de comandos

Page 11: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

● Na Linguagem C:

if ( condição )

{

Blocos de comando;

}

Page 12: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

12

EXEMPLO 1:EXEMPLO 1:Leia um número e diga se ele é “maior que 10”.Leia um número e diga se ele é “maior que 10”.

inicio {declaração de variáveis} real N {comandos de entrada de dados} imprima (“Entre com N: “) leia (N) {processo e saída de dados} se N > 10 então

imprima (N,” maior que 10) fim-sefim

INICIO

N

N, “ Maior que 10”

FIM

N > 10F

V

Page 13: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

13

#include <stdio.h>int main(){ float N; //comandos de entrada de dados printf (“Entre com um número: “); scanf (“%f”,&N); //processo e saída de dados if (N > 10) {

printf (“%.1f maior que 10”,N); } return 0;}

Linguagem CLinguagem C

Page 14: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

14

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Seleções Completa:

A seleção completa é dada por se...então...senão...fim-se onde se a <condição> for verdadeira é realizado o então e dentro dele os blocos de comandos 1, se for falsa, é realizado o senão e dentro dele os blocos de comandos 2.

Page 15: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

15

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Portugol:se <condição> então bloco de comandos 1senão bloco de comandos 2fim-se

Fluxograma:

<condições>F

V

Bloco de comandos 1

Bloco de comandos 2

Page 16: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

16

if ( condição ){ bloco de comandos 1;} else { bloco de comandos 2;}

Linguagem CLinguagem C

Page 17: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

17

EXEMPLO 2:EXEMPLO 2:Leia um número natural e diga se ele é par ou impar.Leia um número natural e diga se ele é par ou impar.

inicio {declaração de variáveis} inteiro N Imprima (“Entre com N: “) leia (N) se resto (N,2) = 0 então imprima (N, “ é par”) senão imprima (N,” é impar) fim-sefim

INICIO

FIM

N

N, “ é par”

resto (N, 2) = 0F

V

N, “ é impar”

Page 18: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

18

#include <stdio.h>int main(){ int N; printf (“Entre com um número inteiro: “); scanf (“%d”,&N); if ((N % 2) == 0) { printf (“%d é par.”, N); } else { printf ( “%d é impar.”,N); } return 0;}

Linguagem CLinguagem C

Page 19: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

TreinamentoTreinamento2) Determine o resultado lógicos das expressões mencionadas, assinalando se

são verdadeiras ou falsas. Considere para as respostas os seguintes valores:X = 3 A = 1 B = 5 C = 8 D = 0

a) (! (X > 3)) b) ((X > 3) || !(B > D))c) (! (D < 0) && (C > 5)) d) (!(X > 3) || (C < 7))

3) Indique a saída dos trechos de programa em português estruturado, mostrado abaixo. Para as saídas considere os seguintes valores:

A = 0 B = 9 C = 3 D = 2a) if (!(D > 3)) { X = (A + B) * D; } else { X = (A - B) / C; } printf (“X = %d\n”, X);

b) if ((A > B) || (C <= 2)) {

X = (A + 2) * (B - 2); } else { X = (A + B) / D * (C + D); } printf (“X = %d\n”, X);

Page 20: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

20

Operador de Seleção Operador de Seleção CompletaCompleta

• O operador de seleção completa é dados por

EXP1 ? EXP2 : EXP3;

onde EXP1 é uma expressão condicional, e EXP2 e EXP3 é um único bloco de comando para o verdadeiro e falso, respectivamente.

Page 21: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

21

Exemplo de Operador de Exemplo de Operador de Seleção CompletaSeleção Completa

• Faça um programa que leia um número natural e diga se ele é par ou impar.

Para N = 8:8 é par.

Para N = 7:7 é impar.

#include <stdio.h>int main() {

int N;scanf ("%d",&N);((N % 2) == 0) ? printf ( "%d é par.\n", N): printf ( "%d é impar.\n",N);return 0;

}

Page 22: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

22

Exemplo de Operador de Exemplo de Operador de Seleção CompletaSeleção Completa

• Faça um programa que leia um número natural e se for par mostre 0 e se for impar mostre 1.

Para N = 8:0

Para N = 7:1

#include <stdio.h>using namespace std;int main() {

int N, X;scanf ("%d",&N);X = ((N % 2) == 0) ? 0 : 1;printf("%d\n", X);return 0;

}

Page 23: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

23

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Seleções Composta:

A estrutura de seleções composta também é designada como seleção aninhada e é utilizada quando estivermos fazendo várias comparações (testes) sempre com a mesma variável. Esta estrutura é chamada de aninhada porque na sua representação fica uma seleção dentro de outra seleção.

Page 24: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

24

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Portugol:se <condição 1> então se <condição 2> então bloco de comandos 11 senão bloco de comandos 12 fim-se bloco de comandos 1

senão se <condição 3> então bloco de comandos 21 senão bloco de comandos 22 fim-se bloco de comandos 2fim-se

Page 25: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

25

<condições 1>F

V

Bloco de comandos 1 Bloco de comandos 2

Fluxograma:

<condições 2> <condições 3>

V V

F F

Bloco de comandos 11

Bloco de comandos 12

Bloco de comandos 21

Bloco de comandos 22

Page 26: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

26

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Linguagem C:if ( condição 1 ) { if ( condição 2 ) { bloco de comandos 11; } else { bloco de comandos 12; } bloco de comandos 1;

} else { if ( condição 3 ) { bloco de comandos 21; } else { bloco de comandos 22; } bloco de comandos 2;}

Page 27: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

27

EXEMPLO 3:EXEMPLO 3:Montar um programa que leia Montar um programa que leia três medidas e determine se três medidas e determine se essas medidas formam um essas medidas formam um

triângulo, se formam que tipo triângulo, se formam que tipo de triângulo ele é (isósceles, de triângulo ele é (isósceles,

escaleno ou eqüilátero).escaleno ou eqüilátero).

{declaração de variáveis}real A, B, Cinicio leia (A, B, C) se (A < B + C) e (B < A + C) e (C < A + B) então se (A = B) e (B = C) então imprima(“Triângulo Eqüilátero”) senão se (A = B) ou (A = C) ou (B = C) então imprima (“Triângulo Isósceles”) senão imprima (“Triângulo escaleno”) fim-se fim-se senão imprima (“As medidas não formam um triângulo”) fim-sefim

Page 28: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

28

EXEMPLO 3:EXEMPLO 3:Montar um programa que leia Montar um programa que leia três medidas e determine se três medidas e determine se essas medidas formam um essas medidas formam um

triângulo, se formam que tipo triângulo, se formam que tipo de triângulo ele é (isósceles, de triângulo ele é (isósceles,

escaleno ou equilátero).escaleno ou equilátero).

#include <stdio.h>int main() { float A, B, C; scanf (“%f %f %f”,&A,&B,&C); if ((A < B + C) && (B < A + C) && (C < A + B)) { if ((A == B) && (B == C)) { printf(“Triângulo Equilátero”); } else { if ((A == B) || (A == C) || (B == C)) { printf (“Triângulo Isósceles”); } else { printf (“Triângulo escaleno”); } } } else { printf (“As medidas não formam um triângulo”); } return 0;}

Page 29: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

TreinamentoTreinamento4) Indique a saída dos trechos de programa do pedaço de fluxograma a seguir. Considerando os seguintes de valores inteiros: A = 2, B = 3, C = 5, D = 9.

X

nao (D > 5)F

V

X ← (A + B) * D X ← (A - B) / C

Page 30: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

TreinamentoTreinamento5) Indique a saída dos trechos de programa do pedaço de fluxograma a seguir. Considerando os seguintes de valores inteiros: A = 4, B = 1, C = 0, D = 10.

X

(A > 2) .e.(B < 7)

F

V

X ← (A + 2) * (B – 2) X ← (A + B) div D * (C + D)

Page 31: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 4Exemplo 4

● Calcular a seguinte expressão:

VL=5A+ B

(A−B)+2A

B+ 3A

Page 32: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ALGORITMO

objetivo: Calcular uma expressão aritmética

1) Definir variáveis

inteiros A, B, num1, num2, den1, den2, VL

inicio

2) Entrada dos dados

imprima ( “entre com dois valores “ )

leia ( A, B )

3) Calculo do numerador

num1 ← 5 A + B

Page 33: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

4) Calculo do numerador do denominador

num2 ← 2 A

5) Calculo do denominador simples

den 1 ← B + 3A

6) calculo da expressao

se ( den1 = 0 )

então

imprima ( “expressão não calculada “ )

imprima ( “denominador nulo” )

senão

Page 34: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

senão

6.1) calculo do denominador geral

den2 ← ( A – B ) + num2 / den1

6.2) calculo da expressão

se ( den2 = 0 )

então

imprima ( “expressão não calculada “ )

imprima ( “denominador nulo” )

senão

VL ← num1 / den2

imprima ( “ valor da expressao = “, VL )

fim_se

fim_se

Page 35: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

7) mostrando os dados de entrada

imprima ( “A = “, A )

imprima ( “B = “, B )

fim

Page 36: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

PORTUGOL

inicio

{Declaração das variáveis}

inteiros A, B, num1, num2, den1, den2, VL

{Entrada de Dados}

imprima ( “entre com dois valores “ )

leia ( A, B )

{Calculo da expressão}

num1 ← 5 A + B

num2 ← 2 A

den1 ← B + 3A

Page 37: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

{Verificando o denominador 1}

se ( den1 = 0 )

então

imprima ( “expressão não calculada “ )

imprima ( “denominador nulo” )

senão

{Calculando o denominador 2}

den2 ← ( A – B ) + num2 / den1

Page 38: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

{Verificando o denominador 2}

se ( den2 = 0 )

então

imprima ( “expressão não calculada “ )

imprima ( “denominador nulo” )

senão {Calculando e imprimindo o Valor da operação} VL ← num1 / den2

imprima ( “ valor da expressao = “, VL )

fim_se

fim_se imprima ( “A = “, A ) imprima ( “B = “, B )

fim

Page 39: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Linguagem C

#include <stdio.h>

int main ()

{

int A, B, num1, num2, den1, den2, VL;

printf ( “entre com dois valores: “ );

scanf ( “%d %d”,&A,&B );

num1 = 5 * A + B;

num2 = 2 * A;

den1 = B + 3 * A;

Page 40: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( den1 == 0 )

{

printf ( “expressão não calculada “ );

printf ( “denominador nulo” );

} else {

den2 = ( A – B ) + num2 / den1;

if ( den2 == 0 )

{

printf ( “expressão não calculada “ );

printf ( “denominador nulo” );

} else {

Page 41: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

VL = num1 / den2 ;

printf ( “ valor da expressao = %d“, VL );

}

}

printf ( “A = %d“, A );

printf ( “B = %d“, B );

}

Page 42: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 5Exemplo 5● São dados os resultados de uma prova que consta

de 5 questões, cujas respostas podem ser uma das 3 alternativas A, B ou C;

● São dados também as respostas de um aluno para esta prova.

● Desenvolva um algoritmo para calcular o desempenho deste aluno na prova segundo o seguinte critério:– Acerto de 3 ou mais questões – conceito A– Acerto de 1 ou 2 questões – conceito B– Acerto de nenhuma questão - conceito R

Page 43: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ALGORITMO / PORTUGOLobjetivo: calcular o conceito de um aluno frente ao gabarito

de uma prova

inicio

1) definição das variáveis

caracter gab1, gab2, gab3, gab4, gab5

caracter resp1, resp2, resp3, resp4, resp5

caracter conceito

inteiro n_questoes

2) entrada dos dados

2.1 ) dados do gabarito

imprima ( “entre com as 5 alternativas do gabarito” )

leia ( gab1, gab2, gab3, gab4, gab5 )

Page 44: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

2.2 ) dados do aluno imprima ( “entre com as 5 resposta do aluno” ) leia ( resp1, resp2, resp3, resp4, resp5 )

3) inicializando variáveis n_questoes ← 0

4) calculando quantas questões estão certasSe ( gab1 = resp1 ) então n_questoes ← n_questoes + 1fim_seSe ( gab2 = resp2 ) então n_questoes ← n_questoes + 1

fim_se

Page 45: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Se ( gab3 = resp3 )

então n_questoes ← n_questoes + 1

fim_se

Se ( gab4 = resp4 )

então n_questoes ← n_questoes + 1

fim_se

Se ( gab5 = resp5 )

então n_questoes ← n_questoes + 1

fim_se

Page 46: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

5) verificando o conceito do aluno

se ( n_questoes ≥ 3 )

então

conceito ← ‘A’

senão

se ( n_questoes > 0 )

então

conceito ← ‘B’

senão

conceito ← ‘R’

fim_se

fim_se

Page 47: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

6) mostrando os resultados

6.1 ) dados de entrada imprima ( “gabarito: “ ) imprima ( “questao 1: “, gab1 ) imprima ( “questao 2: “, gab2 ) imprima ( “questao 3: “, gab3 ) imprima ( “questao 4: “, gab4 ) imprima ( “questao 5: “, gab5 )

imprima ( “resposta do aluno: “ ) imprima ( “resposta 1: “, resp1 ) imprima ( “resposta 2: “, resp2 ) imprima ( “resposta 3: “, resp3 ) imprima ( “resposta 4: “, resp4 ) imprima ( “resposta 5: “, resp5 )

Page 48: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

6.2 ) quantidade de acertos

imprima ( “quantidade de questoes certas = “ ,

n_questoes )

6.3 ) conceito do aluno

imprima ( “conceito do aluno: “, conceito )

fim

Page 49: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

LINGUAGEM C

#include <stdio.h>

int main ()

{

char gab1, gab2, gab3, gab4, gab5;

char resp1, resp2, resp3, resp4, resp5;

char conceito;

int n_questoes;

printf ( “entre com as 5 alternativas do gabarito” );

scanf ( “ %c %c %c”, &gab1, &gab2, &gab3);

scanf ( “ %c %c”, &gab4, &gab5 );

Page 50: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

printf ( “entre com as 5 resposta do aluno” ); scanf ( “ %c %c %c ”, &resp1, &resp2, &resp3 ); scanf ( “ %c %c ”, &resp4, &resp5 );

n_questoes = 0;

if ( gab1 == resp1 ) ; {

n_questoes ++; }

if ( gab2 == resp2 ) {

n_questoes ++;

}

Page 51: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( gab3 == resp3 )

{

n_questoes ++;

}

if ( gab4 == resp4 )

{

n_questoes ++;

}

if ( gab5 == resp5 )

{

n_questoes ++;

}

Page 52: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( n_questoes >= 3 )

{

conceito = ‘A’;

} else {

if ( n_questoes > 0 )

{

conceito = ‘B’;

} else {

conceito = ‘R’;

}

}

Page 53: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

printf ( “gabarito: \n“ ); printf ( “questao 1: %c\n“, gab1 );

printf ( “questao 2: %c\n“, gab2 ); printf ( “questao 3: %c\n“, gab3 ); printf ( “questao 4: %c\n“, gab4 ); printf ( “questao 5: %c\n“, gab5 );

printf ( “\n\nresposta do aluno:\n “ ); printf ( “resposta 1: %c\n“, resp1 ); printf ( “resposta 2: %c\n“, resp2 ); printf ( “resposta 3: %c\n“, resp3 ); printf ( “resposta 4: %c\n“, resp4 ); printf ( “resposta 5: %c\n“, resp5 );

Page 54: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

printf ( “quantidade de questoes certas = %d\n“ , n_questoes );

printf ( “conceito do aluno: %c\n “, conceito );

}

Page 55: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 6Exemplo 6 Dado a data de nascimento de uma pessoa, no formato

DD MM AAAA, fazer um programa para ler esta data e imprimi-la na forma corrente, ou seja:

DD de nome do mês ao qual MM corresponde de AAA

O programa deverá fazer a consistência dos dados de entrada. ( dia e mês )

Observação: antes de fazer o programa, faça o algoritmo do mesmo.

Page 56: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplos: dado: 20 3 1950 saída: 20 de março de 1950

dado: 35 10 1980 saída: dia do mês não permitido

dado: 3 20 1980 saída: mês não permitido

dado: 31 4 1980 saída: mês não tem 31 diasSugestão:

os valores DD, MM e AAAA devem ser fornecidos pelo usuário e armazenados cada um numa variável;

Page 57: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Primeira versãoPrimeira versão

Observar nestas soluções o seguinte:● A entrada de dados é fornecida num único registro,

ou seja, dia mês ano ( isto significa utilizar-se apenas uma declaração de entrada para todas as variáveis )

● Nesta versão após conferidas as consistências da entrada dos dados, o programa inicia a conversão pedida no enunciado;

● Observe que esta tarefa só é realizada após toda a consistência dos dados tiver terminado. Por isto ela fica dentro do senão do ultimo Se da consistência.

Page 58: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ALGORITMO / PORTUGOLalgoritmo para imprimir de forma corrente uma data de nascimento

inicio

1) Definição das variáveisinteiro dia, mes, ano

2) Entrada de dadosimprima ( “entre com a data de nascimento” )leia ( dia, mes, ano )

Page 59: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

3) fazendo consistência dos dados e a conversão da data

se ( dia < 1) ou ( dia > 31 ) então imprima ( “dia errado” )

senão se ( mes < 1 ) ou ( mes > 12 ) então imprima ( “mês errado” ) senão se ( ano < 0 ) ou ( ano > 2010 ) então imprima ( “verifique o ano “ ) senão

Page 60: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 1 ) então imprima ( dia, “ de janeiro de “, ano )

senão

se ( mes = 2 ) então se ( dia > 29 ) então imprima ( “mes com dias errado“ ) senão imprima ( dia, “ de fevereiro de “,

ano ) fim_se

senão

Page 61: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

senão

se ( mes = 3 )

então

imprima ( dia, “ de março de “, ano )

senão

se ( mes = 4 )

então

se ( dia > 30 )

então

imprima ( “mes com dias errado“ )

senão

imprima ( dia, “ de abril de “, ano )

fim_se

Page 62: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

senão

se ( mes = 5 )

então

imprima ( dia, “ de maio de “, ano )

senão

se ( mes = 6 )

então

se ( dia > 30 )

então

imprima ( “mes com dias errado“ )

senão

imprima ( dia, “ de junho de “, ano )

fim_se

Page 63: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

senão se ( mes = 7 ) então imprima ( dia, “ de julho de “, ano )

senão

se ( mes = 8 ) então imprima ( dia, “ de agosto de “, ano ) senão

Page 64: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 9 ) então se ( dia > 30 ) então imprima ( “mes com dias errado“ ) senão imprima ( dia, “ de setembro de “, ano )

fim_se senão se ( mes = 10 ) então imprima ( dia, “ de outubro de “, ano )

Page 65: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

senão se ( mes = 11 ) então se ( dia > 30 ) então imprima ( “mes com dias errado“ ) senão imprima ( dia, “ de novembro de “, ano )

fim_se senão se ( mes = 12 ) então imprima ( dia, “ de dezembro de “, ano ) fim_se

Page 66: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_se fim_sefim

Page 67: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

LINGUAGEM C:

#include <stdio.h> int main () { int dia, mes, ano; printf ( “entre com a data de nascimento” );

scanf ( “%d %d %d”, &dia, &mes, &ano );

if (( dia < 1) || ( dia > 31 )) { printf ( “dia errado” );

} else { if (( mes < 1 ) || ( mes > 12 )) { printf ( “mês errado” ); } else {

Page 68: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if (( ano < 0 ) || ( ano > 2010 )) { printf ( “verifique o ano “ ); } else {

if ( mes == 1 ) { printf ( “%d de janeiro de %d“, dia, ano ); } else {

if ( mes == 2 ) { if ( dia > 29 ) { printf ( “mes com dias errado“ ); } else {

printf (“%d de fevereiro de %d“, dia, ano ); }

} else {

Page 69: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( mes == 3 )

{

printf ( “%d de março de %d“, dia, ano );

} else {

if ( mes == 4 )

{

if ( dia > 30 )

{

printf ( “mes com dias errado“ );

} else {

printf ( “%d de abril de %d“, dia, ano );

}

} else {

Page 70: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( mes == 5 )

{

printf ( “%d de maio de %d“, dia, ano );

} else {

if ( mes == 6 )

{

if ( dia > 30 )

{

printf ( “mes com dias errado“ );

} else {

printf ( “%d de junho de %d“, dia, ano );

}

} else {

Page 71: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( mes == 7 ) { printf ( “%d de julho de %d“, dia, ano ); } else {

if ( mes == 8 ) { printf ( “%d de agosto de %d“, dia, ano ); } else {

if ( mes == 9 ) { if ( dia > 30 ) { printf ( “mes com dias errado“ ); } eles { printf ( “%d de setembro de %d“, dia, ano )

} } else {

Page 72: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if ( mes == 10 ) { printf ( “%d de outubro de %d“, dia, ano );

} else { if ( mes == 11 ) { if ( dia > 30 ) { printf ( “mes com dias errado“ ); } else { printf ( “%d de novembro de %d“, dia, ano );

} } else { if ( mes == 12 ) { printf ( “%d de dezembro de %d“, dia, ano ); }

Page 73: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

}

} } } } } } } } } } } } } }

Page 74: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Segunda VersãoSegunda Versão● A entrada de dados é a mesma;● Nesta versão foram criadas algumas variáveis com o

objetivo de otimizar o programa, quanto a leitura do mesmo:– Variável CHAVE– Variável MÊS_SAIDA

● A variável CHAVE é utilizada para controlar a impressão da saída, ou seja, inicialmente ela vale zero; se qualquer um erro ocorrer, tal como por exemplo, uma inconstência nos dados de entrada, esta variável passa para o valor 1; No final do programa ela é testada afim de verificar se a impressão pode ou não ocorrer.

Page 75: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

● Diferentemente que na versão anterior, aqui o programa inicializa várias variáveis, as quais contém cada o nome do mês por extenso, as quais vão ser utilizadas nas comparações com os dados de entrada;

Page 76: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ALGORITMO / PORTUGOLalgoritmo para imprimir de forma corrente uma data de nascimento

inicio

1) Definição das variáveis inteiros dia, mes, ano

inteiros chave cadeia mes01, mes02, mes03, mes04, mes05, mes06, mes07,

mes08, mes09, mes10, mes11, mes12

2) Entrada de dados imprima ( “entre com a data de nascimento” ) leia ( dia, mes, ano )

Page 77: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

3) Inicializando chave de controle da impressão chave ← 0

4) inicializando variáveis referentes ao mêsmes01 ← “ de Janeiro de ” mes02 ← “ de Fevereiro de ” mes03 ← “ de Março de ” mes04 ← “ de Abril de ”

mes05 ← “ de de Maio de ” mes06 ← “ de Junho de ” mes07 ← “ de Julho de ” mes08 ← “ de Agosto de ” mes09 ← “ de Setembro de ” mes10 ← “ de Outubro de ” mes11 ← “ de Novembro de ” mes12 ← “ de Dezembro de ”

Page 78: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

5) fazendo consistência dos dias e meses e ano se ( dia < 1) ou ( dia > 31 )

então imprima ( “dia errado” ) chave ← 1 fim_se

se ( mes < 1 ) ou ( mes > 12 ) então imprima ( “mês errado” ) chave ← 1 fim_se se ( ano < 0 ) ou ( ano > 2010 ) então imprima ( “verifique o ano “ ) chave ← 1 fim_se

Page 79: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

6) fazendo a conversão da datase ( mes = 1 ) então mes_sai ← mes01fim_se

se ( mes = 2 ) então mes_sai ← mes02

Se ( dia > 29 ) então

imprima ( “ mês não tem mais de 29 dias “ ) chave ← 1 fim_se

fim_se

Page 80: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 3 ) então mes_sai ← mes03 fim_se

se ( mes = 4 ) então mes_sai ← mes04

se ( dia > 30 ) então

imprima ( “ mês não tem mais de 30 dias “ ) chave ← 1 fim_se

fim_se

Page 81: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 5 ) então mes_sai ← mes05 fim_se

se ( mes = 6 ) então mes_sai ← mes06 se ( dia > 30 ) então imprima ( “ mês não tem mais de 30 dias “ ) chave ← 1 fim_se fim_se

Page 82: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 7 ) então mes_sai ← mes07 fim_se

se ( mes = 8 ) então mes_sai ← mes08 fim_se

Page 83: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 9 ) então

mes_sai ← mes09 se ( dia > 30 ) então

imprima ( “ mês não tem mais de 30 dias “ ) chave ← 1 fim_se

fim_se

se ( mes = 10 ) então

mes_sai ← mes10

fim_se

Page 84: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 11 )

então

mes_sai ← mes11

se ( dia > 30 )

então

imprima ( “ mês não tem mais de 30 dias “ )

chave ← 1

fim_se

fim_se

se ( mes = 12 )

então

mes_sai ← mes12

fim_se

Page 85: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

7) saida do resultado

se ( chave = 0 )

entao

imprima ( dd, mês_sai, ano )

fim_se

fim

Page 86: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Terceira VersãoTerceira Versão● Observe que na versão anterior, para determinados meses,

aqueles que têm menos de 31 dias, o programa verifica esta possibilidade,e se o usuário entrou com a informação errada, o programa envia uma mensagem e troca a CHAVE para o valor 1;

● Deste modo, quando chegar ao final do programa e CHAVE for diferente de 1, ele imprime o valor do mês convertido;

● Ao invés de se ter um trecho igual para todos os meses onde esta verificação é feita, pode-se fazer uma única verificação conforme mostre o programa seguinte.

● Apenas o item 6) é trocado da versão anterior para esta;

Page 87: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

6) fazendo a conversão da datase ( mes = 1 ) então mes_sai ← mes01fim_se

se ( mes = 2 ) então mes_sai ← mes02fim_se

se ( mes = 3 ) então mes_sai ← mes03fim_se

se ( mes = 4 ) então mes_sai ← mes04fim_se

Page 88: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 5 ) então mes_sai ← mes05fim_se

se ( mes = 6 ) então mes_sai ← mes06fim_se

se ( mes = 7) então mes_sai ← mes07fim_se

se ( mes = 8 ) então mes_sai ← mes08fim_se

Page 89: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 9 ) então mes_sai ← mes09fim_se

se ( mes = 10 ) então mes_sai ← mes10fim_se

se ( mes = 11 ) então mes_sai ← mes11fim_se

se ( mes = 12 ) então mes_sai ← mes12fim_se

Page 90: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

se ( mes = 2 ) e ( dia > 29 )

então

chave ← 1

imprima ( “mês tem mais de 29 dias “ )

senão

se ( ( mes = 4 ) ou ( mes = 6 ) ou ( mes = 9 ) ou ( mes = 11 ) ) e

( dia > 30 )

então

chave ← 1

imprima ( “mês tem mais de 30 dias “ )

fim_se

fim_se

Page 91: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Em casa construa as duas outras versão na Em casa construa as duas outras versão na linguagem C.linguagem C.

Page 92: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ComentáriosComentários● Todas as versões são soluções para o problema, porém é bom

analisá-las e verificar que a primeira é a mais pobre de todas, tendo em vista que há um aninhamento muito grande de Seleções;

● A segunda versão já melhorou no sentido de que agora a saída é controlada por uma chave e foi retirada uma grande parte do aninhamento das seleções;

● A ultima versão é a mais otimizada, visto que todos os aninhamentos foram retirados, a chave de controle foi mantida e uma única verificação é responsável por decidir qual dos meses possui mais de 30 dias; além disto ela ficou com menos declarações.

Page 93: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 7Exemplo 7● Dados os coeficientes de uma equação do segundo

grau, calcular as raízes reais da mesma.

● Fazer a consistência dos dados de entrada.

( verificar se é equação do segundo grau )

Se as raízes não forem reais, o programa deverá comunicar ao usuário este fato, mas não calculá-las.

Observação: antes de fazer o programa, faça o algoritmo do mesmo.

Page 94: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ALGORITMO equacao_segundo_graualgoritmo para calcular as raízes reais de uma equação do segundo grau

1) Definição das variáveisinteiros coef1, coef2, coef3reais delta, raiz1, raiz2

2) Entrada de dadosimprima ( “entre com os coeficientes da equação do segundo grau” )leia ( coef1, coef2, coef3)

3) mostrando os dados de entrada

imprima ( “coeficientes da equacao: “, coef1, coef2, coef3 )

4) Fazendo consistência dos dados de entrada Se ( coef1 = 0 )

então imprima ( “equação não é do segundo grau” )

senão 4.1 ) cálculo do discriminante

delta ← coef2 . coef2 – 4 coef1 . coef3

Page 95: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

4.2 ) verificação do discriminante

se ( delta < 0 )

então

imprima ( “raízes complexas” )

senão

4.2.1) calculo das raízes reais

- coef2 + raiz ( discriminante )

raiz1 ← ------------------------------------------

2 coef1

- coef2 – raiz ( discriminante )

raiz2 ← ------------------------------------------

2 coef1

4.2.2) mostrando as raízes calculadas

imprima ( “raízes reais: “ , raiz1, raiz2 )

fim_se

fim_se

fim_algoritmo

Page 96: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Em casa construa a versão na linguagem C.Em casa construa a versão na linguagem C.

Page 97: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

TreinamentoTreinamento

1)Faça um programa que leia um número e diga se ele é divisível por 2 e por 3. Use estrutura de desvio condicional simples.

2)Faça um programa que leia um número e diga se ele é divisível por 5 ou por 7. Use estrutura de desvio condicional simples.

3)Faça um programa que leia dois números e apresente-os em ordem crescente. Use estrutura de desvio condicional simples.

Page 98: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

TreinamentoTreinamento

4)Elabore um algoritmo que dada a idade de um nadador classifica-o em uma das seguintes categorias:

infantil A = 5 - 7 anos

infantil B = 8 - 10 anos

juvenil A = 11 - 13 anos

juvenil B = 14 - 17 anos

adulto = maiores de 18 anos

Page 99: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

99

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Seleções Múltiplas: Podemos com as seleções aninhadas criarmos múltiplas seleções, mas

existe um comando ao qual as seleções múltiplas são melhor representadas. E com isto, podemos escolher mais opções que somente verdadeira e falsa.

Portugol:caso (<variável>) <valor_variável 1>:Comandos de bloco 1 <valor_variável 2>:Comandos de bloco 2 ... <valor_variável n>:Comandos de bloco n senão: Comandos de bloco F (opcional)fim-caso

Page 100: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

100

<variável>

Bloco de comandos F

Fluxograma:

F

Bloco de comandos 1<valor_variável 1>

<valor_variável 2> Bloco de comandos 2

<valor_variável n> Bloco de comandos n

Page 101: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

101

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

Seleções Múltiplas: Os BREAKs são para pular os casos seguintes.

LINGUAGEM C:switch ( variável ) { case <valor_variável 1> : Comandos de bloco 1; break; case <valor_variável 2> : Comandos de bloco 2; break; ... case <valor_variável n> : Comandos de bloco n; break; default: Comandos de bloco F (opcional)}

Page 102: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

102

Estruturas de ControleEstruturas de ControleCondicional ou de seleçãoCondicional ou de seleção

OBSERVAÇÃO:

As seleções Múltiplas não aceitam variáveis CADEIA (STRING) e nem variável Real.

Page 103: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 8Exemplo 8 Faça um programa que a pessoa escolha qual é a sua

Universidade pelo número dado:

1) UNIFEI

2) UFMG

3) UFU

4) Outra

Page 104: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 8Exemplo 8 #include <stdio.h>

int main() {

int opcao;

printf("Escolha a sua Universidade:\n");

printf("1) UNIFEI\n");

printf("2) UFMG\n");

printf("3) UFU\n");

printf("4) Outra\n");

scanf("%d",&opcao);

Page 105: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 8Exemplo 8switch(opcao) {

case 1:

printf("UNIFEI\n");

break;

case 2:

printf("UFMG\n");

break;

case 3:

printf("UFU\n");

break;

Page 106: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 8Exemplo 8case 4:

printf("Outra\n");

break;

}

return 0;

}

Page 107: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 9Exemplo 9 Faça um programa que escolha a letra que começa o

nome de uma fruta, conforme a lista abaixo:

a) abacaxi

b) banana

c) caju

d) Damasco

Caso o usuário digite outra letra, imprima que está errado.

Page 108: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 9Exemplo 9 #include <stdio.h>

int main() {

char opcao;

printf("Escolha a primeira letra de uma fruta:\n");

printf("a) abacaxi\n");

printf("b) banana\n");

printf("c) caju\n");

printf("d) damasco\n");

scanf("%d",&opcao);

Page 109: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 9Exemplo 9switch(opcao) {

case 'a':

printf("abacaxi\n");

break;

case 'b':

printf("banana\n");

break;

case 'c':

printf("caju\n");

break;

Page 110: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 9Exemplo 9case 'd':

printf("damasco\n");

break;

default:

printf("Opcao errada\n");

}

return 0;

}

Page 111: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplo 10Exemplo 10 Dado a data de nascimento de uma pessoa, no formato

DD MM AAAA, fazer um programa para ler esta data e imprimi-la na forma corrente, ou seja:

DD de nome do mês ao qual MM corresponde de AAA

O programa deverá fazer a consistência dos dados de entrada. ( dia e mês )

Observação: antes de fazer o programa, faça o algoritmo do mesmo.

Page 112: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

Exemplos: dado: 20 3 1950 saída: 20 de março de 1950

dado: 35 10 1980 saída: dia do mês não permitido

dado: 3 20 1980 saída: mês não permitido

dado: 31 4 1980 saída: mês não tem 31 diasSugestão:Sugestão:

os valores DD, MM e AAAA devem ser fornecidos pelo usuário e armazenados cada um numa variável;

Page 113: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

ALGORITMO / PORTUGOLalgoritmo para imprimir de forma corrente uma data de nascimento

inicio

1) Definição das variáveisinteiro dia, mes, ano

2) Entrada de dadosimprima ( “entre com a data de nascimento” )leia ( dia, mes, ano )

Page 114: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

3) fazendo consistência dos dados e a conversão da data

se ( dia < 1) ou ( dia > 31 ) então imprima ( “dia errado” )

senão se ( mes < 1 ) ou ( mes > 12 ) então imprima ( “mês errado” ) senão se ( ano < 0 ) ou ( ano > 2010 ) então imprima ( “verifique o ano “ ) senão

Page 115: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

caso ( mes ) 1 : imprima ( dia, “ de janeiro de “, ano ) 2 : se ( dia > 29 ) então imprima ( “mes com dias errado“ ) senão imprima ( dia, “ de fevereiro de “, ano ) fim_se 3 : imprima ( dia, “ de março de “, ano )

Page 116: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

4 :

se ( dia > 30 )

então

imprima ( “mes com dias errado“ )

senão

imprima ( dia, “ de abril de “, ano )

fim_se

5 :

imprima ( dia, “ de maio de “, ano )

Page 117: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

6 :

se ( dia > 30 )

então

imprima ( “mes com dias errado“ )

senão

imprima ( dia, “ de junho de “, ano )

fim_se

7 : imprima ( dia, “ de julho de “, ano )

8 : imprima ( dia, “ de agosto de “, ano )

Page 118: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

9 : se ( dia > 30 ) então imprima ( “mes com dias errado“ ) senão imprima ( dia, “ de setembro de “, ano )

fim_se

10 : imprima ( dia, “ de outubro de “, ano )

Page 119: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

11 : se ( dia > 30 ) então imprima ( “mes com dias errado“ ) senão imprima ( dia, “ de novembro de “, ano )

fim_se 12 : imprima ( dia, “ de dezembro de “, ano )

fim_caso

Page 120: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

fim_se fim_se fim_sefim

Page 121: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

LINGUAGEM C:

#include <stdio.h> int main () { int dia, mes, ano; printf ( “entre com a data de nascimento” );

scanf ( “%d %d %d”, &dia, &mes, &ano );

Page 122: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

if (( dia < 1) || ( dia > 31 )) { printf ( “dia errado” );

} else { if (( mes < 1 ) || ( mes > 12 )) { printf ( “mês errado” ); } else { if (( ano < 0 ) || ( ano > 2010 )) { printf ( “verifique o ano “ ); } else {

Page 123: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

switch ( mes ) { case 1 : printf ( “%d de janeiro de %d“, dia, ano ); break;

case 2 : if ( dia > 29 ) { printf ( “mes com dias errado“ ); } else { printf (“%d de fevereiro de %d“, dia, ano ); } break;

Page 124: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

caso 3 :

printf ( “%d de março de %d“, dia, ano );

break;

caso 4 :

if ( dia > 30 )

{

printf ( “mes com dias errado“ );

} else {

printf ( “%d de abril de %d“, dia, ano );

}

break;

Page 125: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

caso 5 :

printf ( “%d de maio de %d“, dia, ano );

break;

caso 6 :

if ( dia > 30 )

{

printf ( “mes com dias errado“ );

} else {

printf ( “%d de junho de %d“, dia, ano );

}

break;

Page 126: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

caso 7 : printf ( “%d de julho de %d“, dia, ano );

break;

caso 8 : printf ( “%d de agosto de %d“, dia, ano );

break;

caso 9 : if ( dia > 30 ) { printf ( “mes com dias errado“ ); } else { printf ( “%d de setembro de %d“, dia, ano )

}

break;

Page 127: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

caso 10 : printf ( “%d de outubro de %d“, dia, ano ); break;

caso 11 : if ( dia > 30 ) { printf ( “mes com dias errado“ ); } else { printf ( “%d de novembro de %d“, dia, ano );

} break; caso 12 : printf ( “%d de dezembro de %d“, dia, ano ); break; }

Page 128: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

} } } }

Page 129: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

1) Um vendedor necessita de um algoritmo que calcule o preço total devido por um cliente. O algoritmo deve receber o código de um produto e a quantidade comprada e calcular o preço total, usando a tabela abaixo:

Código do Produto Preço unitário

101 R$ 3,20

102 R$ 2,80

103 R$ 1,50

104 R$ 10,25

105 R$ 2,90

TreinamentoTreinamento

Page 130: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

2) Faça um programa que entre com uma opção de 1 a 5 e diga qual o time que a pessoa torce.

a) Barcelona

b) Real Madrid

c) Juventus

d) Milan

e) Porto

TreinamentoTreinamento

Page 131: CCO 016 / COM 110 - rcosta62br.unifei.edu.br · • Faça um programa que leia um número natural e diga se ele é par ou impar. Para N = 8: 8 é par. ... leia ( A, B ) {Calculo da

131

ExercíciosExercícios

• https://www.urionlinejudge.com.br/judge/en/login

– URI 1035 a 1038, 1040 a 1052, 1061, 1828, 1837, 1847, 1929, 1933, 1960, 2057, 2059, 2235, 2313, 2670, 2717.