• Nenhum resultado encontrado

Prof. André Luiz Sozzi

N/A
N/A
Protected

Academic year: 2021

Share "Prof. André Luiz Sozzi"

Copied!
24
0
0

Texto

(1)

INSTITUTO FEDERAL DE SERGIPE

COORDENADORIA DE INFORMÁTICA

LÓGICA DE PROGRAMAÇÃO

SOLUÇÃO EXERCÍCIOS DE REPETIÇÃO

9-15-17-30 e 20 com alteração

Repita e crítica

Repetição com Flag

(2)

Estrutura de Repetição - Exercícios da Apostila

Algoritmo-9-a

declare NUM, CONT, VEZES numérico

Escreva “Informe um número”

Leia NUM

VEZES

0

CONT

1

Enquanto CONT <= NUM

Se RESTO(NUM, CONT) = 0 então

VEZES

VEZES + 1

FimSe

CONT

CONT + 1

FimEnquanto

{Verificando se o número é primo ou não}

Se VEZES = 2 então

Escreva “ O número é primo”

senão

Escreva “ O número não é primo”

FimSe

(3)

Algoritmo-9-b

declare NUM, CONT numérico

declare PRIMO lógico

Escreva “Informe um número”

Leia NUM

PRIMO

Verdadeiro

CONT

2

Enquanto CONT <= NUM / 2 {otimização}

Se RESTO(NUM, CONT) = 0 então

PRIMO

Falso

CONT

NUM {Otimização}

FimSe

CONT

CONT + 1

FimEnquanto

{Verificando se o número é primo ou não}

Se PRIMO então

{PRIMO = Verdadeiro}

Escreva “ O número é primo”

senão

Escreva “ O número não é primo”

FimSe

(4)

Algoritmo-9-b-Para

declare NUM, CONT numérico

declare PRIMO lógico

Escreva “Informe um número”

Leia NUM

PRIMO

Verdadeiro

Para CONT

2 até Quociente(NUM, 2) passo 1

Se RESTO(NUM, CONT) = 0 então

PRIMO

Falso

Saia da Repetição {Otimização}

FimSe

FimPara

{Verificando se o número é primo ou não}

Se PRIMO então

{PRIMO = Verdadeiro}

Escreva “ O número é primo”

senão

Escreva “ O número não é primo”

FimSe

(5)

Algoritmo-9-c

declare NUM, CONT numérico

declare PRIMO lógico

Escreva “Informe um número”

Leia NUM

PRIMO

Verdadeiro

CONT

2

Enquanto (CONT <= NUM / 2) e (PRIMO)

PRIMO

RESTO(NUM, CONT) <> 0

CONT

CONT + 1

FimEnquanto

{Verificando se o número é primo ou não}

Se PRIMO então

{PRIMO = Verdadeiro}

Escreva “ O número é primo”

senão

Escreva “ O número não é primo”

FimSe

(6)

{ Algoritmo-9-b} var

Stop : Char; NUM, CONT : integer; PRIMO : boolean; begin writeln('Digite um número'); readln(NUM); PRIMO := True; CONT := 2;

while CONT <= NUM div 2 do begin if NUM mod CONT = 0 then begin PRIMO := False;

CONT := NUM; { otimização} end;

CONT := CONT + 1; end;

if PRIMO then {PRIMO = True}

writeln(NUM, ' eh Primo') else

writeln(NUM, ' naum eh Primo'); readln(Stop);

end.

{ Algoritmo-9-b-Para} var

Stop : Char; NUM, CONT : integer; PRIMO : boolean; begin

writeln('Digite um número'); readln(NUM);

PRIMO := True;

for CONT := 2 To NUM div 2 do {begin desnecessário}

if NUM mod CONT = 0 then begin PRIMO := False;

Break; { Saia da Repetição - otimização} end;

if PRIMO then

writeln(NUM, ' eh Primo') else

writeln(NUM, ' naum eh Primo'); readln(Stop);

end.

{ Algoritmo-9-c} var

Stop : Char; NUM, CONT : integer; PRIMO : boolean; begin writeln('Digite um número'); readln(NUM); PRIMO := True; CONT := 2;

while (CONT <= NUM div 2) and (Primo) do begin PRIMO := NUM mod CONT <> 0;

CONT := CONT + 1; end;

if PRIMO then {PRIMO = True} writeln(NUM, ' eh Primo')

else

writeln(NUM, ' naum eh Primo'); readln(Stop);

(7)

Correção dos exercícios 15 - 17- 28 – 30 - 20

Algoritmo-15

declare IDT, PESO, IDTG, GORDO, IDTM, MAGRO,

CONT numérico

{Inicializando as variáveis que armazenarão o maior e o menor peso}

GORDO

0

MAGRO

10000000000

Para CONT

1 Até 90 Passo 1

Escreva “Informe a identificação e o peso do boi”

Leia IDT, PESO

{Determinando o BOI com maior peso}

Se PESO > GORDO então

GORDO

PESO

IDTG

IDT

FimSe

{Determinando o BOI com menor peso}

Se PESO < MAGRO então

MAGRO

PESO

IDTM

IDT

FimSe

FimPara

{Exibindo resultados}

Escreva “O boi mais Gordo: ”, IDTG, GORDO

Escreva “O boi mais Magro: ”, IDTM, MAGRO

(8)

var

Stop : Char;

IDT, PESO, IDTG, GORDO, IDTM, MAGRO, CONT: integer; begin

GORDO := 0;

MAGRO := 10000000; for CONT := 1 To 5 do begin

writeln('Informe a IDT e o peso do Boi'); readln(IDT, PESO);

{Determinando o BOI com maior peso} if PESO > GORDO then begin

GORDO := PESO; IDTG := IDT; end;

{Determinando o BOI com menor peso} if PESO < MAGRO then begin

MAGRO := PESO; IDTM := IDT; end;

end; { for CONT := 1 To 5} {Exibindo resultados}

writeln('O boi mais Gordo: ', IDTG, ' com o peso de ', GORDO); writeln('O boi mais Magro: ', IDTM, ' com o peso de ',MAGRO); readln(Stop);

(9)

Algoritmo-28

declare CONT, INSC, SALFIXO, TVPB, TVCOR, SALLIQ, INSS,

SALTOTAL,COMISSAOPB,COMISSAOCOR numérico

declare NOME literal

Para CONT

1 Até 20 Passo 1

Escreva “Informe os dados do Vendedor”

Leia INSC, NOME, SALFIXO, TVPB, TVCOR

{Calculando o valor do INSS}

INSS

SALFIXO x 0,08

{Calculando a Comissão para TVs preto e branco vendidas}

Se TVPB >= 20 então

COMISSAOPB

4 x TVPB

senão

COMISSAOPB

2 x TVPB

FimSe

{Calculando a Comissão para TVs coloridas vendidas}

Se TVCOR >= 10 então

COMISSAOCOR

10 x TVCOR

senão

COMISSAOCOR

5 x TVCOR

FimSe

{Calculando o Salário Total}

SALTOTAL

SALFIXO + COMISSAOPB +

COMISSAOCOR – INSS

{Calculando o Salário Líquido}

SALLIQ

SALTOTAL

Se SALTOTAL >= 800 então

SALLIQ

SALTOTAL x 0.95

FimSe

{Exibindo os dados para o Vendedor}

Escreva INSC, SALTOTAL, SALLIQ

FimPara

(10)

Algoritmo-20-Alterado

declare PRECO, NING, LUCRO,

MAIOR, MPRECO, MING

numérico

NING

120

MAIOR

0

Para PRECO

100 até 10 Passo -5

LUCRO

PRECO * NING - 500

{Determando melhor preço}

Se LUCRO > MAIOR então

MAIOR

LUCRO

MING

NING

MPRECO

PRECO

FimSe

Escreva PRECO, NING, 500, LUCRO

NING

NING + 20

FimPara

Escreva “Melhor Lucro: ”, MAIOR

Escreva “Melhor Preço de Venda: ”, MPRECO

Escreva “Conseguindo vender: ”, MING

(11)

Algoritmo-30

declare CONTCLI, SALDOINICIAL, N, VALOR,

SALDOFINAL,CONTMOV numérico

declare TIPO literal

Para CONTCLI

1 Até 50 Passo 1

Escreva “Informe o Saldo Inicial do Cliente”

Leia SALDOINICIAL

Escreva “Informe a quantidade de movimentos"

Leia N

SALDOFINAL

SALDOINICIAL

Para CONTMOV

1 Até N Passo 1

Repita

Escreva “Informe o Tipo do Movimento”

Leia TIPO

Até (TIPO = “D”) ou (TIPO = “C”)

Escreva “informe o Valor do Movimento”

Leia VALOR

{Calculando o Saldo Final}

Caso TIPO de

“C” : SALDOFINAL

SALDOFINAL + VALOR

“D” : SALDOFINAL

SALDOFINAL – VALOR

FimCaso

FimPara

Escreva “O Saldo Final é: ”, SALDOFINAL

FimPara

(12)

var

Stop, TIPO : Char; CONTCLI, N, CONTMOV : integer; VALOR, SALDOINICIAL, SALDOFINAL : real; begin

for CONTCLI := 1 to 5 do begin

writeln('Informe o Saldo Inicial do Cliente - ', CONTCLI); readln(SALDOINICIAL);

writeln('Informe a quantidade de movimentos'); readln(N);

SALDOFINAL := SALDOINICIAL; for CONTMOV := 1 to N do begin repeat

writeln('Informe o Tipo do Movimento - ',CONTMOV); readln(TIPO);

until (TIPO = 'D') or (TIPO = 'C');

writeln('Informe o Valor do Movimento - ', CONTMOV); readln(VALOR);

{Calculando o Saldo Final}

Case TIPO of

'C' : SALDOFINAL := SALDOFINAL + VALOR; 'D' : SALDOFINAL := SALDOFINAL - VALOR; end;

end;

writeln('O Saldo Final = ', SALDOFINAL:6:2); end;

readln(Stop); end.

(13)

Estrutura de Repetição REPITA – Formato

Algoritmo

Repita F {Lê-se: Repita até ser verdade }

...

...

...

Até Condição

V ...

...

FimAlgoritmo

(14)

Exemplos da comparação da estrutura Enquanto com a Repita:

Exemplo-1:

{Criticando o dado SEXO com a estrutura Enquanto}

Escreva “Informe o Sexo”

Leia Sexo

Enquanto (SEXO <> “M”) e (SEXO <> “F”)

Escreva “Informe o Sexo”

Leia Sexo

FimEnquanto

{Criticando o dado SEXO com a estrutura Repita}

Repita

Escreva “Informe o Sexo”

Leia Sexo

Até (SEXO = “M”) ou (SEXO = “F”)

{Criticando o dado SEXO com a estrutura Repita e operador

de persistência EM}

Repita

Escreva “Informe o Sexo”

Leia Sexo

(15)

Exemplo-2:

{Criticando o dado SALARIO com a estrutura Enquanto}

Escreva “Informe o Salário”

Leia SALARIO

Enquanto SALARIO <= 0

Escreva “Informe o Salário”

Leia SALARIO

FimEnquanto

{Criticando o dado SALARIO com a estrutura Repita}

Repita

Escreva “Informe o Salário”

Leia SALARIO

Até SALARIO > 0

repeat .... .... .... until Condição; var SEXO : Char; begin writeln('Informe o Sexo (M-F)'); readln(SEXO);

while (SEXO <> 'M') and (SEXO <> 'F') do begin //not (SEXO IN ['M', 'F']) writeln('Sexo Inválido - Informe o Sexo (M-F)');

readln(SEXO); end; writeln('Sexo Válido'); { repeat writeln('Informe o Sexo (M-F)'); readln(SEXO);

until (SEXO = 'M') or (SEXO = 'F'); //(SEXO IN ['M', 'F']) writeln('Sexo Válido');

} end.

(16)

Algoritmo_Primeiro e Segundo Maiores Valores

declare NUM, PNUM, SNUM, TREPROV, CONT numérico

PNUM

0

Para CONT

1 Até 5 Passo 1

Escreva “Informe o número”

Leia NUM

{Verificando se nº é maior que Primeiro}

Se NUM > PNUM então

SNUM

PNUM

PNUM

NUM

senão

{Verificando se nº é maior que Segundo}

Se NUM > SNUM então

SNUM

NUM

FimSe

FimSe

FimPara

{Exibindo Primeiro e Segundo Maiores números}

Escreva “Primeiro maior valor: ”, PNUM

Escreva “Segundo maior valor: ”, SNUM

(17)

Algoritmo_Qtas ocorrências do 1º e 2º Maiores Valores

declare NUM, PNUM, SNUM, TREPROV, CONT, QTDP, QTDS numérico

PNUM

0

QTDP

0

Para CONT

1 Até 5 Passo 1

Leia NUM

{Verificando se nº é maior que Primeiro}

Se NUM > PNUM então

SNUM

PNUM

PNUM

NUM

QTDS

QTDP

QTDP

1

senão

{Verificando se nº é igual ao Primeiro}

Se NUM = PNUM então

QTDP

QTDP + 1

senão

{Verificando se nº é maior que Segundo}

Se NUM > SNUM então

SNUM

NUM

QTDS

1

senão

{Verificando se nº é = ao Segundo}

Se NUM = SNUM então

QTDS

QTDS + 1

FimSe

FimSe

FimSe

FimSe

FimPara

(18)

Escreva “QTD Primeiro maior valor: ”, QTDP

Escreva “QTD Segundo maior valor: ”, QTDS

(19)

REPETIÇÃO CONTROLADA POR COM FLAG

Algoritmo

declare Variável_Flag

declare Variáveis_Conjunto_Dados

...

Leia Variável_Flag

Enquanto Variável_Flag <> Valor_Flag

Leia Variáveis_Conjunto_Dados

...

...

...

Leia Variável_Flag

FimEnquanto

...

...

FimAlgoritmo

(20)

Algoritmo-17

declare NT1, NT2, NT3, NT4, FREQ, NF, TAPROV,

TREPROV, CONT numérico

declare NOME, SIT literal

TAPROV

0

TREPROV

0

Para CONT

1 Até 5 Passo 1

Escreva “Informe os dados de um aluno”

Leia NOME, NT1, NT2, NT3, NT4, FREQ

{Calculando a média do aluno}

NF

(NT1 + NT2 + NT3 + NT4) / 4

{Verificando a média e a frequência para

determinar sua situação e calcular totais}

Se (NF >= 6) e (FREQ >= 40) então

SIT

“APROVADO”

TAPROV

TAPROV + 1

senão

SIT

“REPROVADO”

TREPROV

TREPROV + 1

FimSe

{Exibindo os dados do aluno}

Escreva NOME, FREQ, NF, SIT

FimPara

{Exibindo totais solicitados}

Escreva “Total de Alunos Aprovados”, TAPROV

Escreva “Total de Alunos Reprovados”, TREPROV

(21)

EXERCÍCIOS COM FLAG

Algoritmo-21

declare COMODO literal

declare AREA, CLASSE, LARG, COMP, POT, NLAMP, TOTLAMP,

TOTPOT numérico

{Inicializando variáveis acumulativas}

TOTLAMP

0

TOTPOT

0

Escreva “Informe o Cômodo - VAZIO sai programa”

Leia COMODO

Enquanto COMODO <> “VAZIO”

Escreva “Informe os dados do Cômodo”

Leia CLASSE, LARG, COMP

AREA

LARG x COMP

{Determinando a potência do cômodo}

Caso CLASSE de

1 : POT

AREA x 15

2 : POT

AREA x 18

3 : POT

AREA x 20

FimCaso

{Calculando o número de lâmpadas do cômodo}

NLAMP

QUOCIENTE(POT, 60)

Se NLAMP <> POT / 60 então

NLAMP

NLAMP + 1

FimSe

Escreva COMODO, AREA, POT, NLAMP

{Calculando os totais}

TOTLAMP

TOTLAMP + NLAMP

TOTPOT

TOTPOT + POT

Escreva “Informe o Cômodo - VAZIO sai programa”

Leia COMODO

FimEnquanto

{Exibindo os totais}

Escreva “Total de Potência da Residência é:”, TOTPOT

Escreva “Total de Lâmpadas para a Residência é:”, TOTLAMP

FimAlgoritmo

(22)
(23)

Algoritmo-27-A

declare INSC, TP1, TP2, TP3, TE1,

TE2, TE3,

MAIOR, DELTA, VENC,

PONTOS1, TOT,

PONTOS2, PONTOS3

numérico

MAIOR

0

Escreva “Informe os três tempos

padrões}

Leia TP1, TP2, TP3

Escreva “Informe a Inscrição -

99999 Sai Prg”

Leia INSC

Enquanto INSC <> 99999

{Lendo os tempos da equipe nas

três etapas}

Leia TE1, TE2, TE3

{Calculando pontos das etapas}

DELTA

ABS(TP1 – TE1)

Se DELTA < 3 então

PONTOS1

100

senão

Se DELTA > 5 então

PONTOS1

70

senão

PONTOS1

80

FimSe

FimSe

DELTA

ABS(TP2 – TE2)

Se DELTA < 3 então

PONTOS2

100

senão

Se DELTA > 5 então

PONTOS2

70

senão

PONTOS2

80

FimSe

FimSe

DELTA

ABS(TP3 – TE3)

Se DELTA < 3 então

PONTOS3

100

senão

Se DELTA > 5 então

PONTOS3

70

senão

PONTOS3

80

FimSe

FimSe

{Calculando total de pontos da

equipe}

TOT

PONTOS1 + PONTOS2

+ PONTOS3

{Determinando a equipe

vencedora}

Se TOT > MAIOR então

MAIOR

TOT

VENC

INSC

FimSe

{Exibindo dados da equipe}

Escreva

INSC, PONTOS1,

PONTOS2, PONTOS3, TOT

Escreva “Informe a Inscrição -

99999 Sai Prg”

Leia INSC

FimEnquanto

Escreva “A equipe vencedora é:”,

(24)

Algoritmo-27-B

declare INSC, TP1, TP2, TP3,

TEQ

,

PONTOS

, TOT

MAIOR, DELTA, VENC,

CONT

numérico

MAIOR

0

Escreva “Informe os três tempos

padrões}

Leia TP1, TP2, TP3

Escreva “Informe a Inscrição -

99999 Sai Prg”

Leia INSC

Enquanto INSC <> 99999

TOT

0

{Lendo os tempos da equipe nas

três etapas}

Para CONT

1 até 3 passo

1

Leia TEQ

Caso CONT de

1 : DELTA

ABS(TP1 –

TEQ)

2 : DELTA

ABS(TP2 –

TEQ)

3 : DELTA

ABS(TP3 –

TEQ)

FimCaso

{Calculando pontos da etapa}

Se DELTA < 3 então

PONTOS

100

senão

Se DELTA > 5 então

PONTOS

70

senão

PONTOS

80

FimSe

FimSe

{Calculando total de pontos da

equipe}

TOT

TOT + PONTOS

Escreva "

Pontos Etapa

",

CONT, "

=

", PONTOS

FimPara

{Determinando a equipe

vencedora}

Se TOT > MAIOR então

MAIOR

TOT

VENC

INSC

FimSe

{Exibindo dados da equipe}

Escreva INSC, TOT

Escreva “Informe a Inscrição -

99999 Sai Prg”

Leia INSC

FimEnquanto

Escreva “A equipe vencedora é:”,

VENC

Referências

Documentos relacionados

Para obter mais informações sobre como selecionar o alto-falante sem fio, em Ajuda, pressione a tecla colorida  Palavras-chave e.. procure

financiamento da instalação do equipamento utilizado e das respectivas despesas de manutenção. 2 - A autorização de instalação pode também ser requerida pelo presidente da

Citations of a reference with no credited author display a short title in title case (headline capitalization), instead of an author name. Quotation marks enclose journal article

No caso do pedido de subsídio ter sido instruído com a fatura ou com a cópia do contrato de locação financeira que demonstrem a efetiva aquisição do veículo elétrico,

Falava que apesar da doença, agora ele se sentia melhor, pois tinha visto que não precisava ser tão radical quanto era.. Ouvia rock e ouvia

Portanto, DOGMATIL deve ser utilizado com cuidado caso você tenha fatores de risco para tromboembolismo (vide “Quais os males que este medicamento pode me causar?”). A sulpirida

Considerando os materiais didáticos fundamentais para as práticas pedagógicas, o presente texto objetiva apresentar pequenos recortes sobre a utilização de

As despesas financeiras abrangem desembolsos com juros sobre empréstimos, líquidos do desconto a valor presente das provisões, atualização de débitos tributários,