• 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

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,

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

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

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

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