Buscar

Algoritmos I Parte 5a

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos I
Algoritmos I - Prof. Mauro Gil
mgil@unicarioca.edu.br
@maurocgil
Algoritmos I
Sub-rotinas – Programação Modularizada
• Sub-rotinas, também chamadas de subprogramas, são blocos de instruções que
realizam tarefas específicas. O código de uma sub-rotina é carregado uma vez e
pode ser executado quantas vezes forem necessárias.
• Como o problema pode ser subdividido em pequenas tarefas, os programas
tendem a ficar menores e mais organizados.
• Os programas, em geral são executados linearmente, uma linha após a outra, até
o fim. Entretanto, quando são utilizados sub-rotinas, é possível a realização de
desvios na execução dos programas. Esses desvios são efetuados quando uma
função é chamada pelo programa principal.
Algoritmos I
• Exemplo:
ALGORITMO
DECLARE sal, aum, novo_sal NUMÉRICO
LEIA sal
aum ← calculo (sal)
novo_sal ← sal + aum
ESCREVA “Novo salário é:”, novo_sal
FIM_ALGORITMO
SUB-ROTINA calculo (sal NUMÉRICO) // passagem de parâmetro por valor
DECLARE perc, valor NUMÉRICO
LEIA perc
valor ← sal * perc / 100
RETORNE valor
FIM_ SUB-ROTINA calculo
Sub-rotinas – Programação Modularizada
Algoritmos I
Sub-rotinas – Programação Modularizada
• Neste exemplo, o programa principal é executado linearmente até a 4ª linha.
Nesse ponto, existe uma chamada à sub-rotina calculo (que recebe como
parâmetro o valor do salário inicial) e o programa principal fica
temporariamente suspenso. A ordem de execução das instruções é desviada
para a oitava linha (SUB-ROTINA), onde começa a sub-rotina calculo. A
execução somente retorna ao programa principal quando RETORNE for
executado. Esse comando também é responsável também por devolver ao programa
principal um valor calculado dentro da sub-rotina.
Algoritmos I
Sub-rotinas – Programação Modularizada
• Outro ponto que precisa ser destacado, que dentro das sub-rotinas pode ocorrer
a declaração de variáveis, chamadas de variáveis locais. Elas recebem esse nome
porque podem ser utilizadas apenas dentro da sub-rotina. Quando a execução
desta chega ao fim, essas variáveis são destruídas e seus conteúdos são
perdidos.
• Variáveis declaradas fora de qualquer sub-rotina são chamadas de variáveis
globais.
• Uma boa prática: não é aconselhado a utilização excessiva de variáveis globais,
por tornar difícil a manutenção e a busca por erros nos programas.
Algoritmos I
Sub-rotinas – Programação Modularizada
• Passagens de parâmetros:
• Passagem por valor = a variável do cabeçalho se comportará como uma variável
local da sub-rotina (podendo não ter o mesmo nome do programa principal).
• Passagem por referência = a a variável do cabeçalho se comportará como uma
variável global.
• A passagem de parâmetros por valor ou por referência depende da sintaxe da
cada linguagem.
Algoritmos I
• Exemplo:
ALGORITMO
DECLARE X, Y NUMÉRICO // variáveis globais
X ← 1
Y ← 2
ESCREVA “VALORES INICIAIS”
ESCREVA “X = ”, X, “ e Y = “, Y
S1 // chamada da sub-rotina S1, sem parâmetros
ESCREVA “VALORES DEPOIS DA EXECUÇÃO DA SUB-ROTINA S1” 
ESCREVA “X = ”, X, “ e Y = “, Y
S2 (X,Y) // chamada da sub-rotina S2, com parâmetros por valor
ESCREVA “VALORES DEPOIS DA EXECUÇÃO DA SUB-ROTINA S2” 
ESCREVA “X = ”, X, “ e Y = “, Y
S3 (X,Y) // chamada da sub-rotina S3, com parâmetros por referência
ESCREVA “VALORES DEPOIS DA EXECUÇÃO DA SUB-ROTINA S3” 
ESCREVA “X = ”, X, “ e Y = “, Y
FIM_ALGORITMO
Sub-rotinas – Programação Modularizada
Algoritmos I
Exemplo: cont...
SUB-ROTINA S1
// sub-rotina sem parâmetros e sem retorno
DECLARE X, Y, Z NUMÉRICO // variáveis locais da sub-rotina S1
X ← 8
Y ← 10
Z ← 5
ESCREVA “VALORES IMPRESSOS DENTRO DA SUB-ROTINA S1” 
ESCREVA “X = ”, X, 
ESCREVA“ Y = “, Y
ESCREVA“ Z = “, Z
FIM_ SUB-ROTINA S1
Sub-rotinas – Programação Modularizada
Algoritmos I
Exemplo: cont...
SUB-ROTINA S2 (X, Y NUMÉRICO )
// sub-rotina com parâmetros por valor e sem retorno
DECLARE Z NUMÉRICO // variável local da sub-rotina S2
X ← X + 2
Y ← Y + 2
Z ← X + Y 
ESCREVA “VALORES IMPRESSOS DENTRO DA SUB-ROTINA S2” 
ESCREVA “X = ”, X, 
ESCREVA“ Y = “, Y
ESCREVA“ Z = “, Z
FIM_ SUB-ROTINA S2
Sub-rotinas – Programação Modularizada
Algoritmos I
Exemplo: cont...
SUB-ROTINA S3 (X, Y NUMÉRICO )
// sub-rotina com parâmetros por referência e sem retorno
DECLARE A NUMÉRICO // variável local da sub-rotina S3
A ← X + Y 
X ← X - 1
Y ← Y - 2
ESCREVA “VALORES IMPRESSOS DENTRO DA SUB-ROTINA S3” 
ESCREVA “X = ”, X, 
ESCREVA“ Y = “, Y
ESCREVA“ A = “, A
FIM_ SUB-ROTINA S3
Sub-rotinas – Programação Modularizada
Algoritmos I
Exercícios (Sub-rotinas)
1- Construa uma solução em pseudocódigo contendo uma sub-rotina que retorne 1 se o número digitado for positivo ou 0
se for negativo
Resp. 
ALGORITMO
DECLARE num, x NUMÉRICO
LEIA num
x ← verifica (num)
SE x = 1
ENTÃO ESCREVA “Número positivo”
SENÃO ESCREVA “Número negativo”
FIM_ALGORITMO
SUB-ROTINA verifica (num NUMÉRICO)
DECLARE res NUMÉRICO 
SE num >= 0
ENTÃO res ← 1
SENÃO res ← 0
RETORNE res
FIM_ SUB-ROTINA verifica
Algoritmos I
Exercícios (Sub-rotinas)
2- Construa uma solução em pseudocódigo contendo uma sub-rotina que receba três números inteiros a, b e c, sendo a
maior do que 1. A sub-rotina deverá somar todos os inteiros entre b e c que sejam divisíveis por a (inclusive b e c ) e
retornar o resultado para ser impresso.
Resp. 
ALGORITMO
DECLARE a, b, c, result NUMÉRICO
REPITA
LEIA a
ATÉ a > 1
LEIA b, c
result← divisores (a, b, c)
ESCREVA “Soma dos valores inteiros = ”, result
FIM_ALGORITMO
Algoritmos I
Exercícios (Sub-rotinas)
2- Construa uma solução em pseudocódigo contendo uma sub-rotina que receba três números inteiros a, b e c, sendo a
maior do que 1. A sub-rotina deverá somar todos os inteiros entre b e c que sejam divisíveis por a (inclusive b e c ) e
retornar o resultado para ser impresso.
Resp. cont...
SUB-ROTINA divisores (a, b, c NUMÉRICO)
DECLARE i, s ,r NUMÉRICO 
s ← 0
PARA i ← b ATÉ c FAÇA
INÍCIO
r ← i mod a
SE r = 0
ENTÃO s ← s + i 
FIM
RETORNE s
FIM_ SUB-ROTINA divisores
Algoritmos I
Exercícios (Sub-rotinas)
3- Construa uma solução que receba um único valor representando segundos. Essa sub-rotina deverá convertê-lo para horas, minutos e
segundos. Todas as variáveis devem ser passadas como parâmetros, não havendo variáveis globais.
Resp. 
ALGORITMO
DECLARE seg NUMÉRICO
LEIA seg
transforma (seg)
FIM_ALGORITMO
SUB-ROTINA transforma (segundos NUMÉRICO)
DECLARE h, m ,s, r NUMÉRICO 
h ← segundos / 3600
r ← segundos mod 3600
m ← r / 60
s ← r mod 60
ESCREVA h, m ,s
FIM_ SUB-ROTINA transforma
Algoritmos I
Seleção de Múltipla Escolha
• Quando um conjunto de valores discretos precisa ser testado a ações diferentes são
associadas a esses valores, estamos diante de uma seleção encadeada homogênea do
tipo se-senão-se. Como essa situação é bastante frequente na construção de
algoritmos que dependem de alternativas, iremos utilizar uma estrutura específicas
para estes casos, a seleção de múltipla escolha.
ESCOLHA X
INÍCIO
CASO V1: c1
CASO V2: c2
CASO V3: c3
FIM
Algoritmos I
Seleção de Múltipla Escolha
• Caso o conteúdo da variável X seja igual ao valor Vn, então o comando cn será
executado; caso contrário, serão inspecionados os outros casos até ser
encontrada uma igualdade ou terminarem os casos.
Algoritmos I
Seleção de Múltipla Escolha
• Exercício:
Construa uma solução em pseudocódigo que
tendo como dados de entrada o preço de um
produto e seu código de origem, mostre o
preço juntode sua procedência. Caso o
código não seja nenhum dos especificados, o
produto deve ser encarado como importado.
Utilize os dados ao lado:
Código 
de 
Origem
Procedência
1 Sul
2 Norte
3 Leste
4 Oeste
5 ou 6 Nordeste
7,8 ou 9 Sudeste
10 até 20 Centro Oeste
25 até 30 Nordeste
Algoritmos I
Seleção de Múltipla Escolha
• Exercício: Resp.
ALGORITMO
DECLARE preco, origem NUMÉRICO
LEIA preco, origem
ESCOLHA origem
INÍCIO
CASO 1: ESCREVA preco, "- produto do Sul"
CASO 2: ESCREVA preco, "- produto do Norte"
CASO 3: ESCREVA preco, "- produto do Leste"
Algoritmos I
Seleção de Múltipla Escolha
• Exercício: Resp.
CASO 4: ESCREVA preco, "- produto do Oeste"
CASO 7, 8, 9: ESCREVA preco, "- produto do Sudeste"
CASO 10..20: ESCREVA preco, "- produto do Centro Oeste"
CASO 5, 6, 25..30: ESCREVA preco, "- produto do Nordeste"
CASO contrário: ESCREVA preco, "- produto importado"
FIM
FIM_ALGORTIMO

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes