Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

FACULDADE DE VIÇOSA
DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
DET 109 [PROGRAMAÇÃO DE COMPUTADORES I]
APOSTILA
[Maria Vanderléa de Queiroz]
1º Semestre – 2013
Sumário
1 SISTEMAS DE NUMERAÇÃO ........................................................................................................................ 3 
2 ALGORITMO ................................................................................................................................................ 9 
3 Estrutura Condicional ................................................................................................................................ 21 
4 ESTRUTURAS DE REPETIÇÃO ..................................................................................................................... 28 
5 MÓDULOS ................................................................................................................................................. 37 
6 VETORES ................................................................................................................................................... 45 
DET109 [Programação de Computadores I]
1 SISTEMAS DE NUMERAÇÃO
Para registrar informações sobre quantidades foram criados diversos métodos de representá-
las. O método usual é o sistema de numeração posicional de base 10. Isso significa que a 
posição ocupada por cada algarismo em um número altera seu valor de uma potência de 10 
(na base 10) para cada casa à esquerda. 
Por exemplo, no sistema decimal, de base 10, no número 125 o algarismo 1 representa 100 
(uma centena ou 102), o 2 representa 20 (duas dezenas ou 2x101) e o 5 representa 5 mesmo 
(5 unidades ou 5x100). Assim, em nossa notação, 125 = 1x102 + 2x101 + 5x100 
1.1 BASE DE UM SISTEMA DE NUMERAÇÃO
A base de um sistema é a quantidade de algarismos disponível na representação. A base 10 é 
a mais usualmente empregada, embora não seja a única utilizada. Exemplos de outras bases 
no nosso dia a dia acontecem como comprar uma dúzia de rosas ou uma grosa de parafusos 
(base 12) e também, uma partida de futebol que dura 90 minutos. 
Os computadores utilizam a base 2 (sistema binário) e os programadores, por facilidade, usam 
em geral uma base que seja uma potência de 2, tal como a base hexadecimal, 24 ou 
eventualmente ainda a base octal, 23.
Na base 10, dispomos de 10 algarismos para a representação do número: 0, 1, 2, 3, 4, 5, 6, 
7, 8 e 9. Na base 2, seriam apenas 2 algarismos: 0 e 1. Na base 16, seriam 16: os 10 
algarismos aos quais estamos acostumados, mais os símbolos A, B, C, D, E e F, representando 
respectivamente 10, 11, 12, 13, 14 e 15 unidades. Generalizando, temos que uma base b 
qualquer disporá de b algarismos, variando entre 0 e (b-1).
A representação 125.3810 (base 10) significa 1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2
Generalizando, representamos uma quantidade N qualquer, numa dada base b, com um 
número tal como segue:
Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n sendo que 
an.bn + .... + a2.b2 + a1.b1 + a0.b0 é a parte inteira e 
a-1.b-1 + a-2.b-2 + .... + a-n.b-n é a parte fracionária.
Intuitivamente, sabemos que o maior número que podemos representar com n algarismos, na 
base b, será o número composto n vezes pelo maior algarismo disponível naquela base (ou 
seja, b-1). Por exemplo, o maior número que pode ser representado na base 10 usando 3 
algarismos será 999 (ou seja, 103 - 1 = 999).
Generalizando, podemos ver que o maior número inteiro N que pode ser representado, em 
uma dada base b, com n algarismos (n "casas"), será N = bn - 1. Assim, o maior número de 2 
algarismos na base 16 será FF16 que, na base 10, equivale a 25510 = 162 - 1.
3
DET109 [Programação de Computadores I]
1.2 REPRESENTAÇÃO BINÁRIA
Os computadores modernos utilizam apenas o sistema binário, isto é, todas as informações 
armazenadas ou processadas no computador usam apenas duas grandezas, representadas 
pelos algarismos 0 e 1. Essa decisão de projeto deve-se à maior facilidade de representação 
interna no computador, que é obtida através de dois diferentes níveis de tensão. Havendo 
apenas dois algarismos, portanto dígitos binários, o elemento mínimo de informação nos 
computadores foi apelidado de bit (uma contração do inglês binary digit).
Na base 2, o número "10" vale dois. Mas se 102 = 210, então dez é igual a dois? Não, dez não 
é e nunca será igual a dois! 
Na realidade, "10" não significa necessariamente "dez". Nós estamos acostumados a associar 
"10" a "dez" porque estamos acostumados a usar o sistema de numeração decimal. O número 
102 seria lido "um-zero" na base 2 e vale 210 (convertido para "dois" na base dez), 
105 seria lido "um-zero" na base 5 e vale 510 (convertido para "cinco" na base dez), 
1010 pode ser lido como "um-zero" na base 10 ou então como "dez" na base dez, 
1016 seria lido "um-zero" na base 16 e vale 1610 (convertido para "dezesseis" na base dez), etc.
Toda vez que um número for apresentado sem que seja indicado em qual sistema de 
numeração ele está representado, entenderemos que a base é dez. Sempre que outra base for 
utilizada, a base será obrigatoriamente indicada.
A representação binária é perfeitamente adequada para utilização pelos computadores. No 
entanto, um número representado em binário apresenta muitos bits, ficando longo e passível 
de erros quando manipulado por seres humanos normais como, por exemplo, os 
programadores, analistas e engenheiros de sistemas. Para facilitar a visualização e 
manipulação por programadores de grandezas processadas em computadores, são usualmente 
adotadas as representações octal (base 8) e principalmente hexadecimal (base 16). 
Ressaltamos mais uma vez que o computador opera apenas na base 2 e as representações 
octal e hexadecimal não são usadas no computador, elas se destinam apenas à manipulação 
de grandezas pelos programadores.
1.2.1Atividades
a) Qual a representação em binário do número 57?
Solução: Para encontrarmos esta representação podemos fazer divisões sucessivas por 2 e 
marcar todos os restos e ao final o que sobrou como pode ser visto abaixo.
57 2 Pegando os dígitos marcados na direção da seta, temos o nº na 
base 2, 1 1 1 0 0 11 28 2
0 14 2
0 7 2
1 3 2 Outra forma de encontrar o número é considerar as potências da 
base 2 e ligar, colocar um, naquelas que serão usadas para 
somar o valor desejado como mostrado abaixo:
1 1
25 24 23 22 21 20
32 16 8 4 2 1
1 1 1 0 0 1 = 32+ 16+ 8+ 0+ 0+ 1= 57
b) De maneira inversa, o número 101012 representa qual número decimal?
Vamos colocar todos os números e somar as potências de duas 
correspondentes.
1 0 1 0 1
1x24 0x23 1x22 0x21 1x20
=16+ 0+ 4+ 1+ 1 = 21
4
DET109 [Programação de Computadores I]
1.2.2Exercícios
a) Qual a representação binária do número 68?
b) Quala representação em decimal do número 111012?
1.3 REPRESENTAÇÃO EM OCTAL E EM HEXADECIMAL
Em projetos de informática, isto é, nos trabalhos realizados pelos programadores, analistas e 
engenheiros de sistemas, é usual representar quantidades usando sistemas em potências do 
binário. Octal e principalmente hexadecimal, são utilizados para reduzir o número de 
algarismos da representação e conseqüentemente facilitar a compreensão da grandeza e evitar 
erros. No sistema octal, base 8, cada três bits são representados por apenas um algarismo 
octal, de 0 a 7. No sistema hexadecimal, base 16, cada quatro bits são representados por 
apenas um algarismo hexadecimal, de 0 a F.
Em Computação e Eletrônica, as bases mais utilizadas para sistemas de numeração são:
- Binária (base 2)
- Octal (base 8)
- Decimal (base 10)
- Hexadecimal (base 16)
1.3.1Atividades
c) Qual a representação em octal do número 157?
Solução: Para encontrarmos esta representação podemos fazer divisões sucessivas por 8 e 
marcar todos os restos e ao final o que sobrou como pode ser visto abaixo.
157 8 Pegando os dígitos marcados na direção da seta, temos o nº na 
base 8, 2 3 55 19 8
3 2
Outra forma de encontrar o número é considerar as potências da 
base 8 e ligar, colocar um, naquelas que serão usadas para somar o 
valor desejado como mostrado abaixo:
82 81 80
64 8 1
2 3 5 = 2x64+ 3x8+ 5x1= 157
d) De maneira inversa, o número 20711 representa qual número decimal?
Vamos colocar todos os números e somar as potências de duas 
correspondentes.
2 0 7 1 1
2x84 0x83 7x82 1x81 1x80
=8192+ 0+ 448+ 8+ 1 = 8649
e) Posso dizer que o número 180 está na base octal? Justifique sua resposta.
f) Qual a representação em hexadecimal do número 2150?
Solução: Para encontrarmos esta representação podemos fazer divisões sucessivas por 16 
e marcar todos os restos e ao final o que sobrou como pode ser visto abaixo.
238
0
16 Pegando os dígitos marcados na direção da seta, temos o nº na 
base 16, 9 4 C
5
DET109 [Programação de Computadores I]
12 148 16
 4 9
Outra forma de encontrar o número é considerar as potências da 
base 8 e ligar, colocar um, naquelas que serão usadas para somar o 
valor desejado como mostrado abaixo:
162 161 160
256 16 1
9 4 12 = 9x256+ 4x16+ 12x1= 2380
g) De maneira inversa, o número 1AB21 representa qual número decimal?
Vamos colocar todos os números e somar as potências de duas 
correspondentes.
1 A B 2 1
1x164 Ax163 Bx162 2x161 1x160
=65536+ 40960+ 2816+ 32+ 1 = 109345
1.3.2Exercícios
c) Qual a representação octal do número 111?
d) Qual a representação em decimal do número 77108?
e) Qual a representação hexadecimal de 4268?
f) Qual a representação em decimal do número 8048?
1.3.3Lista de exercícios complementar
http://www.questoesdeconcursos.com.br/pesquisar/disciplina/arquitetura-de-computadores/assunto/sistemas-de-
numeracao?di=93&page=3&pp=&ss=249
1. Coloque V(Verdadeiro) ou F(Falso). Deixe os cálculos na solução da questão.
a) ( ) No sistema binário, a operação de multiplicação dos números 1011 e 101 
resulta no número 1000101 (CESPE - 2011 - EBC - Analista - Administração de Sistemas).
b) ( ) No sistema binário, a operação de subtração dos números 101101 e 100111 
tem como resultado o número 000110. (CESPE - 2011 - EBC - Analista - Administração de 
Sistemas)
c) ( ) A soma dos números binários 11001 e 10111 é o binário 110000; a soma dos 
números hexadecimais A2E e C1F é o hexadecimal 1A4D; e a soma dos números octais 
376 e 427 é o octal 1025. (CESPE - 2008 - MPE-RR - Analista de Sistemas)
d) ( ) Considere que, em uma operação, os números binários 1100 e 1111 sejam 
somados em um microprocessador. Nesse caso, o resultado dessa operação, em 
notação binária, corresponde a 10011. (CESPE - 2011 - FUB - Técnico de Laboratório - Física – 
Específicos)
e) A soma dos endereços representados em hexadecimal pelos números 243A e B7D6 
resulta no endereço DC10, também representado na base 16. (CESPE - 2010 - MPU - Técnico 
de Informática)
f) O endereço codificado em hexadecimal como 10F é representado na base 2 pelo 
número 100001111. (CESPE - 2010 - MPU - Técnico de Informática)
2. Nos sistemas de numeração, da conversão do número 120 na base octal para a base 
hexadecimal, resulta: (FUNCAB - 2010 - SEJUS-RO - Analista de Sistemas)
a) ( ) 80 b) ( ) 2E c) ( ) 3E8 d) ( ) 50 e) ( ) 1010000
3. Se o sistema decimal é utilizado pelos seres humanos, o sistema binário constitui a base 
para a representação da informação nos computadores. Nesse contexto, um equipamento 
6
DET109 [Programação de Computadores I]
dispõe de três displays, o primeiro que mostra números em formato decimal, o segundo 
em binário e o terceiro em hexadecimal, havendo uma correspondência entre as 
representações. Se o display decimal mostra o número 250, os equivalentes em binário e 
em hexadecimal mostrarão, respectivamente, (FGV - 2010 - CODESP-SP - Analista de Sistemas - Tipo 
1)
a) ( ) 11111010 e FA b) ( ) 11111010 e FE. c) ( ) 11111010 e FC. 
d) ( ) 11111110 e FE. e) ( ) 11111110 e FA. 
4. Seja N uma base de numeração, e os números
 . Sabendo-se que a igualdade B + D = A + E.C é 
válida, o produto de valores válidos para a base N é (CESGRANRIO - 2011 - TRANSPETRO - Analista 
de Sistemas Júnior)
a) ( ) 24 b) ( ) 35 c) ( ) 36 d) ( ) 42 e) ( ) 45 
5. Em relação aos sistemas de numeração e representação de dados, analise as seguintes 
afirmativas: (FUMARC - 2011 - BDMG - Analista de Sistemas)
I. O número 10001 em binário corresponde ao número 17 na representação decimal.
II. D na representação hexadecimal corresponde ao número 1110 em binário.
III. BBB na representação hexadecimal corresponde ao número 3003 na representação 
decimal. 
Marque a alternativa CORRETA:
a) apenas as afirmativas I e II são verdadeiras.
b) apenas as afirmativas I e III são verdadeiras.
c) apenas as afirmativas II e III são verdadeiras.
d) todas as afirmativas são verdadeiras.
6. 1001+1010=10011 no sistema de numeração binário é equivalente a (COPEVE-UFAL - 2011 - 
UFAL - Analista de Tecnologia da Informação)
a) 9+8=17 no sistema de numeração decimal. 
b) 10+11=21 no sistema de numeração decimal. 
c) 9+10=19 no sistema de numeração decimal. 
d) 7+12=19 no sistema de numeração decimal. 
e) 11+12=23 no sistema de numeração decimal. 
7. Considere o quadro abaixo: (FCC - 2011 - TRT - 1ª REGIÃO (RJ) - Analista Judiciário - Tecnologia da 
Informação)
Os valores que preenchem correta e respectivamente as colunas Binário, Octogonal e 
Hexadecimal são 
a) 11001 e 101101; 23 e 43; 11 e 1B. 
b) 11000 e 101100; 20 e 53; 10 e 1A. 
c) 10111 e 101010; 22 e 54; 10 e 1C. 
d) 11010 e 101011; 21 e 53; 11 e 1A. 
e) 10111 e 101001; 21 e 45; 12 e 1A. 
8. Multiplicando-se os hexadecimais A3 e C5, obtém-se (FCC - 2011 - NOSSA CAIXA 
DESENVOLVIMENTO - Analista de Sistemas)
a) 7C29 b) 7DAF c) 7D6F d) 7EF9 e) 7EA9
7
DET109 [Programação de Computadores I]
9. O resultado de 15AF subtraído de 17FA, em hexa, é (FCC - 2011 - NOSSA CAIXA 
DESENVOLVIMENTO - Analista de Sistemas)
a) 25 b) 200 c) 24B d) 24C e) DB5
10.Um sistema de numeração é um conjunto de regras que permite ler e escrever números. 
Sobre os sistemas de numeração é CORRETO afirmar: (IESES - 2010 - CRM-DF - Assistente de 
Tecnologia da Informação)
I. O sistema decimal, que representa números em base 10, é um sistema de numeração 
em que todas as quantidades são representadas utilizando o conjunto de símbolos S = { 0, 
1, 2, 3, 4, 5, 6, 7, 8, 9 }. 
II. O sistema binário, que representa números em base 2, é um sistema de numeração em 
que todas as quantidades são representadas utilizando o conjunto de símbolos S = { 0, 
1 }. 
III. O sistema octal, que representa números em base8, é um sistema de numeração em 
que todas as quantidades são representadas utilizando o conjunto de símbolos S = { 1, 2, 
3, 4, 5, 6, 7, 8 }. 
IV. O sistema hexadecimal, que representa números em base 16, é um sistema de 
numeração em que todas as quantidades são representadas utilizando o conjunto de 
símbolos S = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }. 
A sequência correta é: 
a) Apenas as assertivas I, II e IV estão corretas. 
b) Apenas as assertivas I e II estão corretas. 
c) Apenas as assertivas I, II e III estão corretas. 
d) As assertivas I, II, III e IV estão corretas. 
11.Todo sistema de computação moderno é construído de modo a ser capaz de armazenar, 
interpretar, armazenar e manipular informações codificadas de qual forma?
a) Decimal b) Octal. c) Binária. d) Hexadecimal. 
12.Considere A=1010 e B=1100, sendo esses valores representados em binário. O valor de y 
para = A.B, ou seja, y =Aand B, é: (FUNCAB - 2010 - PRODAM-AM - Analista de Tecnologia da 
Informação - Banco de Dados)
a) 0110 b) 1001 c) 1000 d) 1110 f) 10110 
13.Um administrador de sistemas, ao analisar o conteúdo de um arquivo binário, percebeu 
que o primeiro byte desse arquivo é, em hexadecimal, igual a 9F, que corresponde, em 
decimal, ao valor (CESGRANRIO - 2010 - BNDES - Analista de Sistemas – Suporte)
a) 16 b) 99 c) 105 d) 159 e) 234 
14.Considere os dois números abaixo:
X = 2577377 (octal) 
Y = AFEFF (hexadecimal)
Assinale a alternativa que apresenta o resultado da subtração (X - Y), expresso no sistema de 
numeração decimal. (FUNIVERSA - 2010 - MPE-GO - Técnico de Informática)
b) 38564948 b) 1856738 c) 7052342 d) 105432 e) 0
15.Considerando o início em zero, o sistema de numeração hexadecimal tem a mesma 
representação do sistema decimal até o número (FCC - 2010 - TRE-RS - Técnico Judiciário - 
Programação de Sistemas)
a) 1 b) 9 c) 10 d) 15 e) 16
16.Um odômetro binário digital mostra 10010010 no mostrador. Os dois números que se 
seguem a partir desse número, são: (FGV - 2009 - MEC – Documentador)
a) 10010011 e 10010111 b) 10010011 e 10010101 c) 10010011 e 10010100 
d) 10010101 e 10010110 e) 10010101 e 10010111 
8
DET109 [Programação de Computadores I]
2 ALGORITMO
2.1 CONCEITO 
1. "Serve como modelo para programas, pois sua linguagem é intermediária à linguagem 
humana e às linguagens de programação, sendo então, uma boa ferramenta na validação 
da lógica de tarefas a serem automatizadas.“ 
2. “Os algoritmos, servem para representar a solução de qualquer problema, mas no caso do 
Processamento de Dados, eles devem seguir as regras básicas de programação para que 
sejam compatíveis com as linguagens de programação.”
3. “Um procedimento para resolver um problema matemático (ex. achar o máximo divisor 
comum) em um número finito de passos que frequentemente envolve a repetição de uma 
operação; ou de forma mais abrangente: um procedimento passo-a-passo para resolver 
um problema ou realizar algum objetivo.” (Manber, 1989:1)
4. Em Matemática: “sequência finita de regras, raciocínios ou operações que, aplicada a um 
número finito de dados, permite solucionar classes semelhantes de problemas (por 
exemplo, algoritmo para extrais uma raiz cúbica)”.
5. Em Informática: “conjunto das regras e procedimentos lógicos perfeitamente definidos que 
levam à solução de um problema em um número finito de etapas”.
O significado da palavra é muito similar ao de uma receita, procedimento, técnica, 
rotina. Um algoritmo é um conjunto finito de regras que fornece uma seqüência de 
operações para resolver um problema específico. Segundo o dicionário do prof. Aurélio 
Buarque de Holando um algoritmo é um: "Processo de cálculo, ou de resolução de um grupo 
de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras 
formais para a obtenção de resultado ou de solução de problema." 
Knuth (1968,1973), uma das pessoas mais respeitadas na área de algoritmos 
computacionais, indicou uma lista de cinco propriedades que são amplamente aceitas como 
requisitos para um algoritmo:
Finitude: “Um algoritmo deve sempre terminar após um número finito de etapas”.
Definição: “Cada passo de um algoritmo deve ser definido com precisão; as ações a 
serem executadas deverão ser especificadas rigorosamente e sem ambiguidades para cada 
caso”.
Entrada: “Valores que são dados ao algoritmo antes que ele inicie. Estas entradas são 
tomadas a partir de um conjunto de objetos especificados”.
Saída: “...os valores resultantes das ações do algoritmo relacionadas com as entradas 
especificadas”.
Eficácia: “...todas as operações a serem realizadas no algoritmo deve ser 
suficientemente básicas que podem, em princípio, ser feitas com precisão e em um período de 
tempo finito por um homem usando papel e lápis”.
2.2 FORMAS DE REPRESENTAÇÃO
2.2.1Descrição Narrativa
Nesta forma de representação os algoritmos simples são expressos diretamente em 
linguagem natural.
9
DET109 [Programação de Computadores I]
1. Receita de bolo
Misture os ingredientes
Unte a forma com manteiga
Despeje a mistura na forma
Se houver coco ralado então 
 despeje sobre a mistura
Leve a forma ao forno
Enquanto não corar
 deixe a forma no forno
Retire do forno
Deixe esfriar
2. Tomar um banho
Entrar no banheiro e tirar a roupa
Abrir a torneira do chuveiro
Entrar na água
Ensaboar-se
Sair da água
Fechar a torneira
Enxugar-se
Vestir-se
3. Trocar um pneu furado
Afrouxar ligeiramente os parafusos
Suspender o carro
Retirar os parafusos e o pneu
Colocar o pneu reserva
Apertar os parafusos
Abaixar o carro
Dar o aperto final nos parafusos
4. Calcular média de um aluno
Obter as suas 2 notas de provas
Calcular a média aritmética
Se a média for maior que 7, o aluno foi 
aprovado,
senão ele foi reprovado
5. Calcular o IMC e o peso ideal de uma 
pessoa
Obter o peso de uma pessoa
Obter a altura de uma pessoa
Obter o sexo de uma pessoa 
Calcular o IMC dividindo-se o peso pelo 
quadrado da altura (IMC = peso/altura2)
Se o sexo for feminino 
Exibir o IMC
Peso Ideal = (62.1 * altura) – 44.7
Se o sexo for masculino
Peso Ideal = (72.7 * altura) – 58
Exibir o Peso Ideal
6. Calcular a distância entre dois 
pontos(x1,y1) e (x2,y2)
Obter o valor de X1
Obter o valor de y1
Obter o valor de x2
Obter o valor de Y2
Calcular a distância
 Distancia = 22 )12()12( yyxx −+−
Exibir Distancia
2.2.2Fluxograma
6. Fluxograma Convencional 
É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam 
ações (instruções, comandos) distintos. 
– Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica 
sua popularidade
– Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo 
(subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se 
preocupa com detalhes de implementação do programa
Início e fim
Decisão Operação de atribuição
Operação de Saída
Operaçã
o de Entrada
EXEMPLO: Cálculo da média de duas notas de um aluno
10
DET109 [Programação de Computadores I]
Não existe consenso entre os especialistas sobre qual seria a melhor maneira de 
representar um algoritmo. Atualmente a maneira mais comum de representar-se algoritmos é 
através de uma pseudo-linguagem ou pseudo-código. Esta forma de representação tem a 
vantagem de fazer com que o algoritmo seja escrito de uma forma que está próxima de uma 
linguagem de programação de computadores. Algoritmo de encontrar a menor temperatura 
dentro de registros de temperaturas mostrada na seção anterior usou linguagem natural para 
representar o algoritmo. 
2.2.3Conceitos Importantes
PROGRAMA é uma seqüência de instruções. O programa deve ser escritonuma LINGUAGEM 
DE PROGRAMAÇÃO; as linguagens naturais têm ambigüidades e podem dar margem a 
diferentes interpretações.
HARDWARE é o conjunto de dispositivos físicos do computador, o equipamento.
SOFTWARE são os programas que permitem que o equipamento saiba o que realizar, que ele 
funcione.
MEMÓRIA (escaninhos no modelo hipotético) é um dispositivo físico para armazenar 
programas e dados.
PROCESSADOR (operador e máquina de calcular no modelo hipotético) é o dispositivo que 
realiza o processamento.
DISPOSITIVOS DE ENTRADA E SAÍDA OU PERIFÉRICOS (no modelo hipotético 
corresponde à caixa de entrada, caixa de saída, máquina de escrever) são formas de 
11
DET109 [Programação de Computadores I]
comunicação entre o usuário e o computador. Ex.: leitoras de disco, monitores, teclados, 
vídeos, impressoras, etc.
BIT é a menor unidade de informação de um computador, pode assumir os valores 0 ou 1.
BYTE é o conjunto de oito bits.
SISTEMA OPERACIONAL é a coleção de programas que gerencia e aloca recursos de 
hardware e de software. Exemplos de tarefas que um sistema operacional realiza são: leitura 
de dados pelo teclado, impressão de informações no vídeo, gerenciamento da execução de 
vários programas pela CPU, gerenciamento da memória principal e da memória secundária 
para uso dos programas em execução, etc. Ex.: Linux, Unix, Windows XP, OS2, MS-DOS.
LINGUAGEM DE MÁQUINA é o conjunto de instruções que podem ser interpretados e 
executados diretamente pela CPU de um dado computador. É específica para cada 
computador.
LINGUAGEM ASSEMBLER (Linguagem de Baixo Nível) representação da linguagem de 
máquina através de códigos mnemônicos. Também é específica de cada máquina.
LINGUAGEM DE ALTO NÍVEL (Linguagem de Programação) é uma linguagem formal que 
independe do conjunto de instruções da linguagem de máquina do computador. Cada instrução 
de alto nível equivale a várias instruções da linguagem de máquina, sendo assim mais 
produtiva. Ex.: Pascal, C, Algol, BASIC, Lisp, Prolog, Java, PHP, etc. Esta linguagem se 
aproxima da linguagem humana e pode ser traduzida por programas especiais em linguagem 
de máquina.
COMPILADOR é um tradutor de programas escritos em uma linguagem de programação para 
programas em linguagem de máquina. Uma vez que o programa foi convertido para código de 
máquina, este pode ser executado independente do compilador e do programa original.
SISTEMA - Um conjunto interligado de programas (e, eventualmente, também de 
equipamentos).
2.2.4Exercícios
1. Faça um algoritmo que descreva o procedimento para trocar um pneu de um carro.
2. Uma agência de previsão do tempo armazena diariamente a temperatura média de uma 
determinada região. Cada uma dessas temperaturas fica arquivada em um cartão, com a 
data e o horário da coleta. Você deve desenvolver um algoritmo que irá descobrir qual a 
menor temperatura registrada nos arquivos da agência. Lembre-se que as temperaturas 
podem ser negativas ou positivas.
3. Você está dirigindo um ônibus que vai do Rio de Janeiro para Fortaleza. No início temos 32 
passageiros no ônibus. Na primeira parada, 11 pessoas saem do ônibus e 9 entram. Na 
segunda parada, 2 pessoas saem do ônibus e 2 entram. Na parada seguinte, 12 pessoas 
entram e 16 pessoas saem. Na próxima parada, 5 pessoas entram no ônibus e 3 saem. 
Qual a cor dos olhos do motorista do ônibus?
4. Foram pintadas cinco casas com cinco cores diferentes. Em cada casa mora uma pessoa de 
nacionalidade diferente. Cada um dos proprietários dessas casas bebe uma bebida 
diferente, tem um animal de estimação diferente e pratica um determinado esporte. Essas 
três características: bebidas, animais de estimação e esportes são únicos para cada 
proprietário, não existe repetição. Segundo as lendas, existe um problema de lógica, criado 
por Albert Einstein, de difícil solução, mas possível. Este problema é genial pois não possui 
pegadinhas e não precisa de um grande número de conhecimento extra. Para resolvê-lo 
você deve aplicar a lógica e ter muita perseverança. Os fatos que devem ser considerados 
são os seguintes: 
1. O inglês mora na casa vermelha. 
12
DET109 [Programação de Computadores I]
2. O sueco tem cães. 
3. O dinamarquês bebe chá. 
4. A casa verde fica a esquerda da casa branca. 
5. O dono da casa verde bebe café. 
6. A pessoa que joga futebol cria pássaros. 
7. O dono da casa amarela joga beisebol. 
8. O homem que mora na casa do centro bebe leite. 
9. O norueguês mora na primeira casa. 
10. O homem que joga vôlei mora ao lado da pessoa que tem gatos. 
11. O homem que tem um cavalo mora ao lado do homem que joga beisebol. 
12. A pessoa que joga tênis bebe cerveja. 
13. O alemão joga hóquei. 
14. O norueguês mora ao lado da casa azul. 
15. O homem que joga vôlei tem um vizinho que bebe agua. 
O problema é: Qual proprietário tem como animal de estimação o peixe?
5. Faça um algoritmo que calcule a área de uma mesa de jantar (redonda ou retangular).
6. Dois caçadores estão perdidos em uma floresta, sem munição e prestes a morrer de fome. 
Um deles, conhecedor da flora, conseguiu achar uma planta muito nutritiva. Entretanto, 
para comê-la, eles têm de esquentá-la por 30 segundos exatos senão ela os matará. 
Porém, para marcar o tempo, eles só têm duas ampulhetas, uma que marca 22 segundos e 
outra que marca 14 segundos. Como eles conseguirão marcar o tempo?
7. Você acaba de encontrar uma caixa. Ao abri-la, você encontra nove moedas de ouro 
idênticas e um bilhete que diz que uma das moedas é falsa (foi forjada com um metal que 
possui um peso diferente do outro, mas que é imperceptível pela comparação unitária feita 
pelas mãos). Você também dispõe de uma balança de dois pratos. Como descobrir qual a 
moeda diferente usando apenas três vezes a balança e ainda dizer se ela é mais leve ou 
mais pesada? 
8. Em um lado de uma ponte estão cinco pessoas que precisam atravessá-la. Está escuro e 
elas possuem apenas uma lanterna que deve ser sempre utilizada durante a travessia da 
ponte que suporta a passagem de apenas duas pessoas simultaneamente. Essas pessoas 
possuem idades diferentes levando, portanto, tempos diferentes para atravessar a ponte: 
uma delas leva 1 minuto, outra; 3 minutos, a terceira; 6 minutos a quarta 8 e a última leva 
20 minutos. Como elas devem fazer para que todos atravessem a ponte em no máximo 30 
minutos?
Você pode praticar interativamente no seguinte endereço: 
http://www.mdig.com.br/index.php?itemid=1014
9. Em um lado de um rio se encontram: três missionários e três canibais. Existe apenas uma 
canoa capaz de levar apenas duas pessoas de cada vez. Sabendo que, caso o número de 
canibais seja maior do que o de missionários, esses serão devorados por eles, como fazer 
para atravessar todos eles em segurança para a outra margem do rio? Lembre-se que, 
para que outros entrem no barco, os que estão lá precisam descer e nesse momento pode 
ocorrer uma tragédia! A canoa nunca faz qualquer viagem (seja de ida ou de volta) 
sozinha.
10.Desenvolva um fluxograma para representar o algoritmo 5 (cálculo do IMC e do peso ideal) 
em descrição narrativa apresentado anteriormente.
13
DET109 [Programação de Computadores I]
11.Considere duas cidades A e B. A cidade A encontra-se nas coordenadas (x1,y1) e a cidade 
B em (x2,y2). Desenvolva um algoritmo que calcule a distância entre elas (DAB) e exiba a 
melhor rota para sair de A e chegar em B, considerando que se a distância entre as cidades 
(DAB) for maior ou igual a 400 km exiba a mensagem “Ir pela BR262”, caso seja menor 
que 400 km “Ir para BR101”.
12.Considere o seguinte algoritmo em descrição narrativa para calcular e exibir as raízes de 
uma equaçãodo segundo grau. Desenvolva um fluxograma que represente este algoritmo.
Obter o valor de A
Obter o valor de B
Obter o valor de C
Calcular delta = ACB 42 −
Se delta for menor que zero entao
Exiba mensagem “Não existem raízes reais”
Senão
Calcule 
A
deltaBx
2
1 +−=
Calcule 
A
deltaBx
2
2 −−=
Exibir x1
Exibir x2
13. Para calcular o salário líquido de um funcionário temos o seguinte algoritmo em descrição 
narrativa. Desenvolva o fluxograma correspondente a esta situação.
Obter o número de horas trabalhadas (NHT)
Obter o valor da hora trabalhada (VHT)
Obter o número de dependentes (NDEP)
Obter o número de horas extras (NHE)
Obter o número de dias faltosos (FALTAS)
Calcular o salário Bruto (SBRUTO) multiplicando-se NHT por VHT
Calcular desconto do INSS que é igual a 10% do salário bruto
Calcular o salário família (SFAMILIA) que é 5% do salário bruto para cada dependente
Se houver hora extra
Calcular o valor a pagar pelas horas extras (VEXTRA), 50% a mais de VHT multiplicado 
por NHT
Calcular o desconto por falta (VFALTAS) igual a FALTAS multiplicado por VHT
Calcular salário líquido
Calcular o desconto do imposto de renda (IR) de forma simplificada. Caso salário seja maior ou 
igual a 2000,00 descontar 6%
Calcular e exibir o salário líquido
SLIQUIDO = SBRUTO + SALARIOFAMILIA + VEXTRA – INSS – IR – VFALTAS
2.2.5PSEUDOCÓDIGO 
Esta é uma forma de representação de algoritmos rica em detalhes, como a definição dos tipos 
das variáveis usadas no algoritmo. Por assemelhar-se bastante à forma em que os programas 
são escritos, encontra muita aceitação. Na verdade, esta representação é suficientemente 
geral para permitir a tradução de um algoritmo nela representado para uma linguagem de 
programação específica seja praticamente direta.
Neste curso, utilizaremos a linguagem Visualg para descrever os algoritmos em pseudocódigo.
14
DET109 [Programação de Computadores I]
O Visualg é um programa que permite editar, interpretar e executar algoritmos em uma 
linguagem próxima do português estruturado, pseudocódigo como um programa normal de 
computador. Este é um bom recurso para quem inicia em programação pois permite em um 
mesmo ambiente criar e entender o processo de execução. 
O formato geral de um algoritmo no Visualg é o seguinte:
algoritmo "semnome"
// Função :
// Autor :
// Data : 8/8/2011
// Seção de Declarações 
var
inicio
 // Seção de Comandos 
fimalgoritmo
2.2.6 Exemplos
EXEMPLO 1
algoritmo "CalculaMedia"
// Função : Calcula a média aritmética entre duas notas
// Autor : Maria Vanderléa de Queiroz
// Data : 8/8/2005
var
 nota1,nota2, media: real
inicio
 leia(nota1)
 leia(nota2)
 media <- (nota1+nota2)/2
 escreva("Media = ",media)
fimalgoritmo
EXEMPLO 2
algoritmo "CalculaIMC"
// Função : 
// Autor :
// Data : 8/8/2011
// Seção de Declarações 
var
 peso, altura, imc: real
inicio
 // Seção de Comandos
 leia(peso)
 leia(altura)
 imc <- peso/(altura * altura)
 escreval("IMC = ",imc)
fimalgoritmo
 
2.2.7Etapas para execução de um programa
Considerando uma linguagem compilada, em primeiro lugar é preciso escrever o programa 
fonte. Este é o processo de edição. Nesta fase o programa fonte é como um texto, porém com 
uma estrutura característica, como mostrado nos exemplos anteriores. 
O programa fonte é um texto que nós entendemos, porém o computador não. Para que o 
algoritmo escrito seja entendido pelo computador, ele precisa ser traduzido para uma 
linguagem que o computador possa entender e executar, uma linguagem mais próxima dos 
comandos da máquina. Este processo de tradução chama-se compilação. 
15
DET109 [Programação de Computadores I]
Após a compilação gera-se um programa executável, que pode enfim, entrar na fase de 
execução.
Outra forma de execução de um programa é a interpretação. A execução de um programa 
interpretado é em geral mais lenta que o programa compilado. Por outro lado, o uso de 
programas interpretados permite que trechos de código possam ser trocados por novos 
facilmente, fazendo com que o programa fonte possa mudar durante sua execução. Este é um 
dos grandes motivos de se usar programas interpretados em sistemas especialistas. Duas 
linguagens para as quais podemos encontrar interpretadores são Lisp e Prolog.
No nosso caso, utilizaremos o Visualg para implementar nossos algoritmos. Este é ambiente 
que permite editar e interpretar algoritmos em sua linguagem própria. Assim, precisamos:
(1) editar (escrever e corrigir) o algoritmo,
(2) executar, de forma interpretada, isto é, um a um os comandos,
(3) observar o comportamento das variáveis, 
(4) fornecer ou gerar valores de entrada e 
(5) observar os resultados de saída.
Por permitir estas etapas, o Visualg é uma ferramenta inicial que após o entendimento dos 
conceitos fundamentais pode ser facilmente descartada para utilizar-se um outro ambiente de 
programação específico para uma determinada linguagem de programação.
2.3 LINGUAGEM DO VISUALG
• Formato geral do algoritmo
algoritmo "semnome"
// Função : Coloque aqui a função deste algoritmo
// Autor : Coloque aqui seu nome 
// Data : 29/2/2012
// Seção de Declarações: são colocadas as variáveis necessárias ao processamento 
var
inicio
// Seção de Comandos 
fimalgoritmo
• Variáveis
o Identificam informações necessárias no processamento
o Precisam ser declaradas antes de serem utilizadas
o Possuem nome e tipo (inteiro, real, caracter, ...)
- Com relação ao nome da variável: deve começar com uma letra e conter 
letras, números e underline, até um limite de 30 caracteres. É sugestão 
que os nomes sejam significativos.
- Com relação ao tipo:
• inteiro: define variáveis numéricas sem do tipo inteiro, sem casas 
decimais
• real: define variáveis numéricas do tipo real, com casas decimais
• caractere: define variáveis com sequências de caracteres ou 
strings. Estas podem representar nome de pessoas, nome de 
cidades, telefone entre outros. 
• logico: variáveis com apenas dois valores, verdadeiro ou falso, 
conhecidos como tipos booleanos.
• Existem variáveis que podem ser do tipo vetor que será 
apresentado posteriormente. 
o Observe os exemplos 1 e 2 no item 2.2.6.
16
DET109 [Programação de Computadores I]
• Operador de atribuição: permite atribuir valores
o A atribuição de valores a variáveis é feita com o operador <- . 
o Do lado esquerdo fica a variável à qual se deseja atribuir um valor e do lado 
direito pode-se colocar qualquer expressão (constante, variáveis, expressões) 
desde que seu resultado tenha tipo igual ou compatível ao da variável. 
Exemplos:
x <- 3
salario <- 4580.50
nomeDoEstudante <- “Jose Florentino de Jesus”
terminar <- falso
delta <- b^2 – 4 * a * c
• Operadores Aritméticos
+,- Operadores unários, isto é, são aplicados a um único operando. São os 
operadores aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o 
operador unário - inverte o sinal do seu operando, o operador + não altera o 
valor em nada o seu valor.
\ Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma 
precedência do operador de divisão
tradicional.
+,-,*,
/
Operadores aritméticos tradicionais de adição, subtração, multiplicação e 
divisão. Por convenção, * e / têm
precedência sobre + e -. Para modificar a ordem de avaliação das operações, 
é necessário usar parênteses
como em qualquer expressão aritmética.
MOD ou
%
Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 
= 2. Tem a mesma
precedência do operador de divisão tradicional.
^ Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência 
entre os operadores aritméticos
binários (aqueles que têm dois operandos).
+ Operador de concatenação destrings (isto é, cadeias de caracteres), quando 
usado com dois valores
(variáveis ou constantes) do tipo "caractere". Por exemplo: "Rio " + " de 
Janeiro" = "Rio de
Janeiro".
• Operadores Relacionais
=,<,
>,<=, 
>=, 
<>
Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou 
igual a, diferente de. São utilizados em expressões lógicas para se testar a 
relação entre dois valores do mesmo tipo. Exemplos: 3 = 3 ( 3 é igual a 3?) 
resulta em VERDADEIRO ; "A" > "B" ("A" está depois de "B"?)resulta em 
FALSO.
Importante: No VisuAlg, as comparações entre strings não diferenciam as letras maiúsculas 
das minúsculas. Assim, "ABC" é igual a "abc". Valores lógicos obedecem à seguinte ordem: 
FALSO < VERDADEIRO.
• Operadores Lógicos
nao Operador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO = 
VERDADEIRO. Tem a maior precedência entre os operadores lógicos. 
ou Operador que resulta VERDADEIRO quando um dos seus operandos lógicos 
for verdadeiro. 
e Operador que resulta VERDADEIRO somente se seus dois operandos lógicos 
forem verdadeiros. 
xou Operador que resulta VERDADEIRO se seus dois operandos lógicos forem 
diferentes, e FALSO se forem iguais. 
17
DET109 [Programação de Computadores I]
• Linearização de expressões: para a construção de algoritmos que realizam cálculos 
matemáticos, todas as expressões aritméticas devem ser linearizadas, ou seja, 
colocadas em linhas, devendo também ser feito o mapeamento dos operadores da 
aritmética tradicional para os do Português Estruturado. Exemplos.
Representação tradicional Representação computacional
3
321 xxx ++ (x1 + x2 + x3)/3
22 )12()12( yyxx −+− raizq((x2-x1)^2+(y2-y1)^2)
A
deltaBx
2
1 +−=
x1 <- (-B + raizq(delta)) / (2 * A)
• Comandos de entrada e saída:
o Saída: escreva ou escreval: escreve no dispositivo de saída padrão, na tela, o 
conteúdo de cada uma das expressões que compõem a lista de expressões, que 
devem estar separadas por vírgulas.
 
É possível especificar o número de espaços no qual se deseja escrever um 
determinado valor. Por exemplo, o comando escreva(x:5) escreve o valor da 
variável x em 5 espaços, alinhado-o à direita. Para variáveis reais, pode-se 
também especificar o número de casas fracionárias que serão exibidas. Por 
exemplo, considerando y como uma variável real, o comando 
escreva(y:6:2)escreve seu valor em 6 espaços colocando 2 casas decimais. 
Outros exemplos:
escreva(“Valor da média = “,media)
escreval(“Raiz cúbica de 27 = “,27 ^(1/3))
escreval(“x = “, x:4:1, y+3:4))
o Entrada: leia
- Forma geral: leia(<lista de variáveis>)
- Descrição: recebe valores digitados pelo usuário, atribuindo-os às 
variáveis cujos nomes estão em <lista de variáveis>, é respeitada a 
ordem especificada na lista. 
- Exemplos:
leia(nome) 
leia(salario)
Após esta introdução de conceitos fundamentais fica mais fácil entender os algoritmos 
dos exemplos 1 e 2 anteriores. Na próxima sessão são apresentadas as versões em Visualg de 
algoritmos vistos anteriormente.
2.4 TRADUÇÃO DE ALGORITMOS
Traduza os algoritmos em fluxograma à esquerda para algoritmos em Visualg.
18
DET109 [Programação de Computadores I]
2.5 EXERCÍCIOS 
1. Faça um algoritmo que leia as 3 notas de um aluno (x1, x2 e x3), no intervalo de 0 a 10, 
calcule e exiba a média ponderada das notas deste aluno, com pesos p1 = 2, p2 = 3 e p3 
= 5. A média aritmética ponderada é dada por:
 
Teste seu algoritmo para x1 = 5, x2 = 7 e x3 = 8. O resultado deverá ser 7.1.
2. Um sistema de equações lineares do tipo: 
, pode ser resolvido de acordo com: 
 
19
_
xp =
Ou seja, neste caso, somatório das notas 
multiplicadas pelos respectivos pesos e tudo 
dividido pela soma dos pesos
nota1,nota2,nota3
3
)321( notanotanotamedia ++←
media
fim
início algoritmo "calculaMedia"
var
 nota1,nota2,nota3: real //dados de entrada
 media: real //processamento e saída
inicio
 escreva("Digite 1ª nota: ")
 leia(nota1)
 escreva("Digite 2ª nota: ")
 leia(nota2)
 escreva("Digite 3ª nota: ")
 leia(nota3)
 media <- (nota1+nota2+nota3)/3
 escreva("Média = ",media)
fimalgoritmo 
início
x1,y1,x2,y2
distancia
fim
distancia = 
algoritmo "distancia2Pontos"
var
 x1,y1,x2,y2: inteiro
 distancia: real
inicio
 escreva("Digite a coordenada x1: ")
 leia(x1)
 escreva("Digite a coordenada y1: ")
 leia(y1)
 escreva("Digite a coordenada x2: ")
 leia(x2)
 escreva("Digite a coordenada y2: ")
 leia(y2)
 distancia <- raizq((x2-x1)^2+(y2-y1)^2)
 escreva("Distância (",x1,",",y1,") e ","(",x2,",",y2,") = 
",distancia)
DET109 [Programação de Computadores I]
Desenvolva um algoritmo que lê os coeficientes a,b,c,d,e e f, calcule e exiba os valores de x e 
y. Teste seu algoritmo com a = 2, b = 3, c = 8, d = 5, e = -1 e f = 3. O resultado será x = 1 e 
y = 2.
3. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem 
do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que a percentagem 
do distribuidor seja de 25% e os impostos de 46%, desenvolva um algoritmo que leia o 
custo de fábrica de um carro e exiba o custo ao consumidor. 
4. Faça um algoritmo que leia o tempo de duração de um evento em uma fábrica expressa 
em segundos e mostre-o expresso em horas, minutos e segundos.
5. Escrever um algoritmo que lê um valor inteiro em reais (R$) e calcula qual o menor 
número possível de notas de 100, 50, 20, 10, 5, 2 e 1 em que o valor lido pode ser 
decomposto. Escrever o valor lido e a relação de notas necessárias.
20
DET109 [Programação de Computadores I]
3 ESTRUTURA CONDICIONAL
3.1 INTRODUÇÃO
Na vida real tomamos decisões a todo o momento baseadas em uma situação existente.
Em um algoritmo, chamamos esta situação de condição. Associada a uma condição, existirá 
uma alternativa possível de ações.
se <condição> entao
<ações (uma ou mais) a serem realizadas se a condição for verdadeira>
fimse
3.2 EXEMPLOS E FORMA GERAL
se (saldo < 0) entao
 escreval(“Saldo insuficiente”)
fimse
se (lado1 = lado2) e (lado2 = lado3) entao
 escreval(“Triângulo eqüilátero”)
fimse
se <condição> entao
<ações (uma ou mais) a serem realizadas se a condição for verdadeira>
senao
<ações (uma ou mais) a serem realizadas se a condição for falsa>
fimse
Exemplos: 
se (lado1 = lado2) e (lado2 = lado3) entao
 escreval(“Triângulo equilátero”)
senao
 escreval(“Não é triângulo equilátero”)
fimse
algoritmo "CalculaAreadoCirculo"
var 
 area, raio: Real
inicio
escreva ("Entre com raio do círculo")
leia (raio)
se Raio > 0 entao
 area <- PI*(raio^2)
 escreva ("A área do círculo de raio ", raio, " é ", area)
senao
 escreva ("Raio não pode ser nulo ou negativo!")
fimse
fimalgoritmo
3.2.1Exercícios
1. Considere as variáveis abaixo:
var
 x,y: inteiro
achou: lógico
k,z: real
21
DET109 [Programação de Computadores I]
cor: caracter
Avalie as expressões lógicas abaixo e preencha os espaços com os valores lógicos 
V(verdadeiro) ou F(falso):
x y k z Cor x%2=0 x>y (x+y)>z Cor=”branco”
10 5 2.5 3.0 “azul”
13 25 0.5 45.0 “branco”
2. Complete o algoritmo abaixo de modo a exibir o resultado final, caso a média seja 
maior ou igual a 70, o algoritmo deve exibir a mensagem “APROVADO” caso contrário 
exibir a mensagem “REPROVADO OU EM PROVA FINAL”.
algoritmo "Media3Notas"
// Este algoritmo tem como entrada as 3 notas de um estudante
// Calcula e exibe a média aritmética considerando-as
// Utiliza uma estrutura sequencial de comandos
var
 nota1,nota2,nota3,media: real
inicio
 escreva("Nota 1: ")
 leia(nota1)
 escreva("Nota 2: ")
 leia(nota2)
 escreva("Nota 3: ")leia(nota3)
 media <- (nota1 + nota2 + nota3)/3
 escreval("Media = ",media)
fimalgoritmo
 
3. Observe os trechos de códigos abaixo, eles são equivalentes? Explique sua resposta.
(I)
se (media >= 70) entao
escreval(“Aprovado”)
senao
escreval(“Reprovado ou em prova final”)
fimse
(II)
se (media >= 70) entao
escreval(“Aprovado”)
fimse
se (media < 70) entao
escreval(“Reprovado ou em prova final”)
fimse
(III)
se (media >= 70) entao
escreval(“Aprovado”)
se (media < 70) entao
escreval(“Reprovado ou em prova final”)
fimse
fimse
22
DET109 [Programação de Computadores I]
4. O que faz o algoritmo abaixo?
algoritmo "exercicio3"
var
 x,y,z,k: inteiro
inicio
 escreva("digite valor: ") 
 leia(x) 
 k <- x
 escreva("digite valor: ") 
 leia(y) 
 se (y > k) entao
 k <- y
 fimse
 escreva("digite valor: ") 
 leia(z)
 se (z > k) entao
 k <- z
 fimse
 escreval("Resultado = ",k)
fimalgoritmo
5. Escreva um algoritmo que leia um número inteiro. Se o número lido for positivo, 
escreva uma mensagem indicando se ele é par ou ímpar. Se o número for negativo, 
escreva a seguinte mensagem “Este número não é positivo”.
6. Observe e estude o seguinte algoritmo em descrição narrativa. Em seguida implemente 
este algoritmo no Visualg.
7. Observe o fluxograma abaixo, estude-o e depois de entendê-lo, identificar entrada, 
processamento e saída, desenvolva um algoritmo em Visualg que implemente-o.
23
Obter o valor de A
Obter o valor de B
Obter o valor de C
Calcular delta = ACB 42 −
Se delta for menor que zero entao
Exiba mensagem “Não existem raízes reais”
Senão
Calcule 
A
deltaBx
2
1 +−=
Calcule 
A
deltaBx
2
2 −−=
Exibir x1
Exibir x2
Teste seu algoritmo com os dados da 
tabela
x y z k
5 6 7
10 20 8
5 3 2
DET109 [Programação de Computadores I]
8. Avalie o seguinte problema: O IMC é calculado pela fórmula IMC = 


2altura
peso
. A classificação 
é dada de acordo com o seguinte critério:
IMC Classificação IMC Classificação
< 18,5 Magreza 30,0 – 34,9 Obesidade Grau I
18,5 – 24,9 Saudável 35,0 – 39,9 Obesidade Grau II (severa)
25,0 – 29,9 Sobrepeso ≥ 40,0 Obesidade Grau III (mórbida)
Suponha que você tenha que calcular o seu próprio IMC. Que dados precisa como entrada? 
Qual será o processamento? Qual será a saída? Desenvolva um algoritmo que permita calcular 
e exibir o IMC e a respectiva classificação de uma pessoa. Teste-o, invente dados para testar 
as faixas e confirmar a ausência de erros. Ele funcionou corretamente? Teste valores absurdos 
para peso e altura. Seu programa aceita? Se sim, não deveria. Modifique-o para que fique 
mais robusto, isto é, funcione em qualquer situação.
9. Para calcular o salário líquido de um funcionário temos o seguinte algoritmo em descrição 
narrativa. Após estudá-lo, implemente-o no Visualg.
24
Obter o número de horas trabalhadas (NHT)
Obter o valor da hora trabalhada (VHT)
Obter o número de dependentes (NDEP)
Obter o número de horas extras (NHE)
Obter o número de dias faltosos (FALTAS)
Calcular o salário Bruto (SBRUTO) multiplicando-se NHT por VHT
Calcular desconto do INSS que é igual a 10% do salário bruto
Calcular o salário família (SFAMILIA) que é 5% do salário bruto para cada dependente
Se houver hora extra
Calcular o valor a pagar pelas horas extras (VEXTRA), 50% a mais de VHT multiplicado por NHT
Calcular o desconto por falta (VFALTAS) igual a FALTAS multiplicado por VHT
Calcular salário líquido
Calcular o desconto do imposto de renda (IR) de forma simplificada. Caso salário seja maior ou igual a 2000,00 
descontar 6%
Calcular e exibir o salário líquido
SLIQUIDO = SBRUTO + SALARIOFAMILIA + VEXTRA – INSS – IR – VFALTAS
FV
DET109 [Programação de Computadores I]
10. Altere o algoritmo 1 do capítulo anterior, sessão 2.5, para também emitir o resultado, 
uma mensagem de "Aprovado", caso a média seja igual ou superior a 6, ou a mensagem 
"Reprovado", caso contrário. 
11. O que muda no algoritmo se utilizarmos outro critério, como o utilizado na FDV:
Media Resultado
Média >= 70 “APROVADO”
40 <= Média < 70 “EM PROVA FINAL”
Média < 40 “REPROVADO”
12. Elaborar um algoritmo que lê 2 valores a e b e exiba a mensagem: "São múltiplos" ou 
"Não são múltiplos". 
13. Elabore um algoritmo que tendo como entrada a idade de uma pessoa, classifique-o em 
uma das seguintes categorias, exibindo-a: 
Categoria Faixa etárea
Infantil A 5-7
Infantil B 8-10
Juvenil A 11-13
Juvenil B 14-17
Adulto Acima de 18
14. Escreva um algoritmo que leia 3 números inteiros e mostre o maior deles. 
15. Escreva um algoritmo que leia a matrícula de um aluno e suas três notas. Calcule a 
média ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as 
duas restantes, 3. Exiba o código do aluno, suas três notas, a média calculada e uma 
mensagem "APROVADO" se a média for maior ou igual a 6 e "REPROVADO" se a média for 
menor que 6.
16. O cardápio de uma lanchonete é o seguinte: 
Especificação Código Preço
Cachorro quente 100 1,20
Bauru simples 101 2,30
Bauru com ovo 102 2,70
Hambúrger 103 2,50
Cheeseburguer 104 3,20
Refrigerante 105 2,00
Escrever um algoritmo que leia o código do item pedido, a quantidade e calcule o valor a ser 
pago por aquele lanche. Considere que a cada execução somente será calculado um item.
17. Desenvolva um algoritmo que baseando-se no peso e na altura de um indivíduo calcule 
e exiba seu IMC de acordo com a seguinte expressão:
2altura
pesoIMC =
Em seguida, o algoritmo deverá exibir a classificação de acordo com o IMC calculado:
IMC (kg/m2) Classificação
< 18,5 Baixo Peso
18,5 <= IMC <25 Peso Normal
25 <= IMC < 30 Sobrepeso
30 <= IMC < 35 Obeso I
35 <= IMC < 40 Obeso II
IMC >= 40 Obeso III
25
DET109 [Programação de Computadores I]
18. Altere o algoritmo anterior de modo a também calcular e exibir o peso ideal do 
indivíduo. O peso ideal é calculado de acordo com as seguintes expressões:
- para homem, sexo = ‘M’: (72.7 x altura) – 58.0
- para mulheres, sexo = ‘F’: (62.1 x altura) – 44.7
19. Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio 
no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do 
crédito de acordo com a tabela abaixo. Seu algoritmo deve exibir uma mensagem 
informando o saldo médio e o valor do crédito. 
Saldo médio Percentual
de 0 a 200 nenhum crédito
de 201 a 400 20% do valor do saldo médio
de 401 a 600 30% do valor do saldo médio
acima de 601 40% do valor do saldo médio
20. Um usuário deseja um algoritmo onde possa escolher que tipo de média deseja calcular 
a partir de 3 notas. Faça um algoritmo que leia as notas, a opção escolhida pelo usuário, 
calcule e exiba a média. 
1 - aritmética 
2 - ponderada (3,3,4) 
3 – harmônica
Expressões para cálculos das médias
3
)321( notanotanotaéticamediaAritm ++=
)633(
))43()32()31((
++
++
=
xnotaxnotaxnotaradamediaPonde
3
1
2
1
1
1
3
notanotanota
nicamediaHarmo
++
=
21. Um vendedor precisa de um algoritmo que calcule o preço total devido por um cliente. 
O algoritmo deve receber o código de um produto e a quantidade comprada e calcular o 
preço total, usando a tabela abaixo. Mostre uma mensagem no caso de código inválido.
Código
Preço 
unitário
'ABCD' R$ 5,30
'XYPK' R$ 6,00
'KLMP' R$ 3,20
'QRST' R$ 2,50
22. Uma empresa concederá um aumento de salário aos seus funcionários, variável de 
acordo com o cargo, conforme a tabela abaixo. Faça um algoritmo que leia o salário e o 
cargo de um funcionário e calcule o novo salário. Se o cargo do funcionário não estiver na 
tabela, ele deverá, então, receber 40% de aumento. Mostre o salário antigo, o novo salário 
e a diferença. 
Código Cargo Percentual101 Gerente 10%
102 Engenheiro 20%
103 Técnico 30%
23. Elaborar um algoritmo que lê 3 valores a,b,c e verifica se eles formam ou não um 
triângulo. Supor que os valores lidos são inteiros e positivos. Caso os valores formem um 
26
DET109 [Programação de Computadores I]
triângulo, calcular e escrever a área deste triângulo de acordo com as expressões abaixo. 
Se não formam triângulo escrever os valores lidos e uma mensagem informando “não 
formam um triângulo”. Se um dos lados for maior que a soma dos outros dois, os lados 
não formam triângulo. 
)3)(2)(1( ladosladosladossarea −−−=
2
321 ladoladolados ++=
24. Escrever um algoritmo que lê a hora de início de um jogo e a hora do final do jogo 
(considerando apenas horas inteiras) e calcula a duração do jogo em horas, sabendo-se 
que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um 
dia e terminar no dia seguinte. 
25. Escrever um algoritmo que lê um conjunto de 4 valores i, a, b, c, onde i é um valor 
inteiro e positivo e a, b, c, são quaisquer valores reais e os escreva. A seguir: 
a) Se i=1 escrever os três valores a, b, c em ordem crescente. 
b) Se i=2 escrever os três valores a, b, c em ordem decrescente. 
c) Se i=3 escrever os três valores a, b, c de forma que o maior entre a, b, c fique dentre os 
dois.
26. Escrever um algoritmo que lê: 
- a percentagem do IPI a ser acrescido no valor das peças 
- o código da peça 1, valor unitário da peça 1, quantidade de peças 1 
- o código da peça 2, valor unitário da peça 2, quantidade de peças 2 
O algoritmo deve calcular o valor total a ser pago e apresentar o resultado. 
Fórmula : (valor1*quant1 + valor2*quant2)*(IPI/100 + 1)
27. Escrever um algoritmo que lê a hora de início e hora de término de um jogo, ambas 
subdivididas em dois valores distintos : horas e minutos. Calcular e escrever a duração do 
jogo, também em horas e minutos, considerando que o tempo máximo de duração de um 
jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. 
28. Escrever um algoritmo que lê o número de identificação, as 3 notas obtidas por um 
aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação. Calcular a 
média de aproveitamento, usando a fórmula MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + 
ME )/7
A atribuição de conceitos obedece a tabela abaixo:
Média de 
Aproveitamento
Conceito
9,0 A
7,5 e < 9,0 B
6,0 e < 7,5 C
4,0 e < 6,0 D
< 4,0 E
O algoritmo deve escrever o número do aluno, suas notas, a média dos exercícios, a média de 
aproveitamento, o conceito correspondente e a mensagem: APROVADO se o conceito for A,B 
ou C e REPROVADO se o conceito for D ou E. 
29. O departamento que controla o índice de poluição do meio ambiente mantém 3 grupos 
de indústrias que são altamente poluentes do meio ambiente. O índice de poluição 
aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 1º grupo são 
intimadas a suspenderem suas atividades, se o índice cresce para 0,4 as do 1° e 2° grupo 
são intimadas a suspenderem suas atividades e se o índice atingir 0,5 todos os 3 grupos 
devem ser notificados a paralisarem suas atividades. Escrever um algoritmo que lê o índice 
de poluição medido e emite a notificação adequada aos diferentes grupos de empresas. 
27
DET109 [Programação de Computadores I]
4 ESTRUTURAS DE REPETIÇÃO
O VisuAlg implementa as três estruturas de repetição usuais nas linguagens de programação: 
o laço contado para...ate...faca e os laços condicionados enquanto...faca e repita...ate (similar 
ao repeat...until). A sintaxe destes comandos vem a seguir.
4.1 A ESTRUTURA PARA ... FACA
Esta estrutura repete uma sequência de comandos um número pré determinado de vezes. 
Seu formato geral é apresentado abaixo:
para <variável-de-controle> de <valor-inicial> ate <valor-final> [passo <incremento>] faca
<sequência de comandos?
fimpara
variável-de-controle Uma variável que controla a repetição. Deve ser necessariamente 
uma variável de tipo enumerável como o tipo inteiro.
valor-inicial É uma expressão que especifica o valor inicial da variável de 
controle.
valor-final É uma expressão que especifica o valor máximo da variável de 
controle.
incremento É um elemento opcional. Quando presente, precedida pela palavra 
passo, é uma expressão que especifica o incremento que será 
acrescentado à variável de controle em cada repetição. Quando 
esta opção não é utilizada, o valor padrão de <incremento> é 1. 
Vale a pena ter em conta que também é possível especificar 
valores negativos para <incremento>. Por outro lado, se a 
avaliação da expressão <incremento > resultar em valor nulo, a 
execução do algoritmo será interrompida, com a impressão de uma 
mensagem de erro.
fimpara Indica o fim da seqüência de comandos a serem repetidos. Cada 
vez que o programa chega neste ponto, é acrescentado à variável 
contadora o valor de <incremento >, e comparado a <valor-final 
>. Se for menor ou igual (ou maior ou igual, quando <incremento 
> for negativo), a seqüência de comandos será executada mais 
uma vez; caso contrário, a execução prosseguirá a partir do 
primeiro comando que esteja após o fimpara.
<valor-inicial >, <valor-final > e <incremento > são avaliados uma única vez antes da 
execução da primeira repetição, e não se alteram durante a execução do laço, mesmo que 
variáveis eventualmente presentes nessas expressões tenham seus valores alterados.
No exemplo a seguir, os números de 1 a 10 são exibidos em ordem crescente.
algoritmo "NúmerosDe1a10"
var j: inteiro
inicio
para j de 1 ate 10 faca
escreva (j:3)
fimpara
fimalgoritmo
28
DET109 [Programação de Computadores I]
Importante: Se, logo no início da primeira repetição, <valor-inicial > for maior que <valor-
final > (ou menor, quando <incremento> for negativo), o laço não será executado nenhuma 
vez. O exemplo a seguir não imprime nada.
algoritmo "NumerosDe10a1NaoFunciona"
var j: inteiro
inicio
para j de 10 ate 1 faca
escreva (j:3)
fimpara
fimalgoritmo
Este outro exempo, no entanto, funcionará por causa do passo -1:
algoritmo "NumerosDe10a1Eestefunciona"
var j: inteiro
inicio
para j de 10 ate 1 passo -1 faca
escreva (j:3)
fimpara
fimalgoritmo
4.2 A ESTRUTURA REPITA ... ATE
Esta estrutura repete uma sequência de comandos até que uma determinada condição seja 
satisfeita.
Seu formato geral é mostrado abaixo:
repita
<sequência de comandos>
ate <expressão lógica>
repita Indica o início da repetição.
ate <expressão lógica> Indica o fim da <seqüência-de-comandos> a serem repetidos. 
Cada vez que o programa chega neste ponto, <expressão-lógica> 
é avaliada: se seu resultado for FALSO, os comandos presentes 
entre esta linha e a linha repita são executados; caso contrário, a 
execução prosseguirá a partir do primeiro comando após esta 
linha.
Considerando ainda o mesmo exemplo:
algoritmo "NumerosDe1a10"
var j: inteiro
inicio
j <- 1
repita
escreva (j:3)
j <- j + 1
ate j > 10
fimalgoritmo
Importante: Como o laço repita...ate testa sua condição de parada depois de executar sua 
seqüência de comandos, esta seqüência poderá ser executada uma ou mais vezes.
4.3 A ESTRUTURA ENQUANTO ... FACA
Esta estrutura repete uma seqüência de comandos enquanto uma determinada condição 
(especificada através de uma expressão lógica) for satisfeita.
29
DET109 [Programação de Computadores I]
Seu formato geral é apresentado abaixo:
enquanto <expressão-lógica> faca
<seqüência-de-comandos>
fimenquanto
<expressão lógica> Esta expressão é avaliada antes de cada repetição do laço. Quando 
seu resultado for VERDADEIRO, <sequência-de-comandos> é 
executada.
fimequanto Indica o fim da <sequência-de-comandos>que será repetida. 
Cada vez que a execução atinge este ponto, volta-se ao início do 
laço para que <expressão-lógica> seja avaliada novamente. Se o 
resultado desta avaliação for VERDADEIRO, a <sequência-de-
comandos> será executada mais uma vez; caso contrário, a 
execução prosseguirá a partir do primeiro comando após 
fimenquanto.
O mesmo exemplo anterior pode ser resolvido com esta estrutura de repetição:
algoritmo "NumerosDe1a10"
var j: inteiro
inicio
j <- 1
enquanto j <= 10 faca
escreva (j:3)
j <- j + 1
fimenquanto
fimalgoritmo
Importante: Como o laço enquanto ... faca testa sua condição de parada antes de executar 
sua seqüência de comandos, esta seqüência poderá ser executada zero ou mais vezes.
4.4 EXERCÍCIOS
1. Observe o algoritmo abaixo
algoritmo "calculaMediaComRepeticao"
var
nota1,nota2,nota3: real //dados de entrada
media: real //processamento e saída
numeroDeAlunos: inteiro //contador para o número de alunos
inicio
numeroDeAlunos <- 0
repita
escreva("Digite 1ª nota: ")
leia(nota1)
escreva("Digite 2ª nota: ")
leia(nota2)
escreva("Digite 3ª nota: ")
leia(nota3)
media <- (nota1+nota2+nota3)/3
escreval("Média = ",media)
escreval("-----------------")
numeroDeAlunos <- numeroDeAlunos + 1
ate (numeroDeAlunos = 3)
fimalgoritmo
a. Quantas vezes os comandos serão executados? Por que?
30
DET109 [Programação de Computadores I]
b. Explique como fazer para que seja calculada a média para 100 estudantes.
c. Agora vamos calcular a média da turma. Observe o algoritmo modificado abaixo.
algoritmo "calculaMediaComRepeticao"
var
 nota1,nota2,nota3: real //dados de entrada
 media, soma, mediaTurma: real //processamento e saída
 numeroDeAlunos: inteiro //contador para o número de alunos
inicio
numeroDeAlunos <- 0
soma <- 0
repita
 escreva("Digite 1ª nota: ")
 leia(nota1)
 escreva("Digite 2ª nota: ")
 leia(nota2)
 escreva("Digite 3ª nota: ")
 leia(nota3)
 media <- (nota1+nota2+nota3)/3
 escreval("Média = ",media:6:2)
 soma <- soma + media //ACUMULADOR
 escreval("-----------------")
 numeroDeAlunos <- numeroDeAlunos + 1 //CONTADOR
ate (numeroDeAlunos = 3)
mediaTurma <- soma / 3
escreval("-----------------")
escreval("Média da turma = ",mediaTurma:6:2)
fimalgoritmo
d. O que mudou? 
e. Agora vamos contar quantos estudantes conseguiram média maior ou igual a 
60.
 
algoritmo "calculaMediaComRepeticao"
var
 nota1,nota2,nota3: real //dados de entrada
 media, soma, mediaTurma: real //processamento e saída
 numeroDeAlunos, contaAcima60: inteiro //contador para o número de alunos
inicio
 numeroDeAlunos <- 0
contaAcima60 <- 0
soma <- 0
repita
 escreva("Digite 1ª nota: ")
 leia(nota1)
 escreva("Digite 2ª nota: ")
 leia(nota2)
 escreva("Digite 3ª nota: ")
 leia(nota3)
 media <- (nota1+nota2+nota3)/3
 se (media >= 60) entao
 contaAcima60 <- contaAcima60 + 1
 fimse
 escreval("Média = ",media:6:2)
 soma <- soma + media
 escreval("-----------------")
 numeroDeAlunos <- numeroDeAlunos + 1
ate (numeroDeAlunos = 3)
mediaTurma <- soma / 3
31
DET109 [Programação de Computadores I]
escreval("-----------------")
escreval("Média da turma = ",mediaTurma:6:2)
escreval("Número de estudantes com média acima de 60 = ",contaAcima60)
fimalgoritmo
f. O que foi alterado?
2. Desenvolva um algoritmo que leia informações sobre um grupo de 50 pessoas (teste seu 
algoritmo para 3 pessoas e depois reformule o algoritmo para 50 pessoas) e calcule alguns 
dados estatísticos. Para cada pessoa do grupo deve ler o nome da pessoa, a altura, o peso 
e o sexo (“F” para feminino e “M” para o masculino). Calcular e escrever:
a. A média de peso das pessoas (somatório dos pesos de todas as pessoas pela 
quantidade de pessoas);
b. A quantidade total de homens e mulheres e o percentual de cada.
c. Como tornar o número de pessoas da pesquisa flexível? Implemente sua 
solução.
d. O nome da pessoa mais alta.
Solução: Seguem abaixo algoritmos que mostram a construção do algoritmo por partes.
Um processo de repetição para x pessoas.
algoritmo "pesquisa"
var
 pessoas, contaPessoas: inteiro
inicio
 escreva("Quantas pessoas foram entrevistadas ? ")
 leia(pessoas)
 contaPessoas <- 1
 repita 
 escreval("Processando pessoa nº: ",contaPessoas)
 escreval("------------------------")
 contaPessoas <- contaPessoas + 1
 ate (contaPessoas > pessoas)
fimalgoritmo
Processo de repetição para um número determinado de pessoas com a leitura dos 
dados.
algoritmo "pesquisa"
var
 pessoas, contaPessoas: inteiro
 nome: caracter
 peso,altura: real
 sexo: caracter
inicio
 escreva("Quantas pessoas foram entrevistadas ? ")
 leia(pessoas)
 contaPessoas <- 1
 repita
 escreval("Processando pessoa nº: ",contaPessoas)
 escreval("------------------------")
 escreva("Nome: ") leia(nome)
 escreva("Peso: ") leia(peso)
 escreva("Altura: ") leia(altura)
 escreva("Sexo [F - Feminino] ou [M - Masculino]: ") leia(sexo)
 contaPessoas <- contaPessoas + 1
 ate (contaPessoas > pessoas)
fimalgoritmo
Cálculo da média de peso das pessoas.
32
DET109 [Programação de Computadores I]
algoritmo "pesquisa"
var
 pessoas, contaPessoas: inteiro
 nome: caracter
 peso,altura, somapeso, mediaPeso: real
 sexo: caracter
inicio
 escreva("Quantas pessoas foram entrevistadas ? ")
 leia(pessoas)
 contaPessoas <- 1
 somaPeso <- 0
 repita
 escreval("Processando pessoa nº: ",contaPessoas)
 escreval("------------------------")
 escreva("Nome: ") leia(nome)
 escreva("Peso: ") leia(peso)
 escreva("Altura: ") leia(altura)
 escreva("Sexo [F - Feminino] ou [M - Masculino]: ") leia(sexo)
 somaPeso <- somaPeso + peso
 contaPessoas <- contaPessoas + 1
 ate (contaPessoas > pessoas)
 mediaPeso <- somaPeso/pessoas
 escreval("Média de peso das pessoas = ",mediaPeso:5:2)
fimalgoritmo
Cálculo do número de homens e mulheres e seus percentuais.
algoritmo "pesquisa"
var
 pessoas, contaPessoas, homens, mulheres: inteiro
 nome: caracter
 peso,altura, somapeso, mediaPeso: real
 sexo: caracter
inicio
 escreva("Quantas pessoas foram entrevistadas ? ")
 leia(pessoas)
 contaPessoas <- 1
 somaPeso <- 0
 homens <- 0
 mulheres <- 0
 repita
 escreval("Processando pessoa nº: ",contaPessoas)
 escreval("------------------------")
 escreva("Nome: ") leia(nome)
 escreva("Peso: ") leia(peso)
 escreva("Altura: ") leia(altura)
 escreva("Sexo [F - Feminino] ou [M - Masculino]: ") leia(sexo)
 somaPeso <- somaPeso + peso
 se (sexo = "F") entao
 mulheres <- mulheres + 1
 senao
 se (sexo = "M") entao
 homens <- homens + 1
 senao
 escreva("Sexo inesperado, não considerado!")
 fimse
 fimse
 contaPessoas <- contaPessoas + 1
 ate (contaPessoas > pessoas)
 mediaPeso <- somaPeso/pessoas
 escreval("Média de peso das pessoas = ",mediaPeso:5:2)
 escreval("Número de mulheres consideradas = ",mulheres," equivale a ",
(mulheres/pessoas*100):5:2," %")
33
DET109 [Programação de Computadores I]
 escreval("Número de homens considerados = ",homens," equivale a 
",homens/pessoas*100:5:2," %")
fimalgoritmo
Verificação da pessoa mais alta.
algoritmo "pesquisa"
var
 pessoas, contaPessoas, homens, mulheres: inteiro
 nome, nomePessoaMaisAlta: caracter
 peso,altura, somapeso, mediaPeso, maiorAltura: real
 sexo: caracter
inicio
 escreva("Quantas pessoas foram entrevistadas ? ")
 leia(pessoas)
 contaPessoas <- 1
 somaPeso <- 0
 homens <- 0 
 mulheres <- 0
 maiorAltura <- 0
 repita
 escreval("Processando pessoa nº: ",contaPessoas)
 escreval("------------------------")
 escreva("Nome: ") leia(nome)escreva("Peso: ") leia(peso)
 escreva("Altura: ") leia(altura)
 escreva("Sexo [F - Feminino] ou [M - Masculino]: ") leia(sexo)
 somaPeso <- somaPeso + peso
 se (sexo = "F") entao
 mulheres <- mulheres + 1
 senao
 se (sexo = "M") entao
 homens <- homens + 1
 senao
 escreva("Sexo inesperado, não considerado!")
 fimse
 fimse
 se (altura > maiorAltura) entao
 maiorAltura <- altura
 nomePessoaMaisAlta <- nome
 fimse
 contaPessoas <- contaPessoas + 1
 ate (contaPessoas > pessoas)
 mediaPeso <- somaPeso/pessoas
 escreval("Média de peso das pessoas = ",mediaPeso:5:2)
 escreval("Número de mulheres consideradas = ",mulheres," equivale a ",
(mulheres/pessoas*100):5:2," %")
 escreval("Número de homens considerados = ",homens," equivale a 
",homens/pessoas*100:5:2," %")
 escreval("Pessoa mais alta é ",nomePessoaMaisAlta," com ",maiorAltura:5:2," 
m.")
fimalgoritmo
3. Observe o algoritmo abaixo. O que faz o trecho de algoritmo abaixo?
repita
escreva(“Digite sua altura: “) leia(altura)
se (altura <= 0) entao
 escreval(“Altura inválida! “)
fimse
ate (altura > 0)
4. O que há de novo no algoritmo abaixo? 
34
DET109 [Programação de Computadores I]
algoritmo "comandoCaso"
var
nota : inteiro
inicio
 escreva("Entre com a nota do aluno:")
 leia(nota)
 escolha nota
 caso 0,1,2,3
 escreval("Reprovado.")
 caso 5 ate 7, 4
 // A lista não precisa estar em uma ordem específica
 // Só na cláusula ATE o primeiro valor precisam ser menor que o segundo
 escreval("Em final.")
 caso 8 ate 10
 escreval("Aprovado")
 outrocaso
 escreval("Nota inválida.")
 fimescolha
fimalgoritmo
5. Faça com que o processo de leitura da nota e exibição do resultado seja repetitivo e pare 
somente quando a matrícula 0 (zero) for digitada. Lembre-se de validar a matrícula, ela 
deve ser maior ou igual a 0 (zero).
6. Observe a seguinte interação com o usuário feita por um algoritmo em execução no 
Visualg. O computador sorteia um número através do comando n <- randi(10) + 1 e o 
usuário tenta acertar. O algoritmo interage com o usuário dando uma dica se o valor 
fornecido é pequeno ou grande e ao acertar dá os parabéns e mostra o número de 
tentativas. Vamos programar?
Início da execução
Digite palpite de 1 a 10: 5
Tente número menor
Digite palpite de 1 a 10: 2
Tente número maior
Digite palpite de 1 a 10: 3
Parabéns você acertou em 3 !
Fim da execução.
E se desejarmos dar apenas 3 chances ao jogador, o que mudará no algoritmo?
7. Lembra-se de como converter números na notação decimal para a binária? Fazemos 
sucessivas divisões por 2 e consideramos o resto até que não possamos mais dividir e 
consideramos também o quociente ao final. Observe o exemplo abaixo.
 
21 2
1 10 2
0 5 2
1 2 2
0 1
Considerando os restos marcados com tracejado e o último quociente temos o número 
binário 10101.
Descrição narrativa do algoritmo
Considere o número decimal n, no nosso exemplo 21. 
Considere uma variável do tipo caractere, chamada resposta, que nenhum caracter 
armazena inicialmente. 
35
DET109 [Programação de Computadores I]
Divida n por 2 e caso o resto seja 0 concatene o caractere ”0” à resposta, caso seja 1 
concatene ”1”
Armazene em n agora o resultado quociente da divisão do passo anterior.
Repita o processo até que _______________________ .
Desenvolva um algoritmo que tenha como entrada o número inteiro e exiba o número 
binário correspondente.
8. Agora vamos fazer o contrário, dado um número binário vamos descobrir qual é o decimal 
correspondente. Como fazer? Precisamos pegar cada um dos números, 0 (zero) ou 1 (um) 
e multiplicar pela potência de 2 correspondente à posição que ocupa. Por exemplo:
24 23 22 21 20
1 0 1 0 1
1x16 0x8 1x4 0x2 1x1 16+4+1=21
Existem funções que manipulam caracteres que serão úteis:
Exemplificando:
algoritmo "testes"
Var 
 sequencia: caractere
 expoente: inteiro
inicio
sequencia <- "Boa noite"
escreval(compr(sequencia)) // escreverá 9
escreval(copia(sequencia,1,3)) // exibirá Boa
expoente <- 3
escreval(exp(2,expoente)) //exibirá 8
fimalgoritmo
Descrição narrativa do algoritmo
Considere o número binário n do tipo caractere.
Considere o número a ser formado decimal, iniciando com 0 (zero).
Considere um expoente inteiro começando com zero.
Acrescente à variável decimal exp(2,expoente) e passe para o próximo expoente até não 
existir mais caracteres. 
36
DET109 [Programação de Computadores I]
5 MÓDULOS
5.1 INTRODUÇÃO
Módulos ou subalgoritmos: São trechos de algoritmos que efetuam um ou mais cálculos 
determinados. Ao invés de escrever um algoritmo grande, escreva vários algoritmos menores, 
os quais, não isoladamente, mas em conjunto, resolvem o problema proposto. É conveniente 
utilizá-los quando uma determinada tarefa é efetuada em diversos lugares no mesmo 
algoritmo. Ao invés de escrever um trecho diversas vezes, escreva um sub-algoritmo e chame-
o diversas vezes.
_ - Eles reduzem o tamanho do algoritmo.
_ - Facilitam a compreensão e visualização do algoritmo.
_ - São declarados no início do algoritmo e podem ser chamados em qualquer ponto após
_ sua declaração.
_ - Eles podem ser do tipo Funcao que retorna algum valor ou Procedimento que nada 
retorna.
_
5.2 FUNÇÕES
Uma função é um instrumento estático que tem como objetivo retornar um valor ou uma 
informação como parâmetro. A chamada de uma função é feita através da citação do seu 
nome seguido de seus argumentos iniciais entre parênteses. As funções podem ser 
predefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse.
Funções Predefinidas do Visualg
O Visualg vem com bibliotecas de funções predefinidas que você pode utilizar em seus 
programas.
Veja a tabela abaixo:
Abs (valor : real) : real Valor absoluto Logn (valor : real) : real Logaritmo natural (ln)
Arccos (valor : real) : real Arco cosseno Maiusc (c : caracter) : 
caracter
Converte em
Maiúscula
Arcsen (valor : real) : real Arco seno Minusc (c : caracter) : 
caracter
Converte em
Minúscula
Arctan (valor : real) : real Arco tangente Numpcarac (n : inteiro ou 
real) : caracter
Converte um numero
inteiro ou real para
caractere
Asc (s : caracter) : inteiro Retorna o código 
ASCII
Pi : real Valor Pi
Compr (c : caracter) : inteiro Retorna o nº de 
caracateres de c
Pos (subc, c : caracter) : 
inteiro
Retorna a posição do
caractere.
Copia (c : caracter , posini, 
posfin : inteiro) : caracter
Copia um 
determinado
trecho do caractere
Quad (valor : real) : real Elevado quadrado
Cos (valor : real) : real Cosseno Radpgrau (valor : real) : 
real
Converte Radiano para
grau.
Cotan (valor : real) : real Co-tangente Raizq (valor : real) : real Raiz quadrada
Exp (<base>,<expoente>) Potenciação Rand : real Gerador de números
aleatórios entre 0 e 1
Grauprad (valor : real) : real Converte grau para
radiano
Randi (limite : inteiro) : 
inteiro
Gerador de números
inteiros aleatórios com
um limite determinado
Int (valor : real) : inteiro Converte o valor em 
inteiro
Sen (valor : real) : real Seno
Log (valor : real) : real Logaritmo de base 
10
Tan (valor : real) : real Tangente
37
DET109 [Programação de Computadores I]
5.3 FUNÇÕES
A criação de uma função deve ser declarada, com os demais objetos, no início do programa. 
Este tipo de subalgoritmo sempre retorna um e apenas um valor ao algoritmo que lhe chamou. 
Cada função tem associada ao seu valor de retorno um tipo explícito. Da mesma maneira com 
que os parâmetros são fixos para todas as chamadas o retorno também é fixo.
Algoritmo "<nome do algoritmo>"
var
<declaraçãode variáveis globais>
<definição da função>
inicio
< lista de comandos>
fimalgoritmo
Sintaxe da Função
funcao <identificador> ([var]<parâmetros>) <tipo de retorno>
var
<declaração de variáveis locais>
inicio
<lista de comandos>
retorne <variável de retorno>
fimfuncao
Identificador: Nome da função.
Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos 
identificadores para indicar a passagem por referência. Os identificadores são separados por 
vírgula.
Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados 
a separação é feita com ponto-e-vírgulas ';'.
Tipo de retorno da função: Real, Inteiro, Lógico ou Caractere.
Declaração de variáveis locais: idêntica a declaração de variáveis globais. As variáveis 
declaradas localmente tem validade dentro do escopo da função.
Retorne: local onde é colocado a variável de retorno.
Criando Procedimentos
A criação de um procedimento também deve ser declarado, com os demais objetos, no início 
do programa. Este tipo de subalgoritmo nada retorna, apenas executa uma sequência de 
instruções. Os parâmetros são fixos para todas as chamadas.
Sintaxe Procedimento:
procedimento <identificador> ([var]<parâmetros>)
var
<declaração de variáveis locais>
inicio
<lista de comandos>
fimprocedimento
Identificador: Nome do procedimento.
38
DET109 [Programação de Computadores I]
Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos 
identificadores para indicar a passagem por referência. Os identificadores são separados por 
vírgula.
Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados 
a separação é feita com ponto-e-vírgulas ';'.
5.4 APLICAÇÃO DE FUNÇÕES E PROCEDIMENTOS
1. Observe o algoritmo abaixo:
algoritmo "MenuComModulos"
funcao fatorial(n: inteiro): inteiro
var x, fat: inteiro
inicio
 fat <- 1
 para x de 2 ate n faca
 fat <- fat * x
 fimpara
 retorne fat
fimfuncao
funcao somatorio(n: inteiro): inteiro
var soma, contador: inteiro
inicio
 soma <- 0
 para contador de 1 ate n faca
 soma <- soma + contador
 fimpara
 retorne soma
fimfuncao
funcao primo(n: inteiro): logico
var contador,divisores: inteiro
inicio
 divisores <- 0
 para contador de 1 ate n faca
 se (n % contador = 0) entao
 divisores <- divisores + 1
 fimse
 fimpara
 se (divisores = 2) ou (n = 1) entao
 retorne verdadeiro
 senao
 retorne falso
 fimse
fimfuncao
procedimento exibeDivisores(n: inteiro)
var contador, quantos: inteiro
inicio
 quantos <- 0
 para contador de 1 ate n faca
 se (n % contador = 0) entao
 escreva(contador:3)
 quantos <- quantos + 1
 fimse
 fimpara
39
DET109 [Programação de Computadores I]
 escreval
 escreval("Existem ",quantos," divisores.")
fimprocedimento
funcao sorteiAte(n: inteiro): inteiro
var sorteio: inteiro
inicio
 sorteio <- randi(n) + 1
 retorne sorteio
fimfuncao
procedimento converteDecimalBinario(n: inteiro)
var
 numeroDecimal: inteiro
 numeroBinarioEmCaracter: caracter
inicio
 numeroDecimal <- n
 enquanto numeroDecimal > 0 faca
 se (numeroDecimal mod 2) = 0 entao
 numeroBinario <- "0" + numeroBinarioEmCaracter
 senao
 numeroBinario <- "1" + numeroBinarioEmCaracter
 fimse
 numeroDecimal <- numeroDecimal div 2
 fimenquanto
 escreval("A representação binária de", n, " é ", numeroBinarioEmCaracter)
fimprocedimento
procedimento converteBinarioDecimal(numeroBinarioEmCaracter: caracter)
var
 numeroDecimal, expoente, posicao, i: inteiro
inicio
 numeroDecimal <- 0
 expoente <- 0
 para i de 1 ate compr(numeroBinarioEmCaracter) faca
 posicao <- compr(numeroBinarioEmCaracter) - i + 1
 se copia(numeroBinarioEmCaracter,posicao,1)="1" entao
 numeroDecimal <- numeroDecimal + int(exp(2,expoente))
 fimse
 expoente <- expoente + 1
 fimpara
 escreval("A representação decimal de ", numeroBinarioEmCaracter, " é ", numeroDecimal)
fimprocedimento
var //GLOBAIS
 n, opcao: inteiro
inicio //PROGRAMA PRINCIPAL
 repita
 escreval("MENU DE OPÇÕES")
 escreval("--------------")
 escreval("1. Fatorial")
 escreval("2. Somatório")
 escreval("3. Exibe divisores")
 escreval("4. Verifica se é primo")
 escreval("5. Sair")
 escreva("Digite opção: ")
 leia(opcao)
 escolha opcao
40
DET109 [Programação de Computadores I]
 caso 1
 escreva("Digite o nº inteiro e maior que zero: ")
 leia(n)
 escreval("Fatorial(",n,") = ",fatorial(n))
 caso 2
 escreva("Digite o nº inteiro e maior que zero: ")
 leia(n)
 escreval("Somatório de 1 a ",n," = ",somatorio(n))
 caso 3
 escreva("Digite o nº inteiro e maior que zero: ")
 leia(n)
 escreval("Divisores de ",n)
 exibeDivisores(n)
 caso 4
 escreva("Digite o nº inteiro e maior que zero: ")
 leia(n)
 se primo(n) entao
 escreval("O número ",n," é primo.")
 senao
 escreval("O número ",n," não é primo.")
 fimse
 outrocaso
 escreval("Opção inválida")
 fimescolha
 ate (opcao = 5)
 converteBinarioDecimal("1111")
fimalgoritmo
5.5 EXERCÍCIOS
1. Desenvolva no programa principal os comandos para obter os dados do teclado, calcular e exibir 
o IMC, peso ideal e emitir o diagnóstico de uma pessoa.
algoritmo "CalculaIMC"
funcao calculaIMC(peso,altura: real): real
inicio
 retorne (peso/altura^2)
fimfuncao
funcao calculaPesoIdeal(sexo: caracter): real
var pesoIdeal: real
inicio
 se sexo = "F" entao
 pesoIdeal <- (62.1 * altura) - 44.7
 senao
 pesoIdeal <- (72.7 * altura) - 58
 fimse
 retorne pesoIdeal
fimfuncao
procedimento emiteDiagnostico(imc: real)
inicio
 se (imc < 18.5) entao
 escreva("Peso abaixo do ideal!")
 senao
 se (imc < 2409) entao
 escreva("Saudável!")
41
DET109 [Programação de Computadores I]
 senao
 se (imc < 29,9) entao
 escreva("Sobrepeso!")
 senao
 se (imc < 34,9 entao
 escreva("Sobrepeso Grau I")
 senao
 se (imc < 39,9) entao
 escreva("Sobrepeso Grau II")
 senao
 escreva("Sobrepeso Grau III")
 fimse
 fimse
 fimse
 fimse
 fimse
fimprocedimento
var
inicio
 
fimalgoritmo
2. Observe o algoritmo abaixo e:
- Escreva no programa principal os comandos para ler do teclado os dados necessários, 
calcular e exibir o tipo do triângulo e sua área. Teste seu algoritmo várias vezes com os 
seguintes triângulos, completando a tabela abaixo com os resultados obtidos:
Lado 1 Lado 2 Lado 3 Tipo Área
4 5 6
8 8 12
10 10 10
algoritmo "triangulo"
funcao triangulo(a,b,c: real): caracter
var tipo: caracter
inicio
 se ((a > b + c) ou (b > a + c) ou (c > a + b)) entao
tipo <- " As medidas não formam um triangulo. "
 senao
 se (a = b) e (a = c) entao
 tipo := " Eqüilátero "
 senao
 se (a = b) ou (a = c) ou (b = c) entao
tipo <- " Isóceles "
42
DET109 [Programação de Computadores I]
 senao
 tipo := " Escaleno "
 fimse
 fimse
 fimse 
 retorne tipo
fimfuncao
procedimento areaTriangulo(a,b,c: real)
var sp, area: real
inicio
 sp <- (a+b+c)/2
 area <- raizq ( (sp*(sp - a) * ( sp - b) * (sp - c) ))
 escreva("Área calculada = ",area)
fimprocedimento
var
 lado1, lado2, lado3: real
inicio // programa principal
fimalgoritmo
43
- Os comandos que colocou fazem o processamento apenas para um triângulo, como 
realizar os cálculos para um conjunto de 5 triângulos?
algoritmo "triangulo"
funcao triangulo(a,b,c: real):caracter
var tipo: caracter
inicio
 se ((a > b + c) ou (b > a + c) ou (c > a + b)) entao
 tipo <- " As medidas não formam um triangulo. "
 senao
 se (a = b) e (a = c) entao
 tipo := " Eqüilátero "
 senao
 se (a = b) ou (a = c) ou (b = c) entao
 tipo <- " Isóceles "
 senao
 tipo := " Escaleno "
 fimse
 fimse
 fimse 
 retorne tipo
fimfuncao
procedimento areaTriangulo(a,b,c: real)
var sp, area: real
inicio
 sp <- (a+b+c)/2
 area <- raizq ( (sp*(sp - a) * ( sp - b) * (sp - c) ))
 escreva("Área calculada = ",area)
fimprocedimento
var
 lado1, lado2, lado3: real
inicio // programa principal
fimalgoritmo
- Identifique as linhas onde existem variáveis locais e variáveis globais no algoritmo da 
questão 1.
Locais Globais
1
2
6 VETORES 
6.1 INTRODUÇÃO
Vetores – são estruturas de dados, disponíveis nas linguagens de programação, que 
permitem, durante o processamento de um programa, manter e/ou alterar na 
memória, um conjunto de dados de um mesmo tipo, organizados em uma única 
dimensão.
Exemplos:
A = [ 3 5 2 7 8 1 6 9 10 4 ] B=[ -2 4 5 0 -5 0 8 11 
0 13 ]
 
NOME = JOSE S=[ M F M M F F F F M M M 
F F M F]
 MARIA
 CARLA
 PEDRO NOTAS=[6.5 7.9 4.3 8.2 10.0 5.7 8.4 2.1 
9.6 8.1 ] 
 LUCIA 
6.2 OPERAÇÕES BÁSICAS 
1. declaração
2. leitura ou geração dos elementos do vetor
3. processamento, usando e/ou modificando os elementos do vetor
4. impressão dos elementos do vetor
6.2.1DECLARAÇÃO DE VETORES
…
var A, B: vetor [1..10] de inteiro 
 nome : vetor [1..5] de caracter
 s: vetor [1..15] de caracter
…
6.2.2LEITURA E GERAÇÃO
a. Leitura dos elementos de um vetor
...
para i de 1 ate 10 faca 
leia ( A[i] ) {ou}
fimpara
…
…
3
4
para i de 1 ate 10 faca
escreva(“A[“, i ,’] = ” )
leia(A[i])
fimpara
…
b. Leitura dos elementos de 2 vetores de mesma dimensão
...
{ leitura de todo o vetor A, e depois, leitura de todo o vetor B }
para i de 1 ate 10 faca 
leia ( A[i] )
fimpara
para i de 1 ate 10 faca 
leia ( B[i] )
fimpara
…
...
{lendo o 1º elemento do vetor A, o 1º do vetor B, o 2º elemento de A, o 2º elemento 
de B etc} 
para i de 1 ate 10 faca leia( A[i], B[i] ) 
…
{ou}
…
para i de 1 ate 10 faca
escreva( “A[“, i ,”]=’” 
leia( A[i] ) 
 escreva( “ B[“ i ,”=”) 
leia( B[i] ) 
fimpara
…
c. Geração de vetores com elementos que seguem uma regra pré-
definida
...
{ gerando um vetor de 10 elementos inteiros, com todos os elementos iguais a 0 }
para i de 1 ate 10 faca 
A[ i ] <- 0
fimpara
...
...
{ gerando um vetor de 10 elem., com os elementos de índice par iguais a 0, e impar 
iguais a 1 }
para i de 1 ate 10 faca 
5
6
se ( i % 2 = 0 ) entao 
A[i] <- 0
senao 
A[i] <- 1
fimse
fimpara
...
...
{ gerando o vetor de 10 elementos A = [ 1 2 3 4 5 6 7 8 9 10 ] }
para i de 1 ate 10 faca 
A[ i ] <- i
fimpara
...
...
{ gerando um vetor FIB com os 10 primeiros elementos da seqüência de Fibonacci }
FIB[1] <- 1 
FIB[2] <- 1 
para i de 3 ate 10 faca 
FIB[i] <- FIB [i-2] + FIB [i-1] 
…
6.2.3PROCESSAMENTO
d. Processando vetores sem modificar o valor ou a posição de seus 
elementos
...
{ somando os elementos de um vetor A, já lidos, colocando a soma na variável s }
s <- 0 
para i de 1 ate 10 faca 
s <- s + A[i] 
…
...
{ calculando a soma e a media dos elem. do vetor NOTAS, colocando os resultados em 
s e m }
s <- 0 
para i de 1 ate 10 faca 
s <- s + NOTAS[i] 
fimpara
m<- s / 10 
…
…
{ contando o nº de elem. do vet. NOTAS maiores ou igual a 6.0, colocando o resultado 
em nm6 }
nm6 <- 0 
para i de 1 ate 10 faca 
se NOTAS[ i ] >= 6.0 entao 
7
8
nm6 <- nm6 + 1 
fimse
fimpara
…
{ contando o número de elementos menores que 0 no vetor B, colocando o resultado 
em nneg 
nneg <- 0 
para i de 1 ate 10 faca 
if B[ i ] < 0 entao 
nneg <- nneg + 1 
fimse
fimpara
…
… 
{ contando e somando os elem. menores que 0 no vetor B e os elementos maiores ou 
iguais a 0 }
nmen0 <- 0 
smen0 <- 0 
nmai0 <- 0 
smai0 <- 0 
para i de 1 ate 10 faca 
se B[ i ] < 0 entao 
nmen0 <- nmen0 + 1 
smen0 <- smen0 + B[i] 
 senao
nmai0 <- nmai0 + 1
smai0 <- smai0 + B[i]
fimse
fimpara
…
…
{ localizando e imprimindo as posições dos elementos iguais a 0 dentro do vetor B }
para i de 1 ate 10 faca 
se B[i] =0 entao 
escreval( “ Zero encontrado na posição “ , i )
senao
escreval( “ Zero não existe no vetor B “);
fimse
fimpara
… 
9
10
{ localizando e imprimindo a posição de um único elemento cujo valor é AK, dentro do 
vetor A }
AK <- 8 
i <- 1 
 
enquanto ( A[i] <> AK ) e (i < 10) faca 
i <- i+1
fimenquanto
se A[i] =AK entao 
escreval(AK , “ encontrado na posição ’”, i )
senao
escreval( AK, “ não existe no vetor A “)
fimse
… 
…
{ localizando e imprimindo as posições dos elementos iguais a 0 dentro do vetor B }
para i de 1 ate 10 faca 
se B[i] =0 entao 
escreval( “ Zero encontrado na posição ’”, i )
senao
escreval( “ Zero não existe no vetor B ‘”;
… 
…
{ localizando e imprimindo a posição de um único elemento cujo valor é AK, dentro do 
vetor A }
AK <- 8 
i <- 1 
 
enquanto ( A[i] <> AK ) e (i < 10) faca 
i <- i+1 
se A[i] = AK entao 
escreval(AK , “ encontrado na posição ’”, i )
senao
escreval(AK, “ não existe no vetor A “);
… 
....
{ encontrando o maior elemento do vetor B }
maior <- B[1] 
para i de 2 ate 10 faca 
se maior < B[i] entao
maior <- B[i]
 fimse
fimpara
…
11
12
{ encontrando o maior elemento do vetor B e sua posição dentro do vetor }
maior <- B[1] 
posmaior <- 1
para i de 2 ate 10 faca 
se maior < B[i] entao
maior <- B[i] 
posmaior <- i 
fimse
fimpara 
e. Processando vetores modificando o valor ou a posição de seus 
elementos
...
{ trocando o 10º elemento com o 1º elemento do vetor A }
temp <- A[10] ;
A[10] <- A[1] ;
A[1] <- A[10];
...
...
{ acumulando a soma dos i primeiros elementos do vetor B no i-ésimo do vetor B }
para i de 2 ate 10 faca 
B[i] <- B[i] + B[i-1] 
fimpara
…
...
{ trocando o 10º elem. com o 1º elem., 0 9º elem. Com o 2º, o 8º com o 3º do vetor 
B etc }
para i de 1 ate 5 faca 
temp <- B[i] 
 B[i] <- B[11-i] 
 B[11-i] <- temp
fimpara
…
 
6.2.4IMPRESSÃO
f. Cálculo da média de notas da turma e impressão das notas acima 
desta
algoritmo "alunosENotas"
var
 numeroEstudantes, i: inteiro
 nome: vetor [1..45] de caracter
 nota: vetor [1..45] de real
 soma, media: real
inicio
 repita
13
14
 escreva("Digite o número de estudantes a considerar: ")
 leia(numeroEstudantes)
 se (numeroEstudantes < 1) ou (numeroEstudantes > 45) entao
 escreval("Nº de estudantes inválido, deve ser entre 1 e 45!")
 fimse
 ate (numeroEstudantes >= 1) e (numeroEstudantes <= 45)
 
 para i de 1 ate numeroEstudantes faca
 escreva("Nome do estudante nº ",i," : ")
 leia(nome[i])
 escreva("Nota final: ")
 leia(nota[i])
 escreval("--------------------------")
 soma <- soma + nota[i]
 fimpara
 
 media <- soma / numeroEstudantes
 escreval("--------------------------")
 escreval("Média de notas da turma = ",media:5:2)
 escreval("--------------------------")
 escreval("RELAÇÃO DE ESTUDANTES COM NOTA ACIMA DA MÉDIA DA TURMA")
 escreval("------------------------------------------------------")para i de 1 ate numeroEstudantes faca
 se nota[i] >= media entao
 escreval(nome[i]:40, nota[i]:5:2)
 fimse
 fimpara
fimalgoritmo
DET109 [Programação de Computadores I]
15
16
Trabalho Final em 20/06/2012
Observe o algoritmo abaixo:
algoritmo "trabalhoFinal"
arquivo "C:\Documents and Settings\Aluno\Meus 
documentos\DET109\vetores\clientes.txt"
var
 soma, media: real
 contador, acima: inteiro
 clientes: vetor[1..43] de caracter
 consumo: vetor [1..43] de real
 local: vetor [1..43] de inteiro
 local_nome: vetor[1..5] de caracter
inicio
 local_nome[1] <- "Amoras"
 local_nome[2] <- "Bom Jesus"
 local_nome[3] <- "Centro"
 local_nome[4] <- "Fátima"
 local_nome[5] <- "Nova Viçosa"
 para contador de 1 ate 43 faca
 leia(clientes[contador])
 fimpara
 soma <- 0
 escreval("CLIENTE":40,"BAIRRO":11,"CONSUMO":10)
 escreval("------------------------------------------------------------")
 para contador de 1 ate 43 faca
 consumo[contador] <- randi(101)
 soma <- soma + consumo[contador]
 local[contador] <- randi(5)+1 //1: Amoras 2: Bom Jesus 3: Centro 4: Fátima 5: Nova Viçosa
17
18
 escreval(clientes[contador]:40,local_nome[local[contador]]:11,consumo[contador
]:10)
 fimpara
 escreval("------------------------------------------------------------")
 media <- soma / 43
 escreval("Média de consumo geral = ",media:5:2)
 escreval
 escreval("RELAÇÃO DE CLIENTES COM CONSUMO ACIMA DA MÉDIA")
 escreval("---------------------------------------------")
 para contador de 1 ate 43 faca
 se (consumo[contador] >= media) entao
 escreval(clientes[contador]:40,consumo[contador]:10)
 acima <- acima + 1
 fimse
 fimpara
 escreval
 escreval("---------------------------------------")
 escreval("Nº de cliente com consumo acima da média = ",acima)
19
20
fimalgoritmo
Modifique o algoritmo acima de modo a:
a. Calcular e exibir a média de consumo por bairro.
b. Processar e exibir o nome do bairro que tem maior consumo médio. 
21
22
	1 SISTEMAS DE NUMERAÇÃO
	1.1 BASE DE UM SISTEMA DE NUMERAÇÃO
	1.2 REPRESENTAÇÃO BINÁRIA
	1.2.1 Atividades
	1.2.2 Exercícios
	1.3 Representação em Octal e em Hexadecimal
	1.3.1 Atividades
	1.3.2 Exercícios
	1.3.3 Lista de exercícios complementar
	2 ALGORITMO
	2.1 CONCEITO 
	2.2 FORMAS DE REPRESENTAÇÃO
	2.2.1 Descrição Narrativa
	2.2.2 Fluxograma
	2.2.3 Conceitos Importantes
	2.2.4 Exercícios
	2.2.5 PSEUDOCÓDIGO 
	2.2.6 Exemplos
	2.2.7 Etapas para execução de um programa
	2.3 Linguagem do Visualg
	2.4 Tradução de algoritmos
	2.5 Exercícios 
	3 Estrutura Condicional
	3.1 Introdução
	3.2 Exemplos e forma geral
	3.2.1 Exercícios
	4 ESTRUTURAS DE REPETIÇÃO
	4.1 A estrutura para ... faca
	4.2 A estrutura REPITA ... ATE
	4.3 A estrutura ENQUANTO ... FACA
	4.4 Exercícios
	5 MÓDULOS
	5.1 INTRODUÇÃO
	5.2 Funções
	5.3 Funções
	5.4 Aplicação de Funções e Procedimentos
	5.5 EXERCÍCIOS
	6 VETORES 
	6.1 Introdução
	6.2 Operações básicas 
	6.2.1 Declaração de vetores
	6.2.2 Leitura e Geração
	6.2.3 Processamento
	6.2.4 Impressão

Mais conteúdos dessa disciplina