Você está na página 1de 19

UNIVERSIDADE LUTERANA DO BRASIL

CENTRO DE CIÊNCIAS NATURAIS E EXATAS


CURSO DE INFORMÁTICA

APOSTILA OFICIAL DA DISCIPLINA DE

LÓGICA DE
PROGRAMAÇÃO

Prof.: ALEXANDRE BERG


Profª.: JOICE PAVEK FIGUEIRÓ

Colaboração: MARCO MARCHIORI


TANISI PEREIRA DE CARVALHO

Sumário

1 ALGORITMO......................................................................................................................................................................3

2 TIPOS PRIMITIVOS DE DADOS....................................................................................................................................5

3 EXPRESSÕES.....................................................................................................................................................................5

4 VARIÁVEIS DE MEMÓRIA.............................................................................................................................................7

5 COMANDO DE ATRIBUIÇÃO........................................................................................................................................8

6 COMANDOS DE ENTRADA E SAÍDA...........................................................................................................................8

7 ESTRUTURAS DE UM ALGORITMO...........................................................................................................................9
7.1 ALGORITMOS SEQÜENCIAIS........................................................................................................................... 9
7.2 ALGORITMOS COM SELEÇÃO....................................................................................................................... 10
7.3 ALGORITMOS COM REPETIÇÃO................................................................................................................... 13
8 SUBALGORITMOS...........................................................................................................................................................16

9 VARIÁVEIS COMPOSTAS HETEROGÊNEAS - REGISTROS................................................................................17

10 VARIÁVEIS COMPOSTAS HOMOGÊNEAS............................................................................................................18


10.1 VETORES........................................................................................................................................................ 18
10.2 MATRIZES...................................................................................................................................................... 19

ULBRA - Informática - Lógica de Programação 2


1 ALGORITMO

Um computador é uma máquina manipuladora de informação, que funciona seguindo instruções de um


programa, o qual está armazenado dentro do computador. O computador manipula a informação sem
necessitar da intervenção humana, sendo dessa forma automático. Durante o seu funcionamento ele segue
um programa que é um conjunto de instruções bem definidas que especificam exatamente o que tem de ser
feito. Este conjunto de instruções é caracterizado matematicamente como um algoritmo. Os algoritmos foram
estudados muito antes do aparecimento dos computadores modernos, no século IX por um matemático árabe
de sobrenome Al-Khowarizmi (gerando o nome algoritmo), que desenvolveu um conjunto de regras para
efetuar operações aritméticas com números decimais. Assim sendo, um programa de computador é um
algoritmo escrito numa linguagem que é entendida pelo computador, chamada de linguagem de programação.

1.1 Conceitos para algoritmo:

" Algoritmo é um conjunto finito de regras, bem definidas, que nos levam à
solução de um problema em um tempo finito."

" Algoritmo é a descrição de um conjunto de ações que, obedecidas,


resultam numa sucessão finita de passos, atingindo o objetivo."

Um algoritmo está sempre associado a um dado objetivo, ou seja, com a solução de um dado problema.
A execução das instruções do algoritmo garante que o seu objetivo é atingido. A descrição das seqüências de
ações para atingir objetivos tem um papel fundamental na nossa vida quotidiana e está relacionada com a
nossa facilidade de comunicar. Estamos constantemente transmitindo ou seguindo seqüências de instruções
em todas tarefas que executamos, em um supermercado, banco, escola, etc. Essas regras muitas vezes
existem de forma organizada como em uma receita culinária, instruções de montagem de um objeto e uso de
uma máquina fotográfica sofisticada.

Um algoritmo não é mais do que uma descrição da seqüência de passos a seguir para atingir um
determinado objetivo. No entanto, nem todas as seqüências de passos para atingir um determinado objetivo
podem ser consideradas um algoritmo, pois para que se tenha um algoritmo, é preciso:

a) um número finito de passos;


b) que cada passo esteja precisamente definido, sem possíveis ambigüidades;
c) que existam zero ou mais entradas;
d) que existam uma ou mais saídas;
e) que exista uma condição de fim, sempre atingida em tempo finito, para quaisquer entradas.

1.2 Algoritmos Naturais

Algoritmos naturais são algoritmos usados no nosso dia-a-dia, descritos em linguagem natural, como por exemplo,
uma receita culinária, a troca de um pneu furado ou a troca de uma lâmpada.

Além dos que usamos no nosso dia-a-dia, os algoritmos são muito usados para a especificação de tarefas que
devem ser repetidas sempre da mesma maneira. Para automatizar uma tarefa, é fundamental descrever seus passos de
forma detalhada e clara, para que qualquer um que venha a executá-la, saiba exatamente o que fazer. Assim, se uma
indústria precisa que uma tarefa seja automatizada, deve descrevê-la através de um algoritmo. Este algoritmo poderá ser
lido por um operário ou transformado em programa para uma máquina.

Para programar computadores são necessários, também, algoritmos que, traduzidos para a linguagem de
programação do computador, farão com que este execute as tarefas desejadas.

Existem várias formas de se representar um algoritmo. Pode-se escrevê-lo através da linguagem natural que
usamos no dia-a-dia. Esta maneira, porém, pode levar a muitas ambigüidades, como na instrução "Afrouxar ligeiramente
as porcas". Uns poderão afrouxar mais e outros menos.

ULBRA - Informática - Lógica de Programação 3


Outra forma de representar os algoritmos são os fluxogramas convencionais, que usam formas geométricas
diferentes para as diversas ações. Este método é bastante popular pela sua facilidade de compreensão, mas é um pouco
limitado, preocupando-se muito com detalhes de nível físico da implementação do algoritmo. Outros tipos de
fluxogramas mais modernos foram criados, mas não obtiveram a mesma popularidade.

A terceira forma chama-se de pseudocódigo ou metalinguagem. Esta forma de representação de um algoritmo


assemelha-se muito à forma com que os programas são escritos e consiste na descrição dos passos do algoritmo através
de frases construídas sob uma sintaxe rigorosamente definida. Assim, consegue-se uma descrição do algoritmo livre de
ambigüidades e com uma estrutura bastante flexível e completa, onde todos os elementos estão representados.

1.3 Elementos de um Algoritmo:

a) seqüência;
b) seleção;
c) repetição condicional;
d) repetição contada.

1.4 Método para construção de algoritmos:

A construção de um algoritmo é um procedimento bastante particular de cada pessoa, pois envolve o


raciocínio de cada indivíduo, suas experiências anteriores, seus hábitos e sua criatividade. O mesmo problema
apresentado a um grupo de pessoas, provavelmente terá soluções completamente diversas, apesar de todas
funcionarem.

Mesmo assim, há algumas dicas que podem ajudar na organização do raciocínio no momento da
elaboração de um algoritmo:

a) Ler atentamente o enunciado;


b) Retirar do enunciado a relação das entradas de dados;
c) Retirar do enunciado a relação das saídas de dados;
d) Determinar o que deve ser feito para transformar as entradas determinadas nas
saídas especificadas;
e) Construir o algoritmo;
f) Testar (executar) o algoritmo.

1.5 Sintaxe e Semântica:

A sintaxe de uma linguagem é o conjunto de regras que definem quais as relações válidas entre os
componentes da linguagem, porém não diz nada quanto ao significado de uma frase. Em uma linguagem
natural a sintaxe é conhecida como gramática. Em uma linguagem de programação também se utiliza uma
gramática formal na definição de símbolos válidos e conjuntos de regras, denominadas regras de produção,
que descrevem a estrutura dos vários componentes da linguagem.
A gramática mais conhecida e utilizada para descrever uma linguagem de programação é a BNF -
Backus-Naur Form - inventada por John Backus e Peter Naur, com sua primeira utilização significativa na
definição da sintaxe da linguagem Algol 60.
A semântica de uma linguagem define qual o significado de cada frase da linguagem. A semântica
nada diz quanto ao processo de geração das frases da linguagem.
Assim sendo, um programa pode apresentar dois tipos distintos de erros de natureza sintática e de
natureza semântica. Os erros sintáticos resultam do fato do programador não ter escrito as instruções do seu
programa corretamente de acordo com as regras da gramática da linguagem de programação utilizada. Os
erros semânticos (ou erros de lógica) resultam do fato do programador não ter expressado corretamente a
seqüência de ações a ser executada.

ULBRA - Informática - Lógica de Programação 4


2 TIPOS PRIMITIVOS DE DADOS

A elaboração de qualquer algoritmo seria impossível se desconsiderasse as estruturas de dados


envolvidas, pois todo o trabalho do computador está baseado na manipulação das informações contidas na sua
memória. Além das instruções, ficam armazenados na memória os dados sobre os quais o computador deve
atuar.

As informações tratadas em um algoritmo podem ser classificadas em dois tipos:

a) CONSTANTES - informações que não sofrem alterações com o decorrer do tempo. As informações
constantes do tipo CARACTER devem ser representadas entre aspas. Ex: ‘Angela’, 5, Falso, ‘#OI!’,
etc.
b) VARIÁVEIS - informações que têm a possibilidade de serem alteradas em algum instante no decorrer
do tempo. Ex: temperatura, índice da inflação, alíquotas do imposto, comprimento, altura, peso, etc.

Os tipos básicos de dados manipulados pelos computadores são os seguintes:

a) INTEIRO - toda informação numérica que pertença ao conjunto dos números inteiros relativos
(negativos, nulo, positivos);
b) REAL - toda a informação numérica que pertença ao conjunto dos números reais (negativos,
positivos, nulo);
c) CARACTER - toda a informação composta por um caracter alfanumérico (0..9 / A..Z / a..z) e/ou um
caractere especial (#, /, $, %, *, ?, ~, >, !, @, ...). OBS.: o espaço é considerado caracter especial;
d) LÓGICO: toda a informação que pode apenas assumir duas situações (biestável, ou seja, dois
estados). Ex: verdadeiro ou falso, aberto ou fechado.
e) CADEIA: toda a informação composta por uma seqüência de caracteres alfanuméricos e/ou
especiais.

Além dos tipos mencionados acima, existe um outro tipo de dado chamado ponteiro, que ao invés de
representar um tipo de informação, representará um endereço de memória que armazenará uma variável de
um tipo básico.

3 EXPRESSÕES

Expressões, no sentido matemático, são representações simbólicas de seqüências de operações a


serem feitas sobre determinados operandos, visando a obtenção de um resultado.

Necessitam-se de dois tipos de expressões para a elaboração de algoritmos: expressões aritméticas e


expressões lógicas.

3.1 EXPRESSÕES ARITMÉTICAS

Expressões aritméticas são aquelas cujos operadores são aritméticos e cujos operandos são constantes
e/ou variáveis do tipo numérico (inteiro ou real).

3.1.1 Operadores Aritméticos

soma + subtração -
divisão / multiplicação *
EXEMPLOS: quociente da divisão inteira div resto da divisão inteira mod 10 div 3 = 3
10 mod 3 = 1
3 div 5 = 0
25 div 5 = 5 25 mod 5 = 0 3 mod 5 = 3

3.1.2 Precedência Entre os Operadores:


ULBRA - Informática - Lógica de Programação 5
parênteses mais internos
funções matemáticas
* / div mod
+ -

Os operadores de mesma precedência na tabela são resolvidos da esquerda para a direita, na ordem
que aparecerem na expressão.

3.2 EXPRESSÕES LÓGICAS

3.2.1 Definição:

São aquelas cujos operadores são lógicos e/ou relacionais e cujos operandos são relações e/ou
constantes e/ou variáveis de tipo lógico. O resultado de uma expressão lógica sempre é uma constante lógica
(F - falso ou V - verdadeiro).

3.2.2 Operações Relacionais:

= igual <> diferente


> maior >= maior ou igual
< menor <= menor ou igual

EXEMPLOS: 3 > 5  falso


3*6 = 18  verdadeiro

3.2.3 Operadores Lógicos:

e ou não

TABELAS VERDADE

OPERADOR E OPERADOR OU OPERADOR NÃO


A B A e B A B A ou B A não A
V V V V V V V F
V F F V F V F V
F V F F V V
F F F F F F

EXEMPLOS:
a) 2 < 5 e 15 / 3 = 5
b) 2 < 5 ou 15 / 3 = 5
c) F ou 20 div 18 / 3 <> 18 /3 div 20
d) Não V e 32 / 3 < 15 - 35 mod 7

ULBRA - Informática - Lógica de Programação 6


3.2.4 Prioridades:

 entre operadores lógicos:  entre todos os operadores:

Não parênteses mais internos


e funções matemáticas
ou não
* / div mod e
+ - ou
operadores relacionais

Note-se porém que em algumas linguagens de programação os operadores And e Or podem servir tanto como
operadores aritméticos quanto operadores lógicos.

4 VARIÁVEIS DE MEMÓRIA

Em programas computacionais, as informações variáveis são guardadas em dispositivos eletrônicos


chamados de memória. Pode-se imaginar essa memória como sendo um armário repleto de gavetas, no qual
as gavetas seriam os locais físicos responsáveis por armazenar objetos. Assim, os objetos seriam as
informações e as gavetas, as variáveis. Como nessa memória poderão existir inúmeras variáveis, precisamos
diferenciá-las, através das seguintes características:

 nome, que a diferencia das demais;


 tipo de dado associado, que indica o tipo de informação que poderá ser armazenada na variável;
 conteúdo, que é o dado guardado na variável;
 endereço, que a localiza na memória.

endereço nome
tipo
conteúdo

OBSERVAÇÕES:

1. O nome de uma variável é único em um algoritmo;


2. O conteúdo de uma variável deverá ser um dado do tipo usado na sua criação;
3. O conteúdo de uma variável é SUBSTITUÍDO por outro conteúdo que lhe venha a ser atribuído;
4. O uso do nome de uma variável em uma expressão significa o uso do seu conteúdo (naquele momento)
dentro da expressão;
5. O uso de um conteúdo de variável em uma expressão não modifica o seu valor.

4.1 Declaração de Variáveis:

Variáveis
<nome da variável> : <tipo primitivo de dado>
ou
<lista de variáveis> : <tipo primitivo de dados>

EXEMPLO:
Variáveis
idade : inteiro
salário, inflação : real
opção: caracter
alpha : lógico
nome, endereço : cadeia

ULBRA - Informática - Lógica de Programação 7


5 COMANDO DE ATRIBUIÇÃO

Quando necessita-se colocar um valor em uma variável tem-se duas formas: atribuindo-se diretamente um
valor a ela ou através de um comando de entrada de dados. No caso de atribuição direta utiliza-se a seguinte
sintaxe:

<variável>  <expressão>

 O valor final da expressão deve ser do mesmo tipo de variável;


 Uma seqüência de atribuições faz com que o conteúdo da variável se modifique.

EXEMPLO:
A B
B5
A  15
A  32
A  A+4
B  A-B

6 COMANDOS DE ENTRADA E SAÍDA

Como visto anteriormente a outra forma de colocar-se um valor em uma variável é através de um
comando de entrada de dados. Neste caso utiliza-se a seguinte sintaxe:

Entrada: ler (< lista de variáveis>)

Saída: escrever (<lista de variáveis>)


ou
escrever (<lista de variáveis>,<constantes caracteres>)

Ex: ler (A)


ler (X,Y,Z)
escrever (media)
escrever (‘A média do aluno é:’, media)

EXEMPLOS:

1) Mostre o desenvolvimento (teste de mesa) do valor das variáveis dos algoritmos abaixo e, também, mostre
o que será escrito a cada comando ESCREVER. (Usar duas casas decimais).

a)Variáveis
A,B,C : inteiro
K,R : real

Início
A  15
B  A  10
R  B/ A
C  B
K  (10  6)
A  A  3*B
Fim

b)
ULBRA - Informática - Lógica de Programação 8
Variáveis
X,Y : inteiro (X=3 Y=10)
Z : real

Inicio
ler(X)
escrever(‘X ao cubo = ‘,X3)
ler(Y)
escrever(X+Y)
Z Y/X
escrever(Z)
Y Z - 0,33
escrever(Y)
Y Y+1
X (Y+X) mod 2
escrever(X)
Fim

7 ESTRUTURAS DE UM ALGORITMO

Através da combinação dos elementos básicos de controle do fluxo de execução (seqüência, seleção e
repetição), pode-se criar algoritmos para a solução de problemas.
O esqueleto de um algoritmo segue a seguinte estrutura:

Algoritmo <nome do algoritmo>


Variáveis
<declaração de variáveis>
Início
<comandos>
Fim

7.1 ALGORITMOS SEQÜENCIAIS

Uma das estruturas de algoritmo é a seqüencial, que consiste de comandos de atribuição e entrada e
saída encadeados em uma seqüência linear de cima para baixo e da esquerda para a direita, isto é, na mesma
ordem em que foram escritas.

EXEMPLOS:

1) Escreva um algoritmo que leia as 3 notas de um aluno e calcule a média aritmética.

Algoritmo Notas
Variáveis
N1,N2,N3,MA : real
Início
ler (N1,N2,N3)
MA  (N1+N2+N3)/3
escrever(‘A média aritmética do aluno é:’, MA)
Fim

ULBRA - Informática - Lógica de Programação 9


2) Escreva um algoritmo que calcule as raízes de uma equação de 2º grau, a partir dos coeficientes A,B e C
fornecidos pelo usuário.

Algoritmo Equação
Variáveis
A,B,C,X1,X2 : real
Início
ler(A, B, C)

X1   - B + B2  4 * A * C  / 2 * A 

X2   - B - B2  4 * A * C  / 2 * A 
escrever(`As raizes sao:`, X1, X2)
Fim

7.2 ALGORITMOS COM SELEÇÃO

7.2.1 Seleção Simples:

se <condição> se <condição>
(V) então <comando único> (V) então <bloco de comandos>
(F) próximo comando (F) próximo comando

condição V
Bloco de Comandos:
F comando Início
<comando 1>
<comando 2>
:
próx. com. <comando n>
Fim

EXEMPLOS:

a) A5
se A = B
então X  A2
B  A + 1 (próximo comando)

b) ler (X)
se X  Y e K < P
então Início
ler (A) BLOCO
X  A * 10 DE
escrever (X) COMANDOS
Fim
K  Y * A

ULBRA - Informática - Lógica de Programação 10


7.2.2 Seleção Composta:

Uma estrutura de seleção composta verificará uma condição e executará um determinado grupo de
ações, no caso da expressão lógica ser satisfeita, ou executará outro grupo de ações, no caso da expressão
lógica não ser satisfeita.

se <condição>
então <comando ou bloco de comandos>
senão <comando ou bloco de comandos>

condição

V
F comando

comando

Próximos
comandos

EXEMPLOS:

a) se M  8
então escrever (‘APROVADO’)

se M  8
então escrever (‘APROVADO’)
senão escrever (‘REPROVADO’)

se M < 8
então escrever (‘REPROVADO’)

b) P  K
se P > 10 e P < 25
então X  P * 3
senão K  X * 4
L  P - K + X

ULBRA - Informática - Lógica de Programação 11


c) ler (K)
se K  5 e K  10
então Início
K  A + B
C  K3
Fim
senão Início
P  K * X
A  P
escrever (A, P)
Fim
escrever (K)

7.2.3 Seleção Encadeada:

Uma estrutura de seleção encadeada reunirá uma condição sendo verificada quando da satisfação de
uma condição anterior, e executará um grupo de ações determinadas, no caso da última expressão lógica ser
satisfeita.

se <condição 1>
então se <condição 2>
então <comando> (condição 1 = V e condição 2 = V)
senão <comando> (condição 1 = V e condição 2 = F)
senão se <condição 3>
então <comando> (condição 1 = F e condição 3 = V)
senão <comando> (condição 1 = F e condição 3 = F)

7.2.4 Seleção Utilizando Caso-seja

O comando CASO é uma variação do comando SE, ENTÃO e SENÃO. Aqui, para uma determinada
expressão, são avaliadas uma ou mais condições e executados os comandos correspondentes à primeira
condição satisfeita. Após a execução dos comandos da condição, o comando é encerrado, sendo então
executada a próxima instrução do algoritmo, como mostrada abaixo:

Caso <expressão> seja


<condição1> : <comando1>
<condição2> : <comando2>
:
<condição n> : <comando n>
senão <comandos>
Fim

onde: <expressão> é uma expressão aritmética ou lógica.


<condição> consiste de uma ou mais constantes ou intervalos, separados por vírgula.
<comando> pode ser um comando único ou um bloco de comandos.
intervalo: intervalo de valores tipo: 10..15, ‘a’..’z’.

OBSERVAÇÕES:
 Os tipos existentes nas condições devem ser do mesmo tipo da expressão;
 Se houver mais de uma condição satisfeita, somente os comandos da primeira que for encontrada serão
executados; e
 A opção SENÃO é facultativa. Os comandos ali existentes somente serão executados se nenhuma das
condições acima for satisfeita. Se não houver a opção SENÃO e nenhuma condição for satisfeita, o
comando CASO será encerrado e será executado o comando seguinte do algoritmo.
EXEMPLOS:

ULBRA - Informática - Lógica de Programação 12


1) ler(n)
caso n seja
1..10 : escrever(‘intervalo 1’)
11..30 : escrever(‘intervalo 2’)
senão escrever(‘nenhum intervalo’)
fim

2) caso x+y-36 seja


54,32,20..24 : início
ler(k)
x  x+k
fim
102..165,170 : y  x2
senão início
p  x+y*44
escrever(p)
fim
fim

7.3 ALGORITMOS COM REPETIÇÃO

7.3.1 Repetição Condicional:

7.3.1.1 Comando enquanto-faça

enquanto <condição>
faça <comando ou bloco de comandos>

comando

enquanto

V
condição

comandos
F

comando

ULBRA - Informática - Lógica de Programação 13


7.3.1.2 Comando repetir-até

repetir
<comandos>
até <condição>

comando

comandos

repetir

F
condição

comando

EXEMPLOS:

enquanto repetir

1) : :
X  10 X  10
Y  5 Y  5
enquanto X > Y faça repetir
Y  Y + 1 Y  Y + 1
escrever (X,Y) até Y = X
: escrever (X,Y)
: :

enquanto repetir
2) : :
N  0 S  0
ler (A) A  0
S  0 repetir
enquanto A > 0 faça S  S + A
início ler (A)
S  S + A até A  0
N  N + 1 :
ler (A)
fim
:

ULBRA - Informática - Lógica de Programação 14


ACUMULADORES CONTADORES

São variáveis que acumulam a soma de outras Acumulam somas constantes.


variáveis. Crescem de valor em intervalos constantes.
Crescem de valor em intervalos variáveis.
N N + 1
S S + A N N + 2
S S + (X * Y) N N + 100

7.3.2 Repetição Contada:

7.3.2.1 COMANDO ‘para faça’

para VAR  vi até vf faça


<comando ou bloco de comandos>

VAR -> é uma variável inteira chamada variável de controle.


vi -> valor inicial da variável de controle.
vf -> valor final da variável de controle.

No início da execução o valor inicial (vi) é atribuído à variável de controle (VAR). A seguir, o valor de
VAR é comparado ao valor final (vf). Se VAR for maior que vf, então o comando para é encerrado. Por outro
lado, se VAR for menor ou igual a vf, então os comandos do laço são executados. Da segunda execução em
diante, a variável de controle é incrementada de um (1) e novamente comparada a vf.

OBSERVAÇÕES:

1. VAR é necessariamente uma variável inteira, uma vez que seu valor é alterado a cada iteração (laço).
2. vi e vf podem ser constantes ou variáveis, desde que do mesmo tipo de VAR (inteiro).
3. As variáveis vi e vf, bem como a variável de controle VAR, não podem ser modificadas dentro do laço.
4. vi é sempre menor ou igual a vf.
5. O incremento da variável de controle sempre será 1.

EXEMPLOS:

1)

ENQUANTO PARA

C1 S  0
enquanto C  10 faça para C 1 até 10 faça
início início
S  S + C S  S + C
C  C + 1 fim
Fim

OBS: para C  0 até 4 faça (5 repetições)


para C  1 até 5 faça (5 repetições)
para C  0 até 100 faça (101 repetições)
para C  1 até 100 faça (100 repetições)

ULBRA - Informática - Lógica de Programação 15


2) Faça três algoritmos, usando as três estruturas de repetição, que leia 50 valores inteiros fornecidos pelo
usuário e calcule o produtório.

ENQUANTO REPETIR PARA

Algoritmo Produtório1 Algoritmo Produtório1 Algoritmo Produtório1


Var Var Var
NUM, CONT, PROD : inteiros NUM, CONT, PROD : inteiros NUM, CONT, PROD : inteiros

Início Início Início


CONT  0 CONT  0 PROD  1
PROD  1 PROD  1 para CONT  1 até 50 faça
enquanto CONT < 50 faça repetir Início
Início ler (NUM) ler (NUM)
ler (NUM) PROD  PROD * NUM PROD  PROD * NUM
CONT  CONT + 1 CONT  CONT + 1 Fim
PROD  PROD * NUM até CONT = 50 escrever (PROD)
Fim escrever (PROD) Fim
escrever (PROD) Fim
Fim

3) Faça três algoritmos, usando as três estruturas de repetição, que leia diversos valores inteiros fornecidos
pelo usuário e calcule o produtório. Encerre quando o valor digitado for igual a zero.

ENQUANTO REPETIR PARA

Algoritmo Produtório2 Algoritmo Produtório2 Algoritmo Produtório2

Var Var Var


NUM, PROD : inteiros NUM, PROD : inteiros NUM, PROD : inteiros

Início Início Início


PROD  1 PROD  1 PROD  1
ler (NUM) ler (NUM) para i  1 até faça
enquanto NUM  0 faça repetir Início
Início PROD  PROD * NUM ler (NUM)
PROD  PROD * NUM ler (NUM) PROD  PROD * NUM
ler (NUM) até NUM = 0 Fim
Fim escrever (PROD) Fim
escrever (PROD) Fim
Fim

É impossível !

8 SUBALGORITMOS

Muitos problemas de solução mais ou menos complexa podem ser divididos, sucessivamente em problemas
menores e de lógica mais fácil. Em vez de escrever-se um algoritmo grande, escreve-se vários algoritmos
menores, os quais resolvem o problema proposto em conjunto.
Aos trechos de algoritmo que efetuam um ou mais cálculos determinados denomina-se de subalgoritmo e os
valores fornecidos aos subalgoritmos são denominados de argumentos.
O uso de variáveis como argumentos permite escrever uma solução geral para um determinado conjunto de
problemas.

ULBRA - Informática - Lógica de Programação 16


9 VARIÁVEIS COMPOSTAS HETEROGÊNEAS - REGISTROS

Registro é uma das principais estruturas de dados. Com ele pode-se agrupar em uma mesma estrutura
de dados, informações de diferentes tipos. Por exemplo, podemos ter a ficha de inscrição em um curso
modelada através de um registro:

Nome: ..................................................
Endereço: ..................................................
Telefone: ..................................................
Sexo: ..................................................
Idade: ..................................................
Código do curso: ..................................................

Cada uma das informações de um registro é chamada de campo. Assim, um registro é formado por
diversos campos de tipos diferentes.

9.1 Declaração

Tipo

<nome do tipo registro> = registro


<nome do campo> : <tipo>
<nome do campo> : <tipo>
<nome do campo> : <tipo>
...
fim

Variáveis

<nome da variável> : <nome do tipo registro>

Para declarar um registro, é necessário antes declarar um tipo de dado registro. Assim, depois da
palavra reservada tipo, segue o nome do novo tipo de dado, seguido da descrição do registro. Cada um dos
campos do registro pode ser de um tipo primitivo, ou pode ser de um tipo definido pelo usuário anteriormente
(dentro da mesma declaração de tipos).

Depois de declarado o tipo registro, é necessário declarar uma variável desse tipo. Para isso, usa-se a
área de declaração de variáveis, como é mostrado acima.

Exemplo:

tipo
regficha = registro
nome : caracter
endereço : caracter
telefone: inteiro
sexo : caracter
idade, codcurso : inteiro
fim

variáveis
ficha : regficha

No exemplo acima, é declarado um tipo registro chamado regficha, contendo os campos nome,
endereço, telefone, sexo, idade e codcurso. A seguir, é declarada a variável ficha, do tipo regficha.

ULBRA - Informática - Lógica de Programação 17


9.2 Manipulação

Para acessar individualmente daca um dos campos de um registro, é necessário indicar o nome da
variável e do campo, separados por um ponto. Como exemplo, pode-se referenciar os campos nome,
endereço e idade da variável ficha da seguinte forma:

ler (ficha.nome)
escrever (ficha.endereço)
ler (ficha.idade)

Não é possível a referência apenas do nome da variável, indicando o conjunto dos campos (exemplo:
ler(ficha)).

10 VARIÁVEIS COMPOSTAS HOMOGÊNEAS

 Unidimensionais --> vetores.


 Multidimensionais --> matrizes.

A
A 1 2 3 4
5
conteúdo conteúdo conteúdo conteúdo conteúdo conteúdo

A[1] A[2] A[3] A[4] A[5]

10.1 VETORES

São um conjunto de variáveis de memória, sob o mesmo nome e tipo, identificados por um índice.

10.1.1 Declaração:

Variáveis

<nome> : vetor [li..lf] de <tipo>

onde:
 li - limite inferior do índice do vetor.
 lf - limite superior do índice do vetor.
 <nome> - nome ou uma lista de nomes de variáveis.
 <tipo> - tipo de variável.

Exemplo:

Variáveis
A,B : vetor [1..10] de inteiros
C : vetor [11..20] de real

1 2 3 4 5 6 7 8 9 10
A
B
11 12 13 14 15 16 17 18 19 20

C
OBSERVAÇÕES:
ULBRA - Informática - Lógica de Programação 18
1. li é sempre menor que lf.
2. li pode ser diferente de 1.
3. O limite do vetor geralmente é dependente da memória.
4. li e lf não podem receber variáveis.
5. Nº de elementos dentro do intervalo -> lf - li + 1

10.1.2 Manipulação:

A referência a um elemento do vetor deve sempre ser feita através do nome acompanhado do índice.

Exemplo:

Variáveis
A : vetor [1..5] de inteiro
Início  Início
ler (A[1], A[2], A[3], A[4], A[5]) para i  1 até 5 faça
escrever (A[1], A[2],A[3], A[4], A[5]) início
Fim ler (A[i])
escrever (A[i])
fim
Fim

10.2 MATRIZES

10.2.1 Declaração:

Variáveis
<nome> : matriz [li..lf, li..lf] de <tipo>

Exemplo:
Variáveis
COMPRAS : matriz [0..15, 10..30] de real
C : matriz [1..10, 1..7] de inteiro

10.2.2 MATRIZ QUADRADA

Definição:

O número de linhas é igual ao de colunas.

Diagonal
1,1 Diagonal 1,4
Secundária
2,2 Principal 2,3
3,3 3,2 C = nC - L + 1
L= C
4,4 4,1
nC -> nº de colunas da matriz

1,2 1,3 1,4 Triângulo Triângulo


2,3 2,4 Superior 2,1 Inferior
3,4 3,1 3,2
C>L L>C
4,1 4,2 4,3

ULBRA - Informática - Lógica de Programação 19

Você também pode gostar