Nothing Special   »   [go: up one dir, main page]

Apostila Algoritmos-1

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 55

ALGORITMOS

UNIFASAR
CÉSAR, ADOLFO e RONAN

1
SUMÁRIO

CAPÍTULO 1 - CONCEITOS
1.1 – O Computador ..............................................................................
1.2 – Algoritmo ........................................................................................
1.3 – Linguagem de Programação ...........................................................
1.4 – Conceitos Básicos ..........................................................................

CAPÍTULO 2 – VARIÁVEIS E CONSTANTES


2.1 – Uma Pseudolinguagem ..................................................................
2.2 – Elemento básico de qualquer linguagem – identificador ..............
2.3 - Declaração e definição de variáveis/constantes .............................
2.4 – Comentários ..................................................................................
2.5 - Comandos básicos
2.5.1 - Expressões aritméticas e operadores ..............................
2.5.2 - Expressões lógicas e operadores ....................................
2.5.3 - Comando de atribuição ..................................................
2.5.4 - Tabela de prioridades para operações mistas ................
2.5.5 – Exercícios Resolvidos ..................................................
2.5.6 – Exercícios Propostos ....................................................

CAPÍTULO 3 – COMANDOS DE ENTRADA E SAÍDA E


ESTRUTURAS CONDICIONAIS
3.1 - Comandos de Entrada e Saída ....................................................
3.1.1 – Exercícios Resolvidos ................................................
3.1.2 – Exercícios Propostos ..................................................
3.2 - Estruturas de Controle e Fluxogramas
3.2.1 – Estrutura Sequencial e Exercícios ............................

2
3.2.2 – Alternativa Simples e Exercícios .............................
3.2.3 – Alternativa Composta e Exercícios .........................

CAPÍTULO 4 – ESTRUTURAS DE REPETIÇÃO


4.1 – Estruturas de Repetição (enquanto ... faça) ............................
4.1.1 – Exercícios .Resolvidos.............................................
4.1.2 – Exercícios Propostos ...............................................
4.2 – Estruturas de Repetição (para ... faça) ...................................
4.2.1 – Exercícios .Resolvidos.............................................
4.2.2 – Exercícios Propostos ...............................................
4.3 – Estruturas de Repetição (repita ... até) ...................................
4.1.1 – Exercícios .Resolvidos.............................................
4.1.2 – Exercícios Propostos ...............................................

CAPÍTULO 5 – BLOCOS DE ALGORITMOS


5.1 – Procedimento, Função e Exercícios .......................................

Bibliografia ....................................................................

3
ALGORITMOS

OBJETIVO GERAL

Inserir o aluno no mundo da informática, especificamente no ramo da lógica da


programação.

Ao final, o aluno será capaz de:

• desenvolver pequenos programas de computador;

• compreender e dar manutenção em programas de pequeno porte.

4
CAPÍTULO 1
Objetivos Específicos

• conceituar algoritmo;

• conceituar lógica de programação;

• apresentar outros conceitos de informática.

1.1) O Computador
Computador é uma máquina que processa informações de forma automática, sob o
controle de grupos de instruções previamente definidas, com grande eficácia.

1.2) Algoritmo

• Conceito
Um algoritmo nada mais é que um texto contendo comandos (instruções) que
devem ser executados numa determinada ordem. Esse texto em si não nos
interessa mas, sim, seu significado, ou seja, aquilo que ele representa.

• Definição
Algoritmo é um conjunto de instruções, como uma receita de bolo, constituído
de um número finito de passos.

1.3) Linguagem de Programação


Para que os dados sejam processados, há a necessidade de se utilizar uma linguagem de
programação pois, os computadores não executam diretamente os algoritmos. Eles
precisam ser traduzidos, transformados em uma linguagem de programação.
Através desta linguagem, os dados e programas podem ser entendidos pela máquina.
A primeira dessas linguagens de programação foi a FORTRAN, adequada para
problemas de natureza técnica e científica. Na área comercial, surgiu a linguagem
COBOL logo em seguida. Depois vieram outras linguagens como BASIC, PASCAL, C,
as linguagens visuais e outras.

1.4) Conceitos

• Bit (Binary digit): menor porção de informação entendível pelo computador. São
os zeros e uns.

• Byte (Binary term): conjunto de bits. Memórias são medidas em bytes. Cada
caracter é um byte. Ex.: A

5
• Palavra: conjunto de bytes. Ex.: Maria

• Hardware: componentes físicos e eletrônicos do computador. É a parte física do


computador. Ex.: O computador ou parte dele.

• Software: são programas de computador.

• Compilador: são programas capazes de transformar códigos-fonte em códigos-


objeto, ou seja, capazes de transformar programas escritos em uma linguagem de
programação mais acessível ao homem (PASCAL, DELPHI, etc.) em linguagem
de máquina (a única entendida pelo computador).
Ex.: PASCAL → Compilador → Linguagem de máquina

6
CAPÍTULO 2

Objetivos Específicos

• começar o estudo de lógica através dos algoritmos;

• resolver pequenos exercícios de lógica.

2.1) Uma pseudo-linguagem


Criada com o objetivo de facilitar a programação e o entendimento dos programas
principalmente daqueles que ainda não dominam nenhuma linguagem de programação.
Algoritmos desenvolvidos numa pseudo-linguagem não são executados diretamente
pela máquina (computador). Necessitam ser transcritos para uma linguagem de
programação (PASCAL, por exemplo).

2.2) Elemento Básico de Qualquer Linguagem – Identificador


O objetivo desse elemento é identificar, na memória, variáveis e constantes.
É formado por um ou mais caracteres, sendo que o primeiro deve, obrigatoriamente, ser
uma letra e os caracteres seguintes, letras e/ou dígitos, não sendo permitido o uso de
símbolos especiais.
Identificadores válidos: A, X, SOMA, B34Y1, C4.
Identificadores inválidos: 2YC, ?AB, -AYB, 55CDE.

2.3) Declaração e definição de Variáveis / Constantes


Variáveis
Nos algoritmos, cada variável corresponde a uma posição na memória, cujo conteúdo
pode variar ao longo do tempo durante a execução de um programa.
Embora uma variável possa assumir diferentes valores, ela só pode armazenar um único
valor a cada instante. Toda variável é identificada por um nome ou identificador.
As variáveis só podem armazenar valores de um tipo, sendo quatro os tipos básicos
mostrados a seguir:
Tipos básicos:

• Inteiro: qualquer número inteiro, positivo, negativo ou nulo. Ex.: 3; -3; 0.

• Real: qualquer número real, positivo, negativo ou nulo. Ex.: 3,4; -3,4; 0,0.
7
• Caracter: qualquer conjunto de caracteres alfanuméricos. Ex.: “ABC”,
“SORRISO”, “ABACATE”.

• Lógico: conjunto de valores falso ou verdadeiro em preposições lógicas. Ex.:


TEM, ACHOU (contendo falso ou verdadeiro)
Obs.: Quando declaramos uma variável, significa dizer que criamos (definimos) locais
na memória do computador rotulados com os nomes das variáveis (identificadores). O
mesmo ocorre no caso das constantes.
Ex.:
Inteiro: X, SOMA, CONT
Real: MEDIA, A, B
Caracter: NOME
Lógico: TEM
Assim, X é o nome de um local de memória que pode conter valores do tipo inteiro.

Constantes
Uma constante é determinado valor fixo que não se modifica ao longo do tempo de
execução de um programa. Uma constante pode ser: um número, um valor lógico ou
uma sequência de caracteres quaisquer com algum significado para o problema em
estudo. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica ou
literal.
Constante numérica
A representação de uma constante numérica nos algoritmos é feita no sistema
decimal.
Ex.: 10; -8; 5,3; 2,02x10²
Constante Lógica
É um valor lógico, isto é, só pode ser falso ou verdadeiro.
Constante Literal
Uma constante literal pode ser qualquer sequência de caracteres. Toda constante
literal que aparece no algoritmo será colocada entre aspas, para que não seja confundida
com outro item qualquer.
Ex.: “ABCD”, “JOSÉ”, “IFMG”

8
2.3.1) Exercícios Resolvidos
1 – Identificar o tipo de cada uma das constantes abaixo:
a) 12 – numérica
b) “AMOR” – literal
c) “falso” – literal
d) 3,81x10² – numérica
e) Verdadeiro – lógica

2 – Marque com um X os identificadores válidos:


a) ( X ) SOMA
b) ( ) X”Y
c) ( ) 3N
d) ( X ) N3
e) ( ) PAI DE SANTO
Explicando:

• Em relação ao Exercício 1:
Talvez tenha surgido uma dúvida na letra c. Veja, a palavra “falso” está entre
aspas. Portanto, independente do conteúdo, as aspas indicam ser um
conteúdo de constante literal.

• Em relação ao Exercício 2:
Veja que nas letras a e d, os identificadores possuem apenas letras e número,
começando sempre por letra. Portanto, são identificadores válidos. Em
relação às letras b, c e e, alguns caracteres inviabilizam o uso destes
identificadores como as aspas ( “ ) na letra b, o número 3 iniciando o
identificador na letra c e os espaços vazios (em branco) na letra e.

2.3.2) Exercícios Propostos


1 – Identificar o tipo de cada uma das constantes abaixo:
a) “Verdadeiro” –
b) 3,1416 –
c) falso –

9
d) “Maria” –
2 – Marque com um X os identificadores válidos:
a) ( ) “X
b) ( ) X1Y
c) ( )N
d) ( ) ?VB
e) ( ) CASA BRANCA
2.4) Comentários
É um instrumento utilizado para facilitar o entendimento do algoritmo. Ele é um texto,
ou simplesmente uma frase, que aparece delimitado por chaves em qualquer parte do
programa. Não é interpretado pelo compilador.

2.5) Comandos Básicos


2.5.1) Expressões Aritméticas e Operadores
As expressões aritméticas nos algoritmos são formadas com operadores e funções cujos
operandos são constantes e/ou variáveis do tipo numérico (inteiro, real).
Ex.: A B + 2 * C + ABS (B)
Onde:
A = variável
B = variável
2 = constante
C = variável
ABS ( ) = função
+ = operador de adição
* = operador de multiplicação
= sinal de atribuição
Os operadores aritméticos são: a adição ( + ), a subtração ( - ), a multiplicação ( * ), a
divisão ( / ), a potenciação ( ^ ) e a radiciação ( √ ).
Nos algoritmos, são consideradas funções as apresentadas na tabela abaixo:

10
Nome Resultado fornecido

log (A) logaritmo de A na base 10

ln (A) logaritmo neperiano de A

Exp (A) o número e elevado a A

ABS (A) o valor absoluto de A

Trunca (A) a parte inteira de um número fracionário

transforma por arredondamento um


Arredonda (A)
número fracionário em inteiro

Quociente (A, B) quociente inteiro da divisão de A por B.

Resto (A, B) resto da divisão inteira de A por B.

2.5.2) Expressões Lógicas e Operadores


Nas expressões lógicas os operadores são lógicos ou relacionais.
Operadores lógicos
Os operadores lógicos considerados nos algoritmos são os conectivos de conjunção,
disjunção e negação.

- conjunção: e
- disjunção: ou
- negação: não

e xx ou
V V V V V V
Não V = F
V F F V F V
Não F = V
F V F F V V
F F F F F F

Operadores relacionais
Os operadores relacionais indicam a comparação a ser realizada entre os termos da
relação.
11
São eles:
> , < , > = , < = , < > ( ≠ ), = .

2.5.3) Comando de Atribuição


Este comando permite que se forneça um valor a uma certa variável, onde a natureza
deste valor tem que ser compatível com o tipo de variável na qual está sendo
armazenado.
O comando de atribuição tem a seguinte forma geral:
identificador expressão
onde:
identificador: é o nome da variável
expressão: pode ser uma expressão aritmética, lógica ou literal, de cuja avaliação
é obtido o valor a ser atribuído à variável.

Ex.: NOTA 7,5


X 2
B X+1

2.5.4) Tabela de Prioridade para Operações Mistas


1 – Parênteses e funções
2 – Potenciação ( ^ ) e Radiciação ( √ )
3 – Multiplicação ( * ) e divisão ( / )
4 – Adição ( + ) e subtração ( - )
5 – Relacionais (> , < , > = , < = , < > (≠), =)
6 – não
7–e
8 – ou

12
2.5.5) Exercícios Resolvidos
1) Supondo que as variáveis X, Y, K sejam numéricas e possuam os valores 3 ; 6,7 e 7,
respectivamente; a variável ENDER seja caracter e possua o conteúdo “Rua Alfa” e a
variável Z seja do tipo lógico e possua o conteúdo falso, responda:
a) ENDER = “Rua Alfa” e Z
b) X + Y = 9 ou não Z
c) quociente(K , X); resto(K , X)
d) arredonda(Y - X); trunca(Y – X)
e) ABS(X - K)
Solução
a) Substituindo os valores das variáveis na expressão:
“Rua Alfa” = “Rua Alfa” e falso
Veja, entre o operador relacional “igual” ( = ) e o lógico falso, resolve-se
primeiro o relacional. A expressão fica assim, então:
verdadeiro e falso
Agora temos dois operandos lógicos e um operador também lógico. Como
resposta temos: (veja tabela em Expressões Lógicas e Operadores)
falso

b) Substituindo os valores das variáveis na expressão:


3 + 6,7 = 9 ou não falso
Segundo a ordem de prioridades, resolvemos primeiro a soma:
9,7 = 9 ou não falso
Em seguida, o relacional “ = ” :
falso ou não falso
Depois, a negação:
falso ou verdadeiro
E, por último, o tipo lógico ou :
Verdadeiro

13
c) quociente(K , X)
Substituindo os valores das variáveis na expressão:
quociente(7 , 3)
Faz-se a divisão inteira de 7 por 3 obtendo 2 como quociente.
resto(K , X)
Substituindo os valores das variáveis na expressão:
Faz-se a divisão inteira de 7 por 3 obtendo 1 como resto.

d) arredonda(Y - X);
Substituindo os valores das variáveis na expressão:

arredonda(6,7 - 3)

arredonda(3,7)

Portanto, a resposta é 4 por arredondamento.


trunca(Y – X)
Substituindo os valores das variáveis na expressão:
trunca(6,7 - 3)
trunca(3,7)
3
Portanto, a resposta é 3. O número é truncado na sua parte decimal.

e) ABS(X - K)
Substituindo os valores das variáveis na expressão:
ABS(3 - 7)
ABS(-4)
4
O absoluto de um número é ele próprio em módulo, ou seja, sem sinal.

14
2.5.6) Exercícios Propostos
1) Dadas as variáveis numéricas A, B e C contendo os valores 3, 6 e 9, respectivamente;
a variável literal (caracter) NOME, contendo o literal “JOAO” e a variável lógica TEM,
contendo o valor lógico falso, responda:
a) A + B > C e NOME = “JOAO”
b) TEM ou B > = A
c) não TEM e quociente (C, B) + 1 = A
d) NOME = “MARCOS” e TEM ou A^2 < C + 10

2) Sendo A, B, X e Y variáveis do tipo numérico (inteiro, real), quais os resultados


fornecidos em cada uma das funções a seguir, onde:
A = 10; B = 3; X = 2,5; Y = 1,2
a) quociente (A, B); resto (A, B)
b) arredonda (A – X); arredonda (B + Y); arredonda (Y – X)
c) trunca (B^2 + X); trunca (A/3 + 1); trunca (X – 3, 2)
d) ABS (A – B^3); ABS (A – 3)

15
CAPÍTULO 3

Objetivos Específicos

• apresentar as primeiras estruturas de controle para o desenvolvimento de


algoritmos;

• conhecer as estruturas de Entrada e Saída de dados

• conhecer e trabalhar com as estruturas condicionais;

• desenvolver os primeiros programas de computador utilizando uma pseudo-


linguagem.

3.1) Comandos de Entrada e Saída


- Entrada de Dados (leia)
Sintaxe
leia (identificadores)
Exemplo:
leia (A)
leia (B)
leia (C)

- Saída de Dados (no vídeo ou na impressora)


Sintaxe
escreva (identificadores)
Exemplo:
escreva (A)
ou
escreva (“O valor de A é: ”, A)

3.1.1) Exercícios Resolvidos


1) Fazer um algoritmo em Portugol para imprimir dois nomes que deverão ser lidos
através de uma unidade de entrada de dados qualquer.

16
início
caracter: NOME1, NOME2
escreva (“Digite um nome:”)
leia (NOME1)
escreva (“Digite outro nome:”)
leia (NOME2)
escreva (NOME1, NOME2)
fim

Explicando: Todo algoritmo começa com a palavra “início” e termina com a palavra
“fim”. Em seguida à palavra início, faz-se a declaração das varáveis do programa, ou
seja, do algoritmo. Neste exemplo, temos duas varáveis do tipo caracter, pois irão
armazenar na memória do computador dois nomes. Declarando as variáveis, o
computador reconhece a existência de tais variáveis e elas podem ser utilizadas em todo
o programa a partir desse momento. Sendo assim, pode-se entrar com os dados, isto é,
as informações para NOME1 e NOME2. O comando utilizado para isto é o leia. Mas,
seria interessante que aparecesse uma mensagem na tela antes de entrar com cada
informação para que o usuário deste programa possa ter certeza de qual informação,
qual dado ele deverá digitar. Para isto, utiliza-se o comando de saída escreva já que esse
texto deverá ser impresso na tela do computador. Em seguida, faz-se a leitura da
variável, ou seja, digita-se os nomes desejados, um de cada vez, pressionando enter
assim que digitar cada um deles. Por fim, através do comando escreva, são mostrados na
tela os nomes digitados.
2) Fazer um algoritmo para calcular e imprimir a média aritmética das notas de um
grupo de três alunos. As notas deverão ser lidas, uma para cada aluno, através de uma
unidade de entrada qualquer.
início
real: NOTA1, NOTA2, NOTA3, MEDIA
escreva (“Digite uma nota:”)
leia (NOTA1)
escreva (“Digite a segunda nota:”)
leia (NOTA2)
escreva (“Digita a terceira nota:”)
leia (NOTA3)
MEDIA (NOTA1 + NOTA2 + NOTA3) / 3
escreva (“MEDIA=” , MEDIA)
fim

17
Veja que neste exercício tivemos que criar três variáveis para receber as notas e outra
para fazer o cálculo da média. Todas são do mesmo tipo, real, porque são números
fracionários. Seguindo o critério adotado no exercício anterior, fizemos a leitura dos
dados. Em seguida, efetuamos o cálculo solicitado e a impressão do mesmo.

3.1.2) Exercícios Propostos


1) Elaborar um algoritmo que leia os 3 números inteiros e calcular e imprimir a soma
desses números.
2) Fazer um algoritmo que calcule e imprima a média de 4 números inteiros que
deverão ser lidos através de uma unidade de entrada qualquer.

3.2) Estruturas de Controle e Fluxogramas


3.2.1) Estrutura Sequencial
- Mostra uma sequência de comandos, um por linha, como nos dois exemplos vistos
anteriormente (2.5.1).

18
Algoritmo Fluxograma NS Fluxograma Tradicional

início
(sequência de
comandos)
fim

Os algoritmos podem ser expressos em forma de fluxogramas também. Existem alguns


tipos de fluxogramas. De forma rápida, iremos mostrar dois tipos: o NS e o tradicional.
São utilizados principalmente para documentação de programas ou sistemas. Hoje em
dia são pouco utilizados devido às novas ferramentas existentes para esse fim. Vamos
ver como ficaria o primeiro exercício do item 3.1.1 utilizando-se fluxogramas.

19
Fluxograma NS Fluxograma Tradicional

3.2.2) Alternativa Simples ou Condicional Simples


A estrutura condicional permite a escolha do grupo de ações e estruturas a ser executado
quando determinadas condições representadas por expressões lógicas são ou não
satisfeitas.

20
Sintaxe Fluxograma NS Fluxograma Tradicional

se <condição V>
então <comandos>
fim se

21
Exemplo de um trecho de programa:

Fluxograma NS Fluxograma Tradicional

A 2
B 3
se A < B
então C A+B
fim se

22
3.2.2.1) Exercícios Resolvidos
1) Fazer um algoritmo que leia 2 números inteiros A e B. Imprimir uma mensagem
informando de A é maior que B.
Início
Inteiro: A, B
Escreva (“Digite um número inteiro:”)
Leia (A)
Escreva (“Digite outro número inteiro:”)
Leia (B)
Se A > B
Então escreva (“A é maior que B”)
Fim se
Fim
Explicando:
Inicialmente, declaramos as variáveis A e B do tipo inteiro, como foi dito no enunciado.
Em seguida, fizemos a leitura dos dados. Posteriormente, utilizamos a estrutura
condicional simples para verificar se o valor armazenado na variável A é maior do que o
armazenado na variável B. Portanto, só será impresso a mensagem “A é maior que B”
se a condição for verdadeira, ou seja, se A for maior que B.
2) Ler o sexo de uma pessoa (M,F) e imprimir a mensagem “É homem” caso seja do
sexo masculino.
Início
caracter: SEXO
Escreva (“Digite o sexo (M=masculino,F=feminino):”)
Leia (SEXO)
Se SEXO = “M”
Então escreva (“É homem”)
Fim se
Fim
3) Ler a altura em centímetros de uma garota e imprimir uma mensagem caso esteja
acima de 1,80m.
23
Início
real: ALTURA
Escreva (“Digite a altura da garota em centímetros:”)
Leia (ALTURA)
ALTURA ← ALTURA / 100 {para transformar a altura para metros}
Se ALTURA > 1,80
Então escreva (“Essa garota é muito alta”)
Fim se
Fim
4) Fazer um programa que leia o raio de um círculo, determine e imprima a área
correspondente. Imprimir a mensagem “Área pequena” se for menor que 5 cm2. Dado:
A= x R2.
Início
real: AREA, RAIO
Escreva (“Digite o raio do círculo em centímetros:”)
Leia (RAIO)
AREA ← 3,1416 * (RAIO * RAIO) {π = 3,1416, aproximado}
Escreva (“Área = ”, AREA)
Se AREA < 5
Então escreva (“Área pequena”)
Fim se
Fim

3.2.2.2) Exercícios Propostos


1) Fazer um algoritmo que leia os lados (A,B,C) do paralelepípedo, determine e
imprima o volume(V) e a área superficial(S). Dados: V=A.B.C ; S=2.(A.B + A.C +
B.C). Imprima uma mensagem informando se o volume é superior a 20 cm3.
2) Executando-se o algoritmo abaixo, que valores serão escritos:
início
inteiro: A,C,I

24
real: B,J,K

A32;

C2;

I5

BA^(1/5) {A elevado a um quinto ou raiz quinta de A}

JC*3/4
se (B>J)

então KA+I/A-I
fim se
escreva(B,J,K)
fim.
3) Sendo dadas 2 variáveis (A e B) literais, verificar se as mesmas possuem os
conteúdos “AGUA” e “TERRA”, respectivamente. Se isto ocorrer, imprimir a
mensagem “TUDO OK”.

3.2.3) Alternativa Composta


Sintaxe
se <condição>
então <comandos>
senão <outros comandos>
fim se

25
Fluxograma NS Fluxograma Tradicional

Exemplo de um trecho de programa:


A 2
B 3
se A < B
então C B–A
senão C A–B
fim se

26
Fluxograma NS Fluxograma Tradicional

3.2.3.1) Exercícios Resolvidos


1) Fazer um algoritmo que leia 2 números inteiros A e B. Imprimir uma mensagem
informando qual dos dois é o maior. Suponha que são números diferentes.
Início
Inteiro: A,B
Escreva (“Digite um número inteiro:”)
Leia (A)
Escreva (“Digite outro número inteiro:”)
Leia (B)
27
Se A > B
Então escreva (“A é maior que B”)
Senão escreva (“B é maior que A”)
Fim se
Fim
Explicando:
Inicialmente, declaramos as variáveis A e B do tipo inteiro, como foi dito no enunciado.
Em seguida, fizemos a leitura dos dados. Posteriormente, utilizamos a estrutura
condicional composta para verificar se o valor armazenado na variável A é maior do que
o armazenado na variável B ou se o valor armazenado na variável B é maior do que o
armazenado na variável A. Portanto, só será impresso a mensagem “A é maior que B”
se a condição for verdadeira, ou seja, se A for maior que B. Caso contrário, isto é, se a
condição for falsa, será impresso a mensagem “B é maior que A”.
2) Ler o sexo de uma pessoa (M,F) e imprimir uma mensagem informando se “É
homem” ou se “É mulher” .
Início
caracter: SEXO
Escreva (“Digite o sexo (M=masculino,F=feminino):”)
Leia (SEXO)
Se SEXO = “M”
Então escreva (“É homem”)
Senão escreva (“É mulher”)
Fim se
Fim

3) Elaborar um algoritmo que leia o sexo e a altura de uma pessoa e imprima o peso
ideal.
Dados: Peso ideal para o sexo masculino: altura(cm)*0.95-95
Peso ideal para o sexo feminino: altura(cm)*0.85-85
Início
real: ALTURA, PESO
caracter: SEXO

28
Escreva (“Digite a altura (cm):”)
Leia (ALTURA)
Escreva (“Digite o sexo (M,F):”)
Leia (SEXO)
Se SEXO = “M”
Então PESO ← ALTURA * 0,95 - 95
Senão PESO ← ALTURA * 0,85 - 85
Fim se
Escreva (“Peso Ideal: ”, PESO)
Fim

3.2.3.2) Exercícios Propostos


1) O que está errado no algoritmo abaixo ?
início
inteiro: N,PAR,X
leia (N)

Xresto(N,2)
se (X=0)

então PAR  verdadeiro

senão PAR  falso


fim se
fim.

2) O que será impresso depois de executado o algoritmo se NUM = -3.

início
caracter: QUALE
inteiro: num
leia(NUM)
29
se (NUM > 0)

então QUALE  “número positivo”


senão se (NUM < 0)

então QUALE  “número negativo”

senão QUALE  “zero”


fim se
fim se
escreva (QUALE)
fim.

3) Sendo dadas 2 variáveis (A e B) literais, verificar se as mesmas possuem os


conteúdos “AGUA” e “TERRA”, respectivamente. Se isto ocorrer, imprimir a
mensagem “TUDO OK”, caso contrário, imprimir a mensagem “PROBLEMAS”.

4) Implementar um algoritmo que leia uma letra. Se a letra for uma vogal, imprimir a
mensagem “VOGAL”, caso contrário, imprimir a mensagem “CONSOANTE”.

5) Elaborar um algoritmo que leia dois valores numéricos diferentes e apresente a


diferença do maior pelo menor.

30
CAPÍTULO 4

Objetivos Específicos

• conhecer as estruturas de repetição enquanto ... faça, para ... faça e repita ... até e
suas diferenças;

• desenvolver algoritmos utilizando cada uma das estruturas citadas


anteriormente;

• desenvolver algoritmos utilizando laços de repetição.

4.1) Estrutura de Repetição


A estrutura de repetição permite que uma sequência de comandos seja executada
repetidamente enquanto uma determinada condição for verdadeira.

Comando enquanto ... faça

Sintaxe
Enquanto <condição> faça
< sequência de comandos>
fim enquanto

31
Fluxograma NS Fluxograma Tradicional

Exemplo de um trecho de programa:


I 1
enquanto I < = 3 faça
escreva (“I=”, I)
I I+1
fim enquanto

32
Fluxograma NS Fluxograma Tradicional

4.1.2) Exercícios Resolvidos


1) Indique os valores impressos pelo algoritmo abaixo:
início
inteiro: I, S

S0

33
I 1
enquanto I < = 10 faça

SS+I

II+1
escreva (I)
fim enquanto
escreva (S)
fim.
Solução:
Primeiramente são declaradas as variáveis I e S que serão utilizadas no programa. Em
seguida, inicializamos as variáveis S e I com os valores zero e um, respectivamente.
Pretendemos fazer o comando de repetição (laço de repetição) executar dez vezes as
instruções internas a ele. Por isso, ele deverá variar de 1 a 10. No final, quando a
condição I < = 10 não for mais satisfeita, ou seja, quando a variável I atingir o valor 11,
abandona-se o comando de repetição e passa-se para a próxima instrução (escreva (S)).
Sendo assim, este programa irá a cada laço de repetição somar o valor de I com o
anterior, isto é, após as dez iterações, teremos a soma de dos números inteiros de 1 a 10.
Na variável I é acrescentado o valor 1 (um) a cada laço de repetição e impresso este
valor. Esta variável, cujo valor inicial é 1 (um) variará de 1 a 10 dentro do comando de
repetição e, quando atingir o valor 11, a condição I < = 10 se tornará falsa fazendo com
que o laço seja abandonado.
Por último, será impresso o valor armazenado na variável S.
2) Construir um algoritmo para calcular a média de um conjunto de 100 valores inteiros
fornecidos em uma unidade de entrada qualquer.
Solução:
Início
Inteiro: NUM, I, SOMA
Real: MEDIA
I←1
SOMA ← 0
enquanto I < = 100 faça
escreva (“Digite um número”)
leia (NUM)
34
SOMA ← SOMA + NUM
I←I+1
Fim enquanto
MEDIA ← SOMA / 100
Escreva (“Média = ”, MEDIA)
Fim
Observe que em todos os algoritmos é necessário declarar as variáveis que serão
utilizadas no algoritmo. Em seguida faz-se a inicialização dessas variáveis. A partir daí,
trabalha-se o laço de repetição. É quase sempre assim. Neste exercício, temos de somar
todos os números. Por isso essa etapa é feita dentro do comando de repetição. Então
temos que ler o número, somá-lo com o que se tinha, ou seja, com aquele valor que
estava armazenado na variável SOMA e incrementar o contador I somando mais 1 (um).
Este contador serve para contarmos quantos números serão lidos. Quando atingir 101, a
condição se tornará falsa e o comando de repetição será abandonado. Saindo do laço de
repetição, calcula-se a média aritmética e a imprime em seguida.
3) Fazer um algoritmo que calcule e escreva o valor de S.
S = 1 + 3 + 5 + 7 + ... + 99 (50 termos)
1 2 3 4 50

Solução
Início
Inteiro: NUM, DEN, I
Real: S
I←1
NUM ← 1
DEN ← 1
S←0
Enquanto I < = 50 faça
S ← S + NUM / DEN
NUM ← NUM + 2
DEN ← DEN + 1
I←I+1
Fim enquanto
35
Escreva (“Soma = ”, S)
Fim
Neste exercício temos de somar frações. Veja que há uma lógica entre elas. O
numerador é incrementado de 2 e o denominador de 1. Temos 50 frações e não temos
que ler nada neste exercício. A cada iteração alteramos os valores das variáveis NUM
(numerador), DEN (denominador) e I (contador de termos). Ao final, imprimimos o
valor da soma (S).
4) O departamento de Educação Física deseja informatizar este setor e colocou à
disposição os seguintes dados de 40 alunos:
Matrícula, sexo (M,F), altura (cm) e status físico (1=BOM, 2=REGULAR, 3=RUIM)
Estes dados deverão ser lidos através de uma unidade de entrada qualquer.
Imprimir :
a) a quantidade de alunos do sexo feminino com altura superior a 170 cm;
b) a % de alunos do sexo masculino (em relação ao total de alunos do sexo
masculino) cujo status físico seja ‘BOM’.
Solução:
Início
Inteiro: ALTURA, STATUS, CONTF170, CONTH, CONTHB, I
Caracter: SEXO, MATRICULA
Real: P
CONTF170 ← 0; CONTH ← 0; CONTHB ← 0; I ← 1
Enquanto I < = 40 faça
Escreva (“Digite a matrícula(999.999-99):”)
Leia (MATRICULA)
Escreva (“Digite a altura(cm):”)
Leia (ALTURA)
Escreva (“Digite o status físico(1-bom, 2-regular, 3=ruim):”)
Leia (STATUS)
Escreva (“Digite o sexo(M,F):”)
Leia (SEXO)
Se (SEXO = “F”) e (ALTURA > 170)

36
Então CONTF170 ← CONTF170 + 1
Fim se
Se SEXO = “M”
Então CONTH ← CONTH + 1
Fim se
Se (SEXO = “M”) e (STATUS = 1)
Então CONTHB ← CONTHB + 1
Fim se
I←I+1
Fim enquanto
P ← (CONTHB / CONTH) * 100
Escreva (“Quantidade de alunos do sexo feminino com altura
superior a 170 cm: ”, CONTF170 )
Escreva (“Porcentagem de alunos do sexo masculino com status
físico BOM: ”, P)
Fim
5) Construir um algoritmo para calcular a média de um conjunto de valores inteiros
fornecidos em uma unidade de entrada qualquer.
Solução:
Início
Inteiro: NUM, SOMA, CONT
Real: MEDIA
Caracter: OP
SOMA ← 0; CONT ← 0; OP ← “S”
enquanto OP = “S” faça
escreva (“Digite um número”)
leia (NUM)
SOMA ← SOMA + NUM
CONT ← CONT + 1

37
Escreva (“Deseja continuar? (S/N):”)
Leia (OP)
Fim enquanto
MEDIA ← SOMA / CONT
Escreva (“Média = ”, MEDIA)
Fim
Neste exercício, não sabemos quantos elementos existem. Por isso, criamos uma
variável (OP) do tipo caracter inicializada com o valor “S”. A cada laço de repetição,
perguntamos ao usuário se ele quer continuar entrando com dados, ou seja, digitando
novas informações. Se sim, digita-se “S”. Caso contrário, digita-se “N”. Portanto, a
condição será em função desta variável (OP). Digitando “S” o laço continua. Digitando
“N” encerra-se o laço de repetição e passa-se para a próxima instrução depois do fim do
laço.
Como não sabemos quantos dados existem, temos de criar uma variável contadora
(CONT, por exemplo) para que possamos calcular a média. Saindo do laço de repetição,
calcula-se a média aritmética e a imprime em seguida.

4.1.3) Exercícios Propostos


1) Fazer um algoritmo que:
-Leia um conjunto de 150 fichas contendo cada uma, a idade de um indivíduo;
-Calcule e escreva a idade média deste grupo de indivíduos.
2) Fazer um algoritmo que calcule e escreva a seguinte soma:
S = 21 / 50 + 22 / 49 + 23 / 48 + ... + 70 / 1.
3) Fazer um algoritmo que leia os seguintes dados referentes a cada habitante de uma
determinada cidade, para serem analisados:
- Sexo (‘M’ ou ‘F’);
- Cor dos cabelos (1 = pretos, 2 = loiros, 3 = castanhos, 4 = outra cor);
- Cor dos olhos (1= castanhos, 2 = pretos, 3 = verdes, 4 = outra cor);
- Idade (em anos).
Calcule e escreva:
a) A quantidade de pessoas do sexo feminino com idade acima de 60 anos;
b) A porcentagem de indivíduos cuja idade está entre 18 e 35 anos (inclusive) e que
tenha olhos verdes e cabelos loiros.
38
4.2) Repetição com Variável de Controle
Comando para ... faça
Sintaxe
para i de a até b faça
<comando 1>
<comando 2>
<comando 3>
<comando n>
fim para

A semântica do comando é a seguinte: i, a e b são variáveis quaisquer e não devem ser


modificadas nos comandos <comando 1>, <comando 2>, ..., <comando n>.
O comando “para ... faça” é, na verdade, o comando “enquanto” utilizando uma variável
de controle, escrito numa notação compacta. Neste caso, existirá sempre uma
inicialização da variável de controle, um teste para verificar se a variável atingiu o
limite e um acréscimo na variável de controle.
Portanto, esta estrutura de repetição não pode ser aplicada em algoritmos que não
informem quantos dados deverão ser utilizados (lidos). Neste caso, utiliza-se a estrutura
enquanto...faça” ou a estrutura “repita ... até” que será mostrada mais adiante.
Ex.: para I de 1 até 5 faça
X I^2
Y A+5
fim para

Obs.: Toda vez que o “fim para” é encontrado, a variável de controle é incrementada de
1 (um) automaticamente e o teste é feito.

4.2.1) Exercícios Resolvidos


1) Fazer um algoritmo que leia 40 notas e calcule a média aritmética das mesmas.
Solução:
Início
Inteiro: I
39
Real: SOMA, NOTA, MEDIA
SOMA ← 0
para I de 1 até 40 faça
escreva (“Digite uma nota: ”)
leia (NOTA)
SOMA ← SOMA + NOTA
Fim para
MEDIA ← SOMA / 40
Escreva (“Média da turma: ”, MEDIA)
Fim
Neste exercício, temos de somar as notas para depois calcularmos a média. Então temos
que ler a nota, somá-la com o que se tinha, ou seja, com aquele valor que estava
armazenado na variável SOMA. Veja que não é necessário inicializar a variável de
controle I. Isso é feito automaticamente. Não devemos incrementar a variável de
controle dentro do laço de repetição, pois isso também é automático, ou seja, essa
variável (I) será incrementada de 1 (um) automaticamente. Saindo do laço de repetição,
calcula-se a média aritmética e a imprime em seguida.

2) Fazer um algoritmo que calcule e escreva o valor de S.

S = 1 / 1 + 2 / 2 + 4 / 3 + 8 / 4 + ... (100 termos)

Solução
Início
Inteiro: NUM, DEN, I
Real: S
NUM ← 1
DEN ← 1
S←0
para I de 1 até 100 faça
S ← S + NUM / DEN
NUM ← NUM * 2
DEN ← DEN + 1

40
Fim para
Escreva (“Soma = ”, S)
Fim
Neste exercício temos de somar frações. O numerador é multiplicado por 2 e o
denominador é incrementado de 1. São 100 frações e não temos que ler nada neste
exercício. A cada iteração alteramos os valores das variáveis NUM (numerador) e DEN
(denominador) Ao final, imprimimos o valor da soma (S).

4.2.2) Exercícios Propostos


1) Sendo H= 1 + 1 / 2 + 1 / 3 + 1 / 4 + ... + 1 / N, fazer um algoritmo para gerar o
número H. O número N é lido através de uma unidade de entrada qualquer uma única
vez.
2) Fazer um algoritmo que calcule e escreva a soma dos 50 primeiros termos da
seguinte série :
S = 1000 / 1 - 997 / 2 + 994 / 3 - 991 / 4 + ...
3) Fazer um algoritmo que leia a resposta das pessoas (sim ou não) sobre uma pesquisa
que tratava da opinião sobre um cosmético lançado no mercado. Sabendo-se que foram
entrevistadas 2000 pessoas, calcule e imprima:
a) o número de pessoas que responderam sim;
b) o número de pessoas que responderam não;
c) a porcentagem de pessoas do sexo feminino que responderam sim (em relação ao
total de mulheres);
d) a porcentagem de pessoas do sexo masculino que responderam não (em relação ao
total de homens).
4) O sistema de avaliação da disciplina ‘Introdução à Internet’ obedece aos seguintes
critérios:
- durante o semestre são dadas três notas;
- a nota final é obtida pela média aritmética das notas dadas durante o curso;
- é considerado aprovado o aluno que obtiver a nota final superior ou igual a 6,0
e que tiver comparecido a um mínimo de 80% das aulas. Considere aulas dadas = 100.
Fazer um algoritmo que:
a) leia um conjunto de dados contendo o número de matrícula, as três notas e a
freqüência (números de aulas freqüentadas) de 100 alunos;
b) calcule e imprima a nota final de cada aluno (média do aluno);

41
c) calcule e imprima a nota média da turma (média da turma);
d) calcule e imprima o total de alunos reprovados;
e) imprima para cada aluno o número de matrícula, a freqüência, a nota final e o código
(aprovado ou reprovado).

4.3) Repetição com Teste no final (Repita ... até)


Essa estrutura nos permite fazer o teste da condição no final do comando repita.
Sintaxe

Repita

< sequencia de comandos>

até < condição >

Para sair do comando de repetição, a “condição” tem de se tornar verdadeira, ou seja, os


comandos pertencentes à estrutura de repetição “repita ... até” serão executados até que
uma condição se torne verdadeira. Isto porque o teste é feito no final do comando.

Exemplo:

I←1
Repita
Escreva (“I = “, I)
I←I+1
Até I > 3

Portanto, as diferenças em relação às duas estruturas vistas anteriormente são:


- os comandos serão executados enquanto a “condição” for falsa;
- e serão executados pelo menos uma vez.
42
4.3.1) Exercícios Resolvidos
1) Construir um algoritmo para calcular a média de um conjunto de 100 valores inteiros
fornecidos em uma unidade de entrada qualquer utilizando o comando repita ... até.
Solução:
Início
Inteiro: NUM, I, SOMA
Real: MEDIA
I←1
SOMA ← 0
Repita
escreva (“Digite um número”)
leia (NUM)
SOMA ← SOMA + NUM
I←I+1
Até I > 100
MEDIA ← SOMA / 100
Escreva (“Média = ”, MEDIA)
Fim
Veja como se escreve a estrutura de repetição. Os comandos internos à estrutura são os
mesmos do comando “enquanto ... faça”. A mudança está na condição que, no comando
repita, é escrita e analisada no final. E, por causa disso, os comandos que ficam no laço
são executados pelo menos uma vez, diferentemente das outras duas estruturas de
repetição vistas anteriormente. Neste exercício, temos de somar todos os números. Por
isso essa etapa é feita dentro do comando de repetição. Então temos que ler o número,
somá-lo com o que se tinha, ou seja, com aquele valor que estava armazenado na
variável SOMA e incrementar o contador I somando mais 1 (um). Este contador serve
para contarmos quantos números serão lidos. Quando atingir 101, a condição se tornará
verdadeira e o comando de repetição será abandonado. Saindo do laço de repetição,
calcula-se a média aritmética e a imprime em seguida.
2) Fazer um algoritmo para calcular e imprimir a seguinte soma. Utilize o comando
“Repita ... Até”.

S = (37*38)/1 + (36*37)/2 + (35*36)/3 + ... + (1*2)/37

Solução

43
Início
Inteiro: NUM1, NUM2, DEN, I
Real: S
I←1
NUM ← 37
NUM2 ← 38
DEN ← 1
S←0
Repita
S ← S + (NUM1 * NUM2) / DEN
NUM1 ← NUM1 – 1
NUM2 ← NUM2 - 1
DEN ← DEN + 1
I←I+1
Até I > 37
Escreva (“Soma = ”, S)
Fim

3) Fazer um algoritmo que leia comprimento e largura de vários terrenos retangulares.


Calcular e imprimir a área de cada um. Utilize o comando de repetição “Repita ... Até”
Início
Real: COMP, LARG, AREA
Caracter: OP
OP ← “S”
Repita
Escreva (“Digite o Comprimento do Terreno:”)
Leia (COMP)
Escreva (“Digite a Largura:”)
Leia (LARG)
AREA ← COMP * LARG
44
Escreva (“Área = ”, AREA)
Escreva (“Deseja continuar?(s/n)”)
Leia (OP)
Até OP = “N”
Fim

4.3.2) Exercícios Propostos


1) Fazer um algoritmo que leia os lados (A,B,C) de 30 paralelepípedos, calcule e
imprima:
a) o volume (V) e a área superficial (S) de cada paralelepípedo. Dados:
V =A.B.C; S =2(A.B+A.C+B.C);
b) a média das áreas.

2) Fazer a simulação completa do algoritmo abaixo:


início
inteiro: A, C, D, E
real: X
A 1 Simulação:

C4
A C D E X Valor(es) Escrito(s)
E1
D C/2 - E
enquanto A < = 3 faça
X  X + ( A + D) / 2
DD*2
AA+1
fim enquanto
CC*2
escreva ( “ D = ” , D )
escreva ( “ C = ”, C)

45
escreva ( “ X = “, X)
fim.

3) Escreva um algoritmo que leia as notas de vários alunos. Calcule e imprima a média
da turma, bem como a situação (mensagem) de cada um deles, conforme critério
apresentado abaixo:
“Aprovado”, caso a nota seja superior a 6,0;
“Final”: se a nota estiver compreendida entre 4,0 e 6,0;
“Reprovado”: se a nota for inferior a 4,0.

46
CAPÍTULO 5 – Procedimento e Função

Objetivos Específicos

• conhecer estruturas modulares;

• aplicar novas maneiras para se desenvolver algoritmos, através da


modularização de programas;

• conhecer as diferenças entre procedimento e função.

5.1) Procedimento
I) Definição
Um procedimento é um bloco de programa, contendo início e fim e será identificado por
um nome, através do qual será referenciado em qualquer parte do programa principal.
II) Características
- É um sub-programa dentro do programa maior;
- Pode usar as variáveis do programa - variáveis globais (*);
- Pode ter suas próprias variáveis - variáveis locais (**);
- Pode ter todas as partes de um programa inclusive outro procedimento;
- Todo Procedimento possui um nome.
(*) – variável global: quando é declarada no início de um programa principal, podendo
ser utilizada por qualquer sub-rotina subordinada (procedimento e função)
(**) – variável local: quando é declarada dentro de uma sub-rotina (procedimento e
função) e é somente válida dentro da rotina à qual está declarada.
III) Sintaxe
Procedimento <nome> [(parâmetros:tipos)] {cabeçalho}
[variáveis locais:tipos]
início
<instruções>
Fim {<nome>}
Ex: procedimento SOMAR (A,B:inteiro)
R: inteiro

47
Início {passagem de parâmetro por valor}
R←A+B
Escreva (“Resultado=”,R)
Fim

OU: {passagem de parâmetro por referência}

Procedimento SOMAR (A,B: inteiro; var R:inteiro)


AUX: inteiro
início
AUX ← A + B
R ← AUX
fim
Veja que existem dois tipos de construção de procedimentos. O primeiro com passagem
de parâmetro(s) por valor e o outro, com passagem de parâmetro(s) por referência.
Nos programas onde se utiliza procedimento(s) com passagem de parâmetro(s) por
valor, as variáveis globais que estão trabalhando como parâmetros de entrada do
procedimento passam seus valores para os parâmetros locais, isto é, aqueles que se
encontram no cabeçalho do procedimento. Veja os exercícios resolvidos a seguir.
Naqueles programas em que se utiliza procedimento(s) com passagem de parâmetro(s)
por referência, veja que tudo que acontece com os parâmetros da chamada do
procedimento, acontece também com os parâmetros do cabeçalho do procedimento. Por
este motivo, não há a necessidade de se imprimir o resultado dentro do procedimento.
Isso pode ser feito no programa principal, ou seja, logo depois da chamada do
procedimento. Para que um parâmetro seja por referência, basta colocar a palavra VAR
antes do parâmetro, no cabeçalho do procedimento. Veja os exercícios resolvidos a
seguir. Lembre-se: um procedimento só é executado quando for chamado.
IV) Exercícios Resolvidos
1) Ler 3 pares de números inteiros, calcular e imprimir a soma de cada par
separadamente. Utilizar procedimento com passagem de parâmetros por valor
para calcular a soma de 2 números.
início
inteiro X, Y, I {variáveis globais}
procedimento SOMAR (A,B:inteiro)

48
R: inteiro {variável local}
Início
R←A+B
Escreva (“Resultado=”,R)
Fim {SOMAR}
{Programa Principal}
I←1
enquanto I < = 3 faça
escreva (“Digite 2 números inteiros:”)
leia (X, Y)
SOMAR (X, Y) {passagem de parâmetro por valor}
I←I+1
fim enquanto
fim
Explicando:
No exercício anterior, foi criado um procedimento para calcularmos a soma de dois
números quaisquer. Primeiramente, declaramos as variáveis globais, aquelas que podem
ser utilizadas em todo o programa (X, Y, I). Em seguida, declaramos o procedimento
que foi denominado de SOMAR. Ele possui dois parâmetros, já que pretendemos somar
dois números inteiros. Estes parâmetros, portanto, devem ser do tipo inteiro.
No procedimento, criamos uma variável local para fazer o cálculo da soma (R). Em
seguida, fizemos o cálculo da soma e imprimimos o resultado.
Tudo que for calculado dentro de um procedimento com passagem de parâmetro(s) por
valor e que você quiser imprimir tem que ser impresso dentro do referido procedimento.
Não pode ser devolvido ao programa principal. O mesmo não ocorre quando a
passagem de parâmetro é por referência.
2) Resolver o exercício anterior utilizando “passagem de parâmetro por referência”
início
inteiro X, Y, Z, I
Procedimento SOMAR (A,B: inteiro; var R:inteiro)
AUX: inteiro
início

49
AUX ← A + B
R ← AUX
Fim {SOMAR}
{Programa Principal}
I←1
enquanto I < = 3 faça
escreva (“Digite 2 números inteiros:”)
leia (X, Y)
SOMAR (X, Y, Z)
Escreva (“RESULTADO =”, Z)
I←I+1
fim enquanto
fim
Explicando
Observe que, diferentemente do exercício anterior, onde o procedimento era com
passagem de parâmetro(s) por valor, criamos um parâmetro com passagem por
referência (var R:inteiro). O parâmetro R irá corresponder com o parâmetro Z, da
chamada do procedimento. Os dois apontam para a mesma referência na memória. Por
isso, o que acontece com um, acontece com o outro. Tudo por causa daquela palavrinha
var que precede o parâmetro R.
Então, não há necessidade de se imprimir o cálculo da soma dentro do procedimento.
Isso pode ser feito no corpo do programa principal através do parâmetro Z.
Uma vantagem de se utilizar procedimento com passagem de parâmetro(s) por
referência é que se pode utilizar o resultado devolvido pelo procedimento para se fazer
outro tipo de operação. Imagine se quiséssemos acumular o resultado de todas as
somas? Isso seria perfeitamente possível neste algoritmo. Bastaria criar uma variável
global inteira S, por exemplo, e, no programa principal, após a chamada do
procedimento, fazer o cálculo (S ← S + Z). Não se poderia esquecer de zerar a variável
S antes do comando de repetição “enquanto ... faça”.
V) Exercícios Propostos
1) Fazer um algoritmo que leia 100 números inteiros calcule e imprima o CUBO de
cada um deles. Utilizar procedimento com passagem de parâmetros por valor.
2) Fazer um algoritmo que leia 100 números inteiros, dois a dois (50 pares), e faça a
troca do primeiro pelo segundo, em cada par. (passagem de parâmetros por referência).

50
3) Fazer um algoritmo que leia 50 pares de números inteiros, referentes a catetos de
triângulos retângulos, calcule e imprima a hipotenusa de cada um dos triângulos.
(passagem por valor e referência)

5.2) Função
I) Definição
Uma função é um bloco de programa, contendo início e fim e será identificado por um
nome, através do qual será referenciado em qualquer parte do programa principal.
II) Características e diferenças em relação a procedimento:
→ a função possui, obrigatoriamente, parâmetro;
→ um procedimento é usado como um comando qualquer;
→ uma função sempre fará parte de uma expressão;
→ uma função sempre devolverá um resultado.
III) Sintaxe
Função <nome>[(parâmetros:tipos)]:<tipo da função>
[(variáveis : tipos)]
início
<instruções>
<nome>:<expressão ou resultado>
Fim {<nome>}

Ex.: função ABSOL (X:inteiro) : inteiro


AUX: inteiro
início
se X<0
então
AUX ← X * (-1)
senão
AUX ← X
fim se
51
ABSOL ← AUX
Fim
A função difere do procedimento principalmente na maneira como é chamada. Vimos
que para se chamar um procedimento, basta colocar o seu nome e os parâmetros. Em se
tratando de função, não é bem assim. A função sempre virá acompanhada de um
comando ou uma expressão. Por exemplo, escreva (SOMAR(X,Y)). Ou ainda: 3 *
SOMAR(X,Y) / 2. Isso é possível com função. No primeiro exemplo, seria impresso o
valor da soma de X com Y. No segundo, veja que o procedimento faz parte da
expressão. O resultado da soma de X com Y seria multiplicado por 3 e, depois, o
resultado dividido por 2.
Utilizando-se procedimento, isso não seria possível, pois o procedimento não pode fazer
parte de uma expressão. Ele é chamado sem a companhia de ninguém.
E como seria com procedimento? Deveríamos criar uma terceira variável (parâmetro),
por referência, chamar o procedimento e utilizar a variável global, que corresponde com
este parâmetro, na expressão.
Veja também que o resultado da função é sempre atribuído ao nome da função, que
trabalha como se fosse um parâmetro de saída de dados.

IV) Exercícios Resolvidos


1)Ler 3 pares de números inteiros, calcular e imprimir a soma de cada par
separadamente. Utilizar função para calcular a soma de 2 números.
início
inteiro X, Y, I
função SOMAR (A,B: inteiro)
AUX: inteiro
início
AUX ← A + B
SOMAR ← AUX
Fim {SOMAR}
{programa principal}
I←1
enquanto I < = 3 faça
escreva (“Digite 2 números inteiros:”)
leia (X, Y)
52
Escreva (“RESULTADO =”, SOMAR (X, Y))
I←I+1
fim enquanto
fim
Explicando
Observe que a forma de se escrever uma função é um pouco diferente de procedimento.
Há a declaração do tipo da função já que o seu nome funciona como uma variável. No
final da função, há a devolução do resultado para o nome da função.
No programa principal, faz-se a chamada da função junto com o comando “escreva”.

2) Fazer um algoritmo que leia 30 números inteiros e imprimir o absoluto de cada um


deles. Utilizar função para calcular ABSOLUTO.
Início
Inteiro: A, I
função ABSOL (X:inteiro) : inteiro
AUX: inteiro
início
se X<0
então
AUX ← X * (-1)
senão
AUX ← X
fim se
ABSOL ← AUX
fim
para I de 1 até 30 faça
escreva (“Digite um número inteiro:”)
leia (A)
escreva (“Absoluto =”, ABSOL(A))
fim para
fim
53
V) Exercícios Propostos
1)Fazer um algoritmo que leia 100 números inteiros calcule e imprima o CUBO de cada
um deles. Utilizar função para calcular o CUBO.
2)Fazer um algoritmo que leia 50 pares de números inteiros, referentes a catetos de
triângulos retângulos, calcule e imprima a hipotenusa de cada um dos triângulos.
Utilizar função para calcular HIPOTENUSA.

54
Bibliografia

1 - Farrer, Harry e outros - Programação Estruturada de Computadores :


Algoritmos Estruturados - Rio de Janeiro Guanabara Dois.

2 - Guimarães, Ângelo de Moura e Lages, Alberto de Castilho.


Algoritmos e Estruturas de Dados - Rio de Janeiro : LTC
Editora S.A.

3 - MANZANO, José Augusto N.G..;OLIVEIRA, Jayr Figueredo de . Algoritmos:


Lógica para desenvolvimento de programação . São Paulo: Érica.

4 - Saliba, W.L.C., Técnicas de programação: uma Abordagem Estruturada, Makron,


São Paulo.

5- SALVETTI, Dirceu Douglas & BARBOSA, Lisbete Madsen. Algoritmos. São Paulo:
Makron-Books.

6 - TERADA, R.;SETZER, W.introdução à Computação e à Construção de Algoritmos.


São
Paulo, Makron Books.

7 - VILLAS, Marcos V.; VILLAS BOAS, L. Programação: Conceitos , Técnica e


Linguagens. Rio de Janeiro: Editora Campus.

55

Você também pode gostar