CCO 016 – Fundamentos de Programaçãorcosta62br.unifei.edu.br/com110/aula_07.pdf · 2020. 5....

Post on 01-Nov-2020

0 views 0 download

Transcript of CCO 016 – Fundamentos de Programaçãorcosta62br.unifei.edu.br/com110/aula_07.pdf · 2020. 5....

CCO 016 – Fundamentos de Programação

Prof. Roberto Affonso da Costa JuniorProf. Roberto Affonso da Costa Junior

Universidade Federal de ItajubáUniversidade Federal de Itajubá

Aula 07Aula 07

● Programação Condicional– Comandos Condicionais (se – senao)– Linguagem de Programação C (if – eles)– Estrutura Condicionais (caso)– Linguagem de Programação C (switch)

Programação CondicionalProgramação Condicional

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

Programação CondicionalProgramação Condicional

● Isto é, são testados parâmetros e, dependendo de seus valores, tomamos um caminho ou outro. As condições que são testadas num programa são do tipo lógica (booleanobooleano), portanto podem ter somente dois resultados: VerdadeiroVerdadeiro ou FalsoFalso. Assim, a seleção de ações pode seguir, no máximo, duas alternativas: uma se a condição for verdadeiraverdadeira e outra se a condição testada for falsafalsa.

Operadores LógicosOperadores Lógicos

● Os operadores lógicos são utilizados na confecção das condições (verdadeira ou falsaverdadeira ou falsa).

● Esses operadores são:

Significado Operador em C/C++

Maior que >

Menor que <

Maior ou igual a >=

Menor ou igual a <=

Diferente de !=

Igual a = =

Valores BooleanosValores Booleanos

● Os operadores lógicos na linguagem irão servir para comparar duas variáveis ou uma variável e uma contante ou simplesmente uma constante. Em C e C++ o valor ‘0’valor ‘0’ tem o significado de falso e qualquer valor qualquer valor diferente de ‘0’diferente de ‘0’ o significado de verdadeiro.

● No entanto, em C++ tem o tipo booleano:

bool b1, b2;● Esse tipo aceita só dois valores, true ou false.

b1b1truefalse

Pontos importantes do tipo boolPontos importantes do tipo bool● Por defaultdefault o valor truetrue é igual a 1 e o valor falsefalse igual

a 0.● Pode-se usar variável do tipo boolbool ou valores truetrue e

falsefalse em expressão matemáticas. Por exemplo:int x = false + true + 6;int x = false + true + 6;

● é uma operação valida e o resultado de x é igual a 7, com falsefalse = 0 e truetrue = 1.

● É também possível converter valores inteiros ou reais para o tipo boolbool.

bool x = 0; // falsebool y = 100; // true

bool z = 15.75; // truebool w = 0.0; // false

Programa utilizando o tipo boolPrograma utilizando o tipo bool● Pode-se usar os operadores lógicos conforme o

programa:#include <bits/stdc++.h>using namespace std;int main() {

int A = 10, B = 7, C = 5, D = 3;bool b1;b1 = A > 10;cout << b1 << endl;b1 = B < A;cout << b1 << endl;b1 = C >= D;cout << b1 << endl;

Programa utilizando o tipo boolPrograma utilizando o tipo bool● Continuação:

b1 = B <= 2;cout << b1 << endl;b1 = A != 10;cout << b1 << endl;b1 = D == 3;cout << b1 << endl;b1 = C;cout << b1 << endl;return 0;

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

00111100001111

Operadores RelacionaisOperadores Relacionais

● Os operadores lógicos tem que ser complementados, pois não podemos comparar mais de duas variáveis, como por exemplo na matemática: A = B = CA = B = C. Não se pode fazer assim na linguagem de programação C/C+C/C+++. Para isso usamos os operadores relacionais: não, e e ou, conforme a tabela.

Significado Operador em C/C++

não !

e &&

ou ||

Tabela dos Operadores RelacionaisTabela dos Operadores Relacionais

● Para relacionar os operadores tem-se as tabelas:

A ! A

V F

F V

A B A && B

V V V

V F F

F V F

F F FA B A || B

V V V

V F V

F V V

F F F

Utilizando os Operadores Utilizando os Operadores RelacionaisRelacionais

● Pode-se usar os operadores lógicos conforme o programa:

#include <bits/stdc++.h>using namespace std;int main() {

int A = 10, B = 7, C = 5, D = 3;bool b1;b1 = !(A > 10);cout << b1 << endl;b1 = ((B < A) && (C < D));cout << b1 << endl;

Utilizando os Operadores Utilizando os Operadores RelacionaisRelacionais

● Pode-se usar os operadores lógicos conforme o programa:

b1 = ((A >= D) || (B <= C));cout << b1 << endl;b1 = (!(A >= D) || (B <= C));cout << b1 << endl;b1 = ((B < A) && !(C < D));cout << b1 << endl;return 0;

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

1100110011

Seleção SimplesSeleção 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><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”.

Seleção SimplesSeleção Simples

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

Fluxograma:

<condições>F

V

Bloco de comandos

Seleção SimplesSeleção Simples

● Na linguagem C/C++ fica:

if (<condição>){

blocos de comandos;}

Vale observar que as chaves ({ e }) só são necessárias, quando se tem mais de um bloco de comando. Se tiver um só bloco de comando, não

precisa colocá-las.

ExemploExemplo

● Faça um programa que leia um número real e diga se ele é “maior que 10”.

Exemplo - PortugolExemplo - Portugol

inicio real N imprima (“Entre com N: “) leia (N) se N > 10 então

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

Exemplo - FluxogramaExemplo - Fluxograma

INICIO

N

N, “ Maior que 10”

FIM

N > 10F

V

Exemplo – C/C++Exemplo – C/C++

#include <bits/stdc++.h>using namespace std;int main() { float N; scanf ("%f",&N); if (N > 10) { printf ("%.1f maior que 10\n",N); } return 0;}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

3.453.45

10.4510.4510.4 maior que 1010.4 maior que 10

Seleção CompletaSeleção Completa

● A seleção completa é dada por se...então...senão...fim-se onde se a <condição><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.

Seleção CompletaSeleção Completa

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

Seleção CompletaSeleção Completa

● Na linguagem C/C++ fica:

if (<condição>){

blocos de comandos 1;} else {

blocos de comandos 2;}

ExemploExemplo

● Leia um número natural e diga se ele é par ou impar

Exemplo - PortugolExemplo - Portugol

inicio inteiro N imprima (“Entre com N: “) leia (N) se (resto (N,2) = 0) então imprima (N, “ e par”) senão imprima (N,” e impar) fim-sefim

Exemplo - FluxogramaExemplo - FluxogramaINICIO

FIM

N

N, “ é par”

resto (N, 2) = 0F

V

N, “ é impar”

Exemplo – C/C++Exemplo – C/C++#include <bits/stdc++.h>using namespace std;int main() {

int N;scanf ("%d",&N);if ((N % 2) == 0){

printf ("%d e par.\n", N);} else {

printf ("%d e impar.\n",N);}return 0;

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

888 é par.8 é par.

777 é impar.7 é impar.

Operador da Seleção CompletaOperador da Seleção Completa

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

EXP1 ? EXP2 : EXP3;EXP1 ? EXP2 : EXP3;

● onde EXP1EXP1 é uma expressão condicional, e EXP2EXP2 e EXP3EXP3 é um único bloco de comando para o verdadeiroverdadeiro e falsofalso, respectivamente.

Exemplo – C/C++Exemplo – C/C++

#include <bits/stdc++.h>using namespace std;int main() {

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

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

888 é par.8 é par.

777 é impar.7 é impar.

ExemploExemplo

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

Exemplo – C/C++Exemplo – C/C++

#include <bits/stdc++.h>using namespace std;int main() {

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

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

8800

7711

ExemploExemplo

● Programa

#include <bits/stdc++.h>using namespace std;int main() {

int A, B, C, D;scanf("%d %d %d %d", &A, &B, &C, &D);if (!(A > 3)) printf("Verdade\n");else printf("Falso\n");if ((A > 3) || !(B > D)) printf("Verdade\n");else printf("Falso\n");

Exemplo de Seleção CompletaExemplo de Seleção Completa

● Continuação:

if ((D < 0) && (C > 5)) printf("Verdade\n");else printf("Falso\n");if (!(B > 3) || (C < 7)) printf("Verdade\n");else printf("Falso\n");return 0;

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

1 5 8 01 5 8 0VerdadeVerdadeFalsoFalsoFalsoFalsoFalsoFalso

ExemploExemplo

● Programa

#include <bits/stdc++.h>using namespace std;int main() {

int A, B, C, D, X;scanf("%d %d %d %d", &A, &B, &C, &D);X = ((A > B) || (C <= 3)) ?(A + 2) * (B - 2) : (A + B) / D * (C + D);printf("X = %d\n", X);return 0;

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

0 9 3 20 9 3 2X = 14X = 14

Exemplo de Seleção CompletaExemplo de Seleção Completa

● Programa

#include <bits/stdc++.h>using namespace std;int main() {

int A, B, C, D, X;scanf("%d %d %d %d", &A, &B, &C, &D);X = (!(D > 3)) ?(A + B) * D : (A - B) / C;printf("X = %d\n", X);return 0;

}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

0 9 3 20 9 3 2X = 18X = 18

Seleção CompostaSeleção Composta

● A estrutura de seleção composta também é designada como seleção aninhada e é utilizada quando estivermos fazendo várias comparações (testes)(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.

Seleção CompostaSeleção Composta

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

Seleção CompostaSeleção Composta<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

Seleção CompostaSeleção Composta

● Na linguagem C/C++ fica: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;}

ExemploExemplo

● Faça um programa que leia três medidas e determine se essas medidas formam um triânguloformam um triângulo, se formam que tipo de triângulo ele é (isósceles, escaleno ou isósceles, escaleno ou equiláteroequilátero).

Exemplo - PortugolExemplo - Portugol

inicio real A, B, C 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(“Triangulo Equilatero”) senão se (A = B) ou (A = C) ou (B = C) então imprima (“Triangulo Isosceles”)

Exemplo – PortugolExemplo – Portugol

senão imprima (“Triangulo escaleno”) fim-se fim-se senão imprima (“As medidas nao formam um triangulo”) fim-sefim

Exemplo - FluxogramaExemplo - Fluxograma

INICIO

A, B, C

(A < B + C) e (B < A + C) e (C < A + B)F

21

V

Exemplo - FluxogramaExemplo - Fluxograma

“Triangulo Equilatero”

(A = B) e (B = C)F

V

1

(A = B) ou (A = C) ou (B = C)

3 V

4

F

5

Exemplo - FluxogramaExemplo - Fluxograma

“Triangulo Isosceles”

43

6

5

“Triangulo escaleno”

Exemplo - FluxogramaExemplo - Fluxograma

FIM

“As medidas nao formam um triangulo”

26

Exemplo – C/C++Exemplo – C/C++

#include <bits/stdc++.h>using namespace std;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("Triangulo Equilatero\n"); } else {

ExemploExemplo● Continuação

if ((A == B) || (A == C) || (B == C)) { printf ("Triangulo Isosceles\n"); } else { printf ("Triangulo escaleno\n"); } } } else { printf ("As medidas não formam um triangulo\n"); } return 0;}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

3 3 33 3 3Triângulo EquiláteroTriângulo Equilátero

3 3 43 3 4Triângulo IsóscelesTriângulo Isósceles

3 4 53 4 5Triângulo escalenoTriângulo escaleno

3 4 103 4 10As medidas não formam um triânguloAs medidas não formam um triângulo

Exemplo ExpressãoExemplo Expressão

● Calcular a seguinte expressão:

VL=5A+ B

(A−B)+2AB+ 3A

Exemplo Exemplo ExpressãoExpressão

objetivo: Calcular uma expressão aritmética

1) Definir variáveis inteiros A, B, num1, num2, den1, den2, VL

2) Entrada dos dados imprima ( “entre com dois valores “ ) leia ( A, B )

3) Calculo do numerador num1 ← 5 A + B

Exemplo Exemplo ExpressãoExpressão

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

Exemplo Exemplo ExpressãoExpressãosenão 6.1) calculo do denominador geral den2 ← ( A – B ) + num2 / den 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

Exemplo Exemplo ExpressãoExpressão

7) mostrando os dados de entrada imprima ( “A = “, A ) imprima ( “B = “, B )

fim

Exemplo Expressão - PortugolExemplo Expressão - 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

Exemplo Expressão - PortugolExemplo Expressão - Portugol

{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

Exemplo Expressão - PortugolExemplo Expressão - Portugol

{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

Exemplo Expressão - PortugolExemplo Expressão - Portugol

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

Exemplo Expressão - C/C++Exemplo Expressão - C/C++#include <bits/stdc++.h>using namespace std;int main (){ int A, B, num1, num2, den1, den2, VL; scanf ("%d %d", &A, &B); num1 = 5 * A + B; num2 = 2 * A; den1 = B + 3 * A; if ( den1 == 0 ) { printf ("expressão não calculada\n"); printf ("denominador nulo\n");

Exemplo Expressão - C/C++Exemplo Expressão - C/C++ } else { den2 = ( A - B ) + num2 / den1; if ( den2 == 0 ) { printf ("expressão não calculada\n"); printf ("denominador nulo\n"); } else { VL = num1 / den2 ; printf ("Valor da expressao = %d\n", VL); } } printf ("A = %d\n", A); printf ("B = %d\n", B);}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

-1 3-1 3expressão não calculadaexpressão não calculadadenominador nulodenominador nuloA = -1A = -1B = 3B = 3

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

1 11 1expressão não calculadaexpressão não calculadadenominador nulodenominador nuloA = 1A = 1B = 1B = 1

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

4 34 3Valor da expressao = 23Valor da expressao = 23A = 4A = 4B = 3B = 3

Exemplo ProvaExemplo Prova

● 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

Exemplo ProvaExemplo Prova

objetivo: calcular o conceito de um aluno frente ao gabarito de uma prova

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 )

Exemplo ProvaExemplo Prova

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 certas se ( gab1 = resp1 ) então n_questoes ← n_questoes + 1 fim_se

Exemplo ProvaExemplo Prova

se ( gab2 = resp2 ) então n_questoes ← n_questoes + 1 fim_se

se ( gab3 = resp3 ) então

n_questoes ← n_questoes + 1 fim_se

Exemplo ProvaExemplo Prova

se ( gab4 = resp4 ) então

n_questoes ← n_questoes + 1 fim_se

se ( gab5 = resp5 ) então

n_questoes ← n_questoes + 1 fim_se

Exemplo ProvaExemplo Prova

5) verificando o conceito do alunose ( 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

Exemplo ProvaExemplo Prova

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 )

Exemplo ProvaExemplo Prova

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

6.2 ) quantidade de acertos imprima ( “quantidade de questoes certas = “ ,

n_questoes ) 6.3 ) conceito do aluno imprima ( “conceito do aluno: “, conceito)

Exemplo Expressão - PortugolExemplo Expressão - 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

Exemplo Expressão - PortugolExemplo Expressão - Portugol

{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

Exemplo Expressão - PortugolExemplo Expressão - Portugol

{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

Exemplo Expressão - PortugolExemplo Expressão - Portugol

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

Exemplo Prova - C/C++Exemplo Prova - C/C++

#include <bits/stdc++.h>using namespace std;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 );

Exemplo Prova - C/C++Exemplo Prova - C/C++ 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 ++; }

Exemplo Prova - C/C++Exemplo Prova - C/C++ if ( gab3 == resp3 ) { n_questoes ++; } if ( gab4 == resp4 ) { n_questoes ++; } if ( gab5 == resp5 ) { n_questoes ++; }

Exemplo Prova - C/C++Exemplo Prova - C/C++ if ( n_questoes >= 3 ) { conceito = 'A'; } else { if ( n_questoes > 0 ) { conceito = 'B'; } else { conceito = 'R'; } }

Exemplo Prova - C/C++Exemplo Prova - C/C++ 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);

Exemplo Prova - C/C++Exemplo Prova - C/C++ printf ("quantidade de questoes certas = %d\n", n_questoes);

printf ("conceito do aluno: %c\n", conceito); return 0;}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

entre com as 5 alternativas do gabarito: entre com as 5 alternativas do gabarito: a b c d ea b c d eentre com as 5 resposta do aluno: entre com as 5 resposta do aluno: c b a c ec b a c e

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

gabarito:gabarito:questao 1: aquestao 1: aquestao 2: bquestao 2: bquestao 3: cquestao 3: cquestao 4: dquestao 4: dquestao 5: equestao 5: e

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

resposta do aluno:resposta do aluno:resposta 1: cresposta 1: cresposta 2: bresposta 2: bresposta 3: aresposta 3: aresposta 4: cresposta 4: cresposta 5: eresposta 5: equantidade de questoes certas = 3quantidade de questoes certas = 3conceito do aluno: Aconceito do aluno: A

Seleções MúltiplasSeleções Múltiplas

● Podemos com as seleções aninhadas criarmos múltiplas seleçõesmú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 verdadeiraverdadeira e falsafalsa.

Seleções MúltiplasSeleções Múltiplas

Portugol:caso (<variavel>) <valor_variavel 1>:Comandos de bloco 1 <valor_variavel 2>:Comandos de bloco 2 ... <valor_variavel n>:Comandos de bloco n senao: Comandos de bloco F (opcional)(opcional)fim-caso

Seleções MúltiplasSeleções Múltiplas

<variavel>

Bloco de comandos F

Fluxograma:

F

Bloco de comandos 1<valor_variavel 1>

<valor_variavel 2> Bloco de comandos 2

<valor_variavel n> Bloco de comandos n

Seleções MúltiplasSeleções MúltiplasLINGUAGEM C/C++:switch ( variavel ) { case <valor_variavel 1> : Comandos de bloco 1; break; case <valor_variavel 2> : Comandos de bloco 2; break; ... case <valor_variavel n> : Comandos de bloco n; break; default: Comandos de bloco F (opcional)}

Os BREAKsBREAKs são para pular os casos seguintes.

Seleções MúltiplasSeleções Múltiplas

OBSERVAÇÃO:OBSERVAÇÃO:

As seleções Múltiplas nãonão aceitam variáveis CADEIACADEIA (STRINGSTRING) e nem variável Realvariável Real.

As seleções Múltiplas só aceitam variáveis CARACTERCARACTER (UM ÚNICO CARACTER) ou INTEIROINTEIRO.

ExemploExemplo

● Faça um programa que a pessoa escolha qual é a sua Universidade pelo número dado:

1 – UNIFEI2 – UFMG3 – UFU4 – Outra

Exemplo - PortugolExemplo - Portugolinicio inteiro opcao imprima (“Escolha a sua Universidade: “) imprima (“1 – UNIFEI”) imprima (“2 – UFMG”) imprima (“3 – UFU”) imprima (“4 – Outra”) leia (opcao) caso (opcao) 1 : imprima (“UNIFEI”) 2 : imprima (“UFMG”) 3 : imprima (“UFU”) 4 : imprima (“Outra”) fim-casofim

Exemplo - C/C++Exemplo - C/C++

#include <bits/stdc++.h>using namespace std;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);

Exemplo - C/C++Exemplo - C/C++● Continuação

switch(opcao) { case 1: printf("UNIFEI\n"); break; case 2: printf("UFMG\n"); break; case 3: printf("UFU\n"); break;

ExemploExemplo● Continuação

case 4: printf("Outra\n"); break; break; } return 0;}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

11UNIFEIUNIFEI

22UFMGUFMG

33UFUUFU

44OutraOutra

55

Porque?Porque?

ExemploExemplo

● Faça um programa que escolha a letra que começa o nome de uma fruta, conforme a lista abaixo:

a – abacaxia – abacaxib – bananab – bananac – cajuc – cajud – damascod – damasco

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

ExemploExemplo

inicio caracter opcao imprima (“Escolha a primeira letra de uma fruta: “) imprima (“a – abacaxi”) imprima (“b – banana”) imprima (“c – caju”) imprima (“d – damasco”) leia (opcao)

ExemploExemplo caso (opcao) ’a’ : imprima (“abacaxi”) ’b’ : imprima (“banana”) ’c’ : imprima (“caju”) ’d’ : imprima (“damasco”) senao : imprima (“Opcao errada”) fim-casofim

ExemploExemplo● Em linguagem C/C++

#include <bits/stdc++.h>using namespace std;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(" %c",&opcao);

ExemploExemplo● Continuação

switch(opcao) { case 'a': printf("abacaxi\n"); break; case 'b': printf("banana\n"); break; case 'c': printf("caju\n"); break;

ExemploExemplo● Continuação

case 'd': printf("damasco\n"); break; default: printf("Opcao errada\n"); } return 0;}

Entrada/Saída do ProgramaEntrada/Saída do Programa

● Resultado do programa.

aaabacaxiabacaxi

bbbananabanana

cccajucaju

dddamascodamasco

&&Opcao erradaOpcao errada

Porque?Porque?

ExercíciosExercícios

● https://www.urionlinejudge.com.br/judge/en/loginhttps://www.urionlinejudge.com.br/judge/en/loginURI 1035 a 1038, 1040 a 1052, 1061, 1837, 1847, 1929, 1933, 2057, URI 1035 a 1038, 1040 a 1052, 1061, 1837, 1847, 1929, 1933, 2057, 2059, 2235, 2313, 2670, 2717.2059, 2235, 2313, 2670, 2717.

● https://open.kattis.com/problems?order=problem_difficulty&dir=aschttps://open.kattis.com/problems?order=problem_difficulty&dir=ascQuadrant Selection, Take Two Stones, Spavanac, Quadrant Selection, Quadrant Selection, Take Two Stones, Spavanac, Quadrant Selection, Provinces and Gold, Filip, Datum (switch), Cetvrta.Provinces and Gold, Filip, Datum (switch), Cetvrta.

● https://neps.academy/https://neps.academy/● Vá em Programação e Assunto: Procure por Estruturas de Decisão. Vá em Programação e Assunto: Procure por Estruturas de Decisão.

Faço todos os exercícios.Faço todos os exercícios.