Professional Documents
Culture Documents
LGICA DE PROGRAMAO
Orientaes de estudo:
A principal fonte de consulta e estudo dever ser a bibliografia recomendada, este material
deve ser trabalhado como notas de aula.
Bibliografia Bsica
MANZANO, Jos Augusto. Algoritmos - Lgica para Desenvolvimento de Programao. Rio de
Janeiro: rica, 1996.
WIRTH, Niklaus. Algoritmos e estruturas de dados. ETH Zurich: LTC Editora, 1999.
SALVETTI, Dirceu Douglas. Algoritmos. So Paulo: Pearson/Makron Books, 2004.
KERNIGHAN, Brian W. A linguagem de programao. Porto Alegre: Editora Campus Ltda, 1987.
Bibliografia Complementar
CELES, Waldemar, . Estruturas de Dados. Rio de Janeiro: PUC-RIO, 2002.
BROOKSHEAR, J. Glenn. Cincia da Computao Uma viso abrangente. Porto Alegre: Bookman, 2005.
PUGA, Sandra. Lgica de programao e Estrutura de Dados. : Pearson - Prentice Hall, .
SEBESTA, Robert W. Concepts of Programming Languages. : Addison-Wesley, 1996.
SUMRIO
TPICO
CONTEDO
Pgina
03
24
05
25
26
27
28
10
29
10
30
12
31
14
32
Ordenao
18
33
Mtodo da Bolha.
23
34
Busca
27
35
Busca linear
28
36
Busca binria
30
37
35
38
Procedimentos
40
39
40
40
41
41
42
Estruturas de seleo.
- Reviso de comandos (instrues) em portugol (apostila programao
estruturada ou programao modular pag. 2)
- Reviso de operadores lgicos (anexo 01 material do 1 semestre).
- Precedncia de uso dos operadores lgicos.
Operador
.no.
.e.
.ou.
.xou.
EXEMPLOS
b)
((B = 2) .xou. (B > 4)) .e. (B < 7)
02) Efetue a leitura de trs valores inteiros desconhecidos representados pelas variveis
A, B e C. Somar os valores fornecidos e apresentar o resultado somente se maior que
cinco e no for maior ou igual a 100 e maior que cinco.
DA+B+C
Fim
Codificao
programa VERIFICAO_INT_5_100
var
A, B, C, D: real
incio
leia A, B, C
DA+B+C
se .no. (D >= 100) .e. (D > 5) ento
escreva D
fim_se
fim
Tpico 24
CODIFICAO EM LPP
caso <varivel>
seja <opo 1> faa
[ao para condio 1 verdadeira]
seja <opo 2> faa
[ao para condio 2 verdadeira]
seja <opo 3> faa
[ao para condio 3 verdadeira]
seno
[ao para nenhuma condio satisfeita]
fim_caso
TPTICOS 25 E 26
Estrutura de repetio
Tambm conhecida por lao, malha de repetio ou looping a estrutura de
repetio que basicamente consiste em repetir um trecho de cdigo, sem que seja
necessrio repetir a escrita n vezes.
As estruturas de repetio podem ser divididas em duas categorias:
a) Interativa Necessita da ao do usurio para repetir o processo.
b) Iterativa As aes de repetio so automticas.
Condicional Verdadeiro
CODIFICAO
N
Condio
S
Instrues executadas
durante condicional (V)
fim_enquanto
Condicional Falso
CODIFICAO
Condio
N
Instrues executadas
durante condicional (F)
Condicional Verdadeiro
Instrues executadas no
perodo em que a condio
permanecer (V)
CODIFICAO
continua
[instrues executadas no perodo em que a condio permanecer (V)]
enquanto_for (<condio>)
Condio
Condicional Falso
Instrues executadas no
perodo em que a condio
permanecer (F)
CODIFICAO
repita
fim_at_seja (<condio>)
S
Estrutura de repetio com condicional falso
Instrues para
ao 1
lao
Condio
[instrues para ao 1]
saia_caso (<condio>)
Instrues para
ao 2
[instrues para ao 2]
fim_lao (<condio>)
TPICO 27
Estrutura de repetio incondicional (lao incremental)
Estrutura de repetio utilizada apenas laos interativos, o lao de repetio
incondicional utiliza-se no diagrama de blocos o smbolo de preparao preparation,
com as variveis de controle, atribuio dos valores de incio, fim e incremento,
separados por vrgula.
varivelincio, m, incremento
Instrues executadas
durante o ciclo de
contagem da varivel de
controle.
CODIFICAO
Para (<varivel>) de (<incio>) at (<fim>) passo (<incremento>) faa
[instrues executadas no perodo do ciclo de contagem da varivel de controle]
fim_para
Obs.: Entende-se por incremento o valor numrico que ser acrescido ou acrescentado a
funo contador.
TPICOS 28 E 29
Estruturas indexadas: Vetores
Tal estrutura corresponde a sua representao matemtica de uma matriz linha,
), Pode ser representando pela matriz = 5 3 7
exemplo = (5, 3
, 7
Tambm referenciado como arrays unidimensionais a estrutura de dados do tipo
vetor permite o armazenamento do conjunto de elementos de um mesmo tipo, com o
tratamento de matriz de uma dimenso, ou seja, uma coluna e vrias linhas de dados. O
dimensionamento do vetor matriz linha deve ser formado por constantes inteiras e
positivas.
O comando que representa a estrutura de vetor conjunto seguido do intervalo
compreendido entre colchetes.
VARIVEL: conjunto [<dimenso>] de <tipo de dado>
Exemplo 1.1
Pretende-se construir um algoritmo que calcule a mdia aritmtica dos
rendimentos de determinado investimento representados na tabela abaixo.
PERODO
1
2
3
4
5
6
RENDIMENTO EM R$
1250,00
1475,00
1350,00
1250,00
1400,00
1375,00
PERODO
7
8
9
10
11
12
RENDIMENTO EM R$
1300,00
1900,00
1250,00
1500,00
1540,00
1775,00
var
( variveis utilizadas no programa): (tipo da varivel)
PER : conjunto [1..12] de real
10
M[1]
M[2]
M[3]
M[4]
M[5]
M[6]
M[7]
M[8]
M[9]
M[10]
M[11]
M[12]
1250,00
1475,00
1350,00
1250,00
1400,00
1375,00
1300,00
1900,00
1250,00
1500,00
1540,00
1775,00
A[1]
0
A[2]
2
A[3]
4
A[4]
6
A[5]
8
A[6]
10
A[7] A[8]
12
14
I 1, 12, 1
M[I]
MDIA SOMA/12
programa MEDIA_DE_RENDIMENTOS_INVEST01
var
I : inteiro
M : conjunto [1..12] de real
SOMA, MDIA : real
incio
SOMA0
para I de 1 at 8 passo 1 faa
leia M[ I ]
SOMASOMA + M[I]
fim_para
MDIASOMA/12
escreva MDIA
fim
MDIA
PROBLEMA PROPOSTO NO EXEMPLO 1.1
fim
11
TPICO 30
Estruturas indexadas: Matrizes
Semelhantemente ao estudo de vetores as matrizes facilitam o trabalho com
estruturas de dados, entretanto enquanto vetores podem ser descritos como tabelas em
linha (sentido vertical) ou coluna (sentido horizontal), a matriz trabalha duas dimenses
(tabela) com vrias linhas e colunas. Da percebe-se que a quantidade de elementos em
uma matriz exponencialmente maior em relao a um vetor, a fim de facilitar o
processo de soluo lgica utilizando-se de variveis indexadas.
Em uma matriz os elementos so manipulados de forma individual e direta,
assim quando se deseja utilizar um elemento referencia-se por meio dos ndices (linha,
coluna) como segue:
TAB[2,5]
Nome da
varivel
indexada
Elemento
armazenado na linha
2 coluna 5
1
2
3
4
5
Obedecendo a sintaxe.
6
7
VARIVEL
: conjunto [<dimenso1> : <dimenso2>] de <tipo de dado>
8
Onde:
9
VARIVEL: corresponde a varivel indexada.
10
dimenso1: corresponde ao numero de linhas da matriz.
11
dimenso2: corresponde ao nmero de colunas da matriz.
12
tipo de dado: tipo de dados armazenados em uma matriz, que pode ser real,
12
incio
I 1, 12, 1
J 1, 8, 1
TAB[I, J]
programa LEITURA_MATRIZ
var
TAB : conjunto [1..12, 1..8] de real
I, J: inteiro
incio
para I de 1 at 12 passo 1 faa
para J de 1 at 8 passo 1 faa
leia TAB[I, J]
fim_para
fim_para
fim
fim
incio
I 1, 12, 1
J 1, 8, 1
TAB[I, J]
programa ESCRITA_MATRIZ
var
TAB : conjunto [1..12, 1..8] de real
I, J: inteiro
incio
para I de 1 at 12 passo 1 faa
para J de 1 at 8 passo 1 faa
escreva TAB[I, J]
fim_para
fim_para
fim
fim
13
TPICO 31
Operaes com matrizes
Manipulao dos ndices de uma matriz.
A manipulao dos ndices de uma matriz consiste em uma das maneiras de
variar uma matriz (seja vetor ou n dimensional) utilizando-se como ferramenta a lei
de formao da matriz.
Lembrando que na matriz do tipo vetor temos uma dimenso descrita pela
varivel I e no caso do exemplo da matriz bidimensional temos endereo indexado
referenciado por dois ndices I e J.
Exemplos
Registro
1
2
3
4
5
6
7
8
RENDIMENTO
R$ 1560,00
R$ 1480,00
R$ 2300,00
R$ 2450,00
R$ 1700,00
R$ 1340,00
R$ 2300,00
R$ 2450,00
1
2
3
4
5
6
7
8
REND[I]
CAD[I,J]
Exemplo 1
Dada uma matriz A do tipo vetor com 20 elementos numricos reais, deseja-se construir
uma nova matriz do mesmo tipo, obedecendo-se a seguinte lei de formao; Se o valor
do ndice da matriz for impar deve-se multiplicar o dado armazenado por cinco, se o
14
ndice da matriz for par deve-se dividir o dado armazenado por 2. Ao final do processo
deve-se apresentar o contedo da nova matriz.
Sada
procedimentos
entrada
Entendimento.
1.
2.
3.
4.
5.
6.
7.
8.
DIAGRAMA DE BLOCOS
incio
programa CONSTRUO_DE_MATRIZ_B
var
I 1, 20, 1
I, R: inteiro
A[I]
I 1, 20, 1
leia A[I]
RI 2
fim_para
(I div 2)
R<>0
B[I]A[I] /2
S
RI 2*(I div 2)
B[I]A[I]
se (R <> 0) ento
B[I]A[I]*5
seno
B[I]A[I]/2
fim_se
B[I]
fim
fim_para
para I de 1 at 20 passo 1 faa
escreva B[I]
fim_para
fim
15
Exemplo 2
Escrever um programa que leia os elementos de duas matrizes A e B do mesmos tipo e
dimenses (3 linhas e 24 colunas) e construa uma terceira matriz (C) somando os
elementos correspondentes das matrizes A e B.
Sada
procedimentos
entrada
Entendimento.
1.
2.
3.
4.
5.
6.
7.
8.
A
I 1, 3, 1
I 1, 3, 1
J 1, 24, 1
J 1, 24, 1
C[I,J]A[I,J]+B[I,J]
A[I,J]
I 1, 3, 1
I 1, 3, 1
J 1, 24, 1
J 1, 24, 1
C[I,J]
B[I,J]
fim
16
CODIFICAO
programa ADIO_DE_MATRIZES
var
I, J: inteiro
A, B, C: conjunto [1..3,1..24] de real
incio
para I de 1 at 3 passo 1 faa
para J de 1 at 24 passo 1 faa
leia A[I,J]
fim_para
fim_para
para I de 1 at 3 passo 1 faa
para J de 1 at 24 passo 1 faa
leia B[I,J]
fim_para
fim_para
para I de 1 at 3 passo 1 faa
para J de 1 at 24 passo 1 faa
C[I,J]A[I,J]+B[I,J]
fim_para
fim_para
para I de 1 at 3 passo 1 faa
para J de 1 at 24 passo 1 faa
escreva C[I,J]
fim_para
fim_para
fim
17
TPICO 32
Ordenao
Em geral o processo de ordenao consiste em um rearranjo dos elementos que
compe um determinado conjunto de elementos de acordo com critrios estabelecidos
pela necessidade de resolver um problema organizacional. Exemplos de casos em que
os objetos do problema so ordenados podem ser encontrados em cadastros de clientes
listas de telefone ou mesmo controles financeiros cujo a ordenao facilita a consulta,
manipulao e manuteno dos dados armazenados, assim sendo todo conjunto de
dados armazenado sujeito a procura e alterao necessita de conceitos de ordenao.
Ordenar os elementos de uma matriz corresponde ao de organiz-los de
maneira conveniente as necessidades dos problemas computacionais.
Tal organizao podendo ser numrica, alfabtica ou alfanumrica respeitandose a ordem estabelecida na tabela ASCII. Podendo ser crescente ou decrescente
(numrica), ascendente ou descente (alfabticos, alfanumricos e demais caracteres)
sendo que os caracteres alfabticos so classificados primeiramente os maisculos
depois os minsculos como segue a ordem na tabela.
18
44
44
12
12
12
12
06
06
55
55
44
42
42
18
12
12
12
12
55
44
44
42
18
18
42
42
42
55
55
44
42
42
94
94
94
94
94
55
44
44
18
18
18
18
18
94
55
55
06
06
06
06
06
06
94
67
67
67
67
67
67
67
67
94
44
06
06
Mtodo oposto a insero direta que considera em cada passo somente um nico
elemento sucessor da seqncia fonte e todos os elementos do vetor destino para
encontrar o ponto correto de insero, enquanto a seleo direta considera todos os
elementos do vetor fonte para localizar aquele que apresenta a menor chave a ser
utilizado como sendo o prximo elemento da seqncia destino.
19
44
06
06
06
06
06
06
06
55
55
12
12
12
12
12
12
12
12
55
18
18
18
18
18
42
42
42
42
42
42
42
42
94
94
94
94
94
44
44
44
18
18
18
55
55
55
55
55
06
44
44
44
44
94
94
67
67
67
67
67
67
67
67
94
20
Exemplo
44
55
12
SEQNCIA
42 94 18
06
67
94
18
55
06
12
42
67
12
44
94
18
42
55
67
12
18
42
44
55
67
94
22
TPICO 33
Mtodo da bolha (bubblesort)
Mtodo em que a permutao direta entre dois elementos (pares de elementos
adjacentes) pertencentes a um conjunto, sendo repetido n vezes at que todos os
elementos pertencentes ao conjunto sejam ordenados. Tal mtodo de fcil entendimento
demonstra-se til na ordenao de conjuntos pequenos por se tratar de um mtodo lento
comparativamente aos outros mtodos existentes.
Baseado na propriedade distributiva realiza a permutao dos elementos de uma
matriz at que sejam todos ordenados conforme sua a seqncia estabelecida pelos
endereos de cada uma das variveis.
Exemplo:
Dado um conjunto (tabela)
IDADE DOS ELEITORES
Endereo (I)
Idade
1
65
2
50
3
48
4
33
5
18
Os dados esto armazenados na ordem (65, 50, 48, 38, 18) relacionados
respectivamente aos ndices (1, 2, 3, 4, 5).
A[1]65
A[2]50
A[3]48
A[4]33
A[5]18
Exemplo.
1. comparao
A[1]65
A[2]50
A[3]48
A[4]33
A[5]18
A[2]65
A[3]48
A[4]33
A[5]18
23
A[1]50
A[2]65
A[3]48
A[4]33
A[5]18
A[1]48
A[1]33
A[1]18
A[2]65
A[2]65
A[2]65
A[3]50
A[3]50
A[3]50
A[4]33
A[4]48
A[4]48
A[5]18
A[5]18
A[5]33
A[1]18
A[2]33
A[3]48
A[4]50
A[5]65
O mesmo processo ocorre para dados do tipo caractere ou cadeia, visto que eles
obedecem a ordem estabelecida na tabela ASCII. Assim quando comprando um
conjunto composto por estes tipos sabe-se a dimenso ou valor correspondente a sua
ordenao.
Exemplo.
Dado o conjunto (matriz unidimensional)
ser:
1. comparao
A[1]g
A[2]M
A[3]f
A[4]21
A[1]M
A[2]g
A[3]f
A[4]21
A[1]M
A[2]g
A[3]f
A[4]21
A[2]g
A[3]f
A[4]M
24
Exemplo de codificao:
Elaborar um programa que leia os dados de 40 registros, processando a ordenao de
maneiras ascendente e apresentando os ordenados em um relatrio.
DIAGRAMA DE BLOCOS.
incio
I 1, 40, 1
DADO[I]
I 1, 39, 1
J I, 40, 1
N
S
XDADO[I]
DADO[I]DADO[J]
DADO[J]X
I 1, 40, 1
DADO[I]
fim
25
CDIGO
programa DADOS_ORDENADOS
var
I, J: inteiro
DADO: conjunto [1..40] de cadeia
X: cadeia
incio
{trecho de entrada de dados}
para I de 1 at 40 passo 1 faa
leia DADO[I]
fim_para
{Trecho de processamento de ordenao}
para I de 1 at 39 passo 1 faa
para I de I at 40 passo 1 faa
se (DADO[I] > DADO[J]) ento
XDADO[I]
DADO[I]DADO[J]
DADO[J]X
fim_se
fim_para
fim_para
{Trecho de sada com dados ordenados}
para I de 1 at 40 passo 1 faa
escreva DADO[I]
fim_para
fim
26
TPICO 34
Pesquisa
Os processos de busca (pesquisa) correspondem a um dos processos mais
utilizados nas solues computacionais, semelhantemente aos processos de ordenao
existem diversos algoritmos j estruturados j planejados, que atendem uma grande
diversidade de problemas, proporcionando ao idealizador da soluo sua utilizao sem
a necessidade da criao de algum algoritmo em especial.
A hiptese bsica da busca consiste em localizar um determinado dado
armazenado em um endereo de memria fixo em uma coleo de dados.
Busca linear
Busca binrio
Aplicas aos casos em que esto disponveis mais informaes a cerca do dado a
ser localizado e que o vetor apresenta-se previamente ordenado. Possibilitando uma
significativa melhorar da eficincia quanto ao mtodo de busca linear, correspondendo a
log N (logaritmo de N) arredondado para cima at o nmero inteiro mais prximo.
Busca em tabelas
aps a identificao do incio (mtodo KMP) ou fim (mtodo BM) do padro com os
caracteres a prxima comparao ter um nmero substancialmente menor de
comparaes a realizar.
Estudaremos com maior profundidade os algoritmos de Busca Linear (pesquisa
linear) e o mtodo de busca binria (pesquisa binria).
TPICO 35
Pesquisa linear
Consiste em um dos mtodos mais simples de busca, tal processo de busca
compara elemento por elemento at que seja encontrada a varivel buscada ou at que
seja extinta a possibilidade do dado buscado pertencer ao vetor pesquisado. (obs.: por
conveno adota-se a varivel buscada por PESQ.
Este mtodo considerado lento, entretanto eficiente quando se tratando de
conjuntos desordenados.
Exemplo 01 - procedimentos
Dada a matriz bidimensional abaixo, quando pretendido localizar cos, o processo de
busca realizar os seguintes procedimentos.
32
3/2
Tang
-1
90
Sen
0
Tang
1
0
1
0
tang
sen
cos
64
sen
0
1
cos
1
sen
1
cos
9
tang
pesquisado no seja encontrado, deve-se informar por meio de uma mensagem em vdeo
que o nome pesquisa no foi localizado e encerrar o programa.
DIAGRAMA DE BLOCOS
incio
I 1, 20, 1
NOMES[I]
PESQ
I1
F .F.
I<=20
.e.
ACHA = .F.
S
N
S
PESQ = NOME[I]
ACHA .V.
II+1
ACHA = V
PESQ NO
LOCALIZADO
PESQ
LOCALIZADO
fim
29
CDIGO
Programa PESQUISA_NOME
var
I: inteiro
NOMES: cadeia [1..20] de cadeia
ACHA: lgico
PESQ: cadeia
incio
para I de 1 at 20 passo 1 faa
leia NOMES [I]
fim_para
escreva Entre com nome a ser pesquisado
leia PESQ
I 1
F .F.
enquanto (I<=20) .e. (ACHA = .Falso.) faa
se (PESQ = NOME[I]) ento
ACHA .Verdadeiro.
seno
II+1
fim_se
fim_enquanto
se (ACHA = Verdadeiro.) ento
escreva PESQ LOCALIZADO
seno
escreva PESQ NO LOCALIZADO
fim_se
fim
TPICO 36
Pesquisa binria
Mtodo mais eficiente que a pesquisa binria que se exige do vetor que esteja
previamente ordenado, condio que permitira os seguintes procedimentos:
30
Exemplo 01 procedimento
INDICE
1
2
3
4
5
6
7
8
9
NOMES
ALICE
BERNARDO
FERDINANDO
LUIZ
MARCOS
PEDRO
RENATO
TADEU
WILSON
1. PARTE
INDICE
NOME
1
ALICE
2
BERNARDO
3
FERDINANDO
4
LUIZ
ELEMENTO CENTRAL
INDICE
NOME
5
MARCOS
2. PARTE
INDICE
NOME
6
PEDRO
7
RENATO
8
TADEU
9
WILSON
ELEMENTO CENTRAL
INDICE
NOME
3
FERDINANDO
2. PARTE
INDICE
NOME
4
LUIZ
5
MARCOS
31
ELEMENTO CENTRAL
INDICE
NOME
2
BERNARDO
2. PARTE
INDICE
NOME
3
FERDINANDO
32
DIAGRAMA DE BLOCOS
incio
I 1, 20, 1
NOMES[I]
Entre com nome
a ser pesquisado
PESQ
COMEO1
FIM20
ACHA.F.
COMEO=<FINAL
.e. ACHA=.F.
S
MEIO ( COMEO + FINAL ) DIV 2
N
N
COMEO MEIO + 1
PESQ = NOME[MEIO]
ACHA .V.
FINAL MEIO - 1
ACHA = V
PESQ NO
LOCALIZADO
PESQ
LOCALIZADO
fim
33
CDIGO
Programa PESQUISA_BINRIA
var
NOME: conjunto [1..20] de cadeia
I, COMEO, FINAL, MEIO: inteiro
PESQ: cadeia
ACHA: lgico
Incio
para I de 1 at 20 passo 1 faa
leia NOME[I]
fim_para
escreva Entre com nome a ser pesquisado
leia PESQ
COMEO1
FIM20
ACHA.F.
34
TPICO 37
Variveis compostas heterogneas
Os dados combinados em um determinado registro levam o nome de variveis
heterogneas (dados derivados) por se tratar de uma coleo de dados de diferentes tipos
primitivos (real, inteiro, caractere, cadeia e lgico), reunidos em uma mesma estrutura.
Exemplo 01:
Pretende-se combinar os elementos (dados) encontrados em um cadastro de clientes,
que correspondem a:
NOME:
ENDEREO:
CDIGO POSTAL:
CLIENTE PESSOA FISICA OU JURDICA:
COMPRAS DO 1 MS:
COMPRAS DO 2 MS:
COMPRAS DO 3 MS:
Note que existem trs grandes tipos de dados relacionados a um mesmo cliente: (cadeia,
caractere, e real), a combinao dos diferentes tipos de dados em um nico registro corresponde
a um conjunto de dados heterogneo.
Exemplo 02:
tipo
<CAD_CLIENTES> = registro
NOME: cadeia
ENDEREO: cadeia
CDIGO POSTAL: cadeia
FISICO/JURCIO: caractere
COMP01: real
COMP02: real
COMP03: real
fim_regitro
var
CREDITO: cad_clientes
35
Exemplo 03
Exemplo 04
incio
leia CREDITO
escreva CREDITO
fim
TIPOS DE DADOS
cadeia
NOME:
CLIENTE ESPECIAL:
SIM
lgico
NO
cadeia
ENDEREO:
cadeia
CPF:
JAN
FEV
NOVIMENTAO FINANCEIRA
MAR
ABR
MAI
real
JUN
Codificao
tipo
CAD_CLIENTE = registro
NOME, ENDEREO, CPF : cadeia
CLIENTE_ESPECIAL
: lgico
MOV_FINANC
: conjunto [1..6] de real
fim_registro
var
CLIENTE : cad_cliente
I : inteiro
incio
leia CLIENTE.NOME
leia CLIENTE.ENDEREO
leia CLIENTE.CPF
para I de 1 at 6 passo 1 faa
leia CLIENTE.MOV_FINANC[I]
fim_para
{bloco de execues}
escreva CLIENTE.NOME
escreva CLIENTE.ENDEREO
escreva CLIENTE.CPF
para I de 1 at 6 passo 1 faa
escreva CLIENTE.MOV_FINANC[I]
fim_para
37
fim
Exemplo:
Desenvolver um programa que leia uma tabela de cargos e salrios. Em seguida, o programa
deve solicitar que seja fornecido o cdigo de um determinado cargo. Esse cdigo deve estar
entre 1 e 17. O operador do programa pode fazer quantas consultas desejar. Sendo o cdigo
vlido, o programa deve apresentar o cargo e o salrio associado ao cargo selecionado. Caso
seja invlido, deve avisar o operador dessa ocorrncia. Para inserir dados no sistema dos
cdigos de cargo/salrios, observe a tabela seguinte:
TABELA DE CARGOS E SALRIOS
Cd. Cargo
Salrio h.
01
Anal. de cargos e salrios
9,00
02
Auxiliar contbil
6,25
03
Chefe de cobrana
8,04
04
Chefe de expedio
8,58
05
Contador
15,60
06
Gerente regional
22,90
07
Escriturrio
5,00
08
Faxineiro
3,20
09
Gerente administrativo
10,30
10
Gerente comercial
10,40
11
Gerente de pessoal
10,29
12
Gerente de treinamento
10,68
13
Gerente financeiro
10,54
14
Contnuo
2,46
15
Operador de computador
6,05
16
Programador
9,10
17
Secretria
7,31
38
programa TABELA_DE_SALRIOS
tipo
REG_DADOS = registro
CDIGO : inteiro
CARGO : cadeia
SALRIO : real
fim_registro
var
TABELA: conjunto [1..17] de reg_dados
I, CODPESQ : inteiro
RESP: caractere
ACHA: lgico
incio
para I de 1 at 17 passo 1 faa
TABELA [I].CDIGO I
escreva Cdigo .....:, TABELA[I].CDIGO
escreva Cargo .......:, leia TABELA[I].CARGO
escreva Salrio......:, leia TABELA[I].SALRIO
fim_para
RESP SIM
enquanto (RESP = SIM) faa
escreva Qual cdigo 1 a 17
leia CODPESQ
I1
ACHA .Falso.
enquanto (I =< 17) .e. (ACHA = .Falso.) faa
se (CODPESQ = TABELA[I].CDIGO) ento
ACHA .Verdadeiro.
seno
II+1
fim_se
fim_enquanto
se (ACHA = .Verdadeiro.) ento
escreva Cdigo:........, TABELA[I].CDIGO
escreva Cargo: ........., TABELA[I].CARGO
escreva Salrio: ......., TABELA[I].SALRIO
seno
escreva Cargo Inexistente
fim_se
escreva Deseja continuar pesquisa? Responda [S]im ou [N]o:
leia RESP
fim_enquanto
fim
(fonte: Manzano, Algoritmos, pag 205 23 ed.)
39
TPICO 38
Procedimentos
Um mdulo de procedimentos ou sub-rotina corresponde a um bloco de programa que se
referencia por um rtulo permitindo que um programa principal chame suas funes nos
processos a serem realizados, permitindo ao idealizador de soluo tecnolgica modulada em
rotinas e sub-rotinas. Sua diagramao em portugus estruturado e seu diagrama de blocos
obedecem s seguintes sintaxes.
CODIFICAO
programa <rtulo do programa>
procedimento <sub-rotina>
var
<variveis>
incio
<instrues>
fim
incio
<sub_rotina>
fim
Obs: O cdigo da sub-rotina deve ser escrito antes de sua chamada no trecho de chamada da
sub-rotina, assim, a chamada da sub-rotina deve ser representada em portugus estruturado de
forma sublinhada, estando esta forma associado ao indicada do smbolo processo
predefinido.
TPICO 39
Funes
Uma funo corresponde a um bloco de programa semelhante o procedimento (subrotina), contendo inicio, fim e identificada por um rtulo que permite o programa principal
chamar suas execues. A diferena entre procedimento e funo que a funo corresponde a
uma estrutura de abstrao que sua principal caracterstica operacional na capacidade de sempre
retornar um contedo de resposta, ou seja, a funo retorna um valor que retorna no prprio
rtulo da funo podendo ocorrer em operaes de processamento (lgico ou matemtico) e de
sada, enquanto os procedimentos no retornam contedos, a no ser com o uso de
procedimentos de passagem de parmetro por valor ou por referncia.
40
CDIGO
programa CALC_FAT_V3
funo FATORIAL (N : inteiro) : inteiro
var
I, FAT : inteiro
incio
FAT 1
para I de 1 at N passo 1 faa
FAT FAT * I
fim_para
FATORIAL FAT
fim
var
LIMITE : inteiro
incio
escreva Qual fatorial:
leia LIMITE
escreva FATORIAL(LIMITE)
fim
Obs.: Por se tratar de uma estrutura que retorna um valor fundamental que seja indicado o tipo
de dado da funo.
TPICO 40
Passagens de parmetros
O processo de passagem de parmetros permite estabelecer uma linha de comunicao
entre os contedos dos trechos de sub-rotinas (parmetros/funes), e dos trechos de programa
que chamam essas sub-rotinas. Tal comunicao que ocorre entre o trecho de programa
chamador e o trecho de programa chamado, podendo o parmetro ser considerado real (quando
declarado no trecho do programa que chama a sub-rotina) ou formal (quando declarado no
trecho da sub-rotina). Tais processos de passagem de parmetros chamam-se:
CODIFICAO
programa CALC_FAT_V1
procedimento FATORIAL (N : inteiro)
var
I, FAT: inteiro
incio
FAT 1
para I de 1 at N passo 1 faa
FAT FAT * I
fim_para
escreva FAT
fim
var
LIMITE : inteiro
incio
escreva Qual fatorial: leia LIMITE
FATORIAL (LIMITE)
fim
TPICO 41
42
CODIFICAO
programa CALC_FAT_V2
procedimento FATORIAL (N : inteiro; var FAT: inteiro)
var
I: inteiro
incio
para I de 1 at N passo 1 faa
FAT FAT * I
fim_para
fim
var
LIMITE, RESP : inteiro
incio
RESP1
escreva Qual fatorial:
leia LIMITE
FATORIAL (LIMITE, RESP)
escreva RESP
fim
43