Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INTRODUÇÃO A PROGRAMAÇÃO
(material de apoio)
Blumenau, 2006
APRESENTAÇÃO DA DISCIPLINA
SUMÁRIO
1 INTRODUÇÃO.....................................................................................................................5
ESTRUTURA FUNCIONAL DO COMPUTADOR..................................................................................................6
HARDWARE ..........................................................................................................................................................6
SOFTWARE ...........................................................................................................................................................9
CONCEITOS BÁSICOS DE AMBIENTES DE PROGRAMAÇÃO........................................................................9
CLASSIFICAÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO..........................................................................10
LINGUAGENS E GERAÇÕES.............................................................................................................................11
2 LÓGICA DE PROGRAMAÇÃO...............................................................................................12
ALGORITMO...................................................................................................................................................................13
Metodologia para Construção de Algoritmos......................................................................................................14
Enunciados.......................................................................................................................................................16
Exercícios Propostos.......................................................................................................................................17
Métodos de Representação de Algoritmos...........................................................................................................18
3 ESPECIFICAÇÃO DE ALGORITMOS.....................................................................................19
DADOS......................................................................................................................................................................19
Variáveis...............................................................................................................................................................19
Constantes.............................................................................................................................................................20
Tipos de Dados.....................................................................................................................................................20
EXPRESSÕES...........................................................................................................................................................21
Operadores Aritméticos........................................................................................................................................21
Operador de Caracteres.......................................................................................................................................22
Operadores Relacionais.......................................................................................................................................22
Operadores Lógicos..............................................................................................................................................22
COMANDOS.............................................................................................................................................................23
Comando de Atribuição........................................................................................................................................23
Comandos de Entrada e Saída.............................................................................................................................23
Comando de Entrada em Portugol..................................................................................................................24
Comando de Saída em Portugol......................................................................................................................24
PORTUGUÊS ESTRUTURADO OU PORTUGOL.........................................................................................................................25
EXERCÍCIOS RESOLVIDOS.................................................................................................................................................27
EXERCÍCIOS PROPOSTOS..................................................................................................................................................30
4 ESTRUTURAS DE CONTROLE EM NÍVEL DE INSTRUÇÃO – SELEÇÃO....................................35
SELEÇÃO SIMPLES..........................................................................................................................................................35
SELEÇÃO ENCADEADA.....................................................................................................................................................36
SELEÇÃO COMPOSTA.......................................................................................................................................................37
SELEÇÃO MÚLTIPLA.......................................................................................................................................................38
EXERCÍCIOS RESOLVIDOS.................................................................................................................................................39
EXERCÍCIOS PROPOSTOS..................................................................................................................................................43
5 ESTRUTURAS DE CONTROLE EM NÍVEL DE INSTRUÇÃO – REPETIÇÃO................................48
REPETIÇÃO COM CONTADOR (PARA-FAÇA).........................................................................................................................48
REPETIÇÃO CONDICIONAL................................................................................................................................................49
Enquanto-faça.......................................................................................................................................................50
Repita-até..............................................................................................................................................................51
EXERCÍCIOS RESOLVIDOS.................................................................................................................................................51
EXERCÍCIOS PROPOSTOS..................................................................................................................................................57
6 ESTRUTURA DE DADOS HOMOGÊNEAS - MATRIZES...........................................................64
MATRIZES UNIDIMENSIONAIS (VETORES)...........................................................................................................................65
Manipulação de Matrizes Unidimensionais.........................................................................................................68
Exercícios Resolvidos......................................................................................................................................69
Exercícios Propostos.......................................................................................................................................72
Algoritmos de Ordenação de Vetores...................................................................................................................76
Método da Bolha ou BubbleSort......................................................................................................................76
1 INTRODUÇÃO
• Os primeiros computadores utilizavam válvulas. O
surgimento do transistor, em 1948, trouxe a redução
do tamanho e da potência consumida em relação às
válvulas, além de serem mais robustos e confiáveis.
• O avanço da tecnologia permitiu a integração de vários
transistores em um dispositivo, constituindo os circuitos
em larga escala (CHIPs).
• O COMPUTADOR é uma máquina composta de
elementos físicos do tipo eletrônico, capaz de realizar
uma grande variedade de trabalhos com alta velocidade
e precisão, desde que receba as instruções adequadas
através de um programa de computador, também
denominado software.
• A utilização do computador traz vantagens mas
também alguns problemas:
- VANTAGENS: rapidez, correção, economia, qualidade do
resultado final e capacidade de armazenamento e
processamento de informações.
HARDWARE
• O computador é uma máquina capaz de executar ações
com objetivos específicos. Essas ações são basicamente
instruções para leitura e escrita de informações e para
a execução de operações aritméticas e lógicas.
• Embora existam computadores dos mais diferentes
tipos e tamanhos, todos consistem em cinco
componentes básicos interligados: unidade aritmética e
lógica (ULA), unidade de controle, unidade de entrada
de dados, unidade de saída de dados e memória.
SOFTWARE
• Um software é um programa de computador que faz
com que o hardware realize determinada tarefa.
• Os softwares são classificados como: BÁSICOS e
APLICATIVOS.
- SOFTWARE BÁSICO: são os softwares necessários para
o funcionamento e gerenciamento do computador (Ex.
Sistema Operacional, Linguagens de Programação, ...).
LINGUAGENS E GERAÇÕES
• As linguagens de programação têm evoluído ao longo
dos tempos podendo ser divididas em:
- Primeira Geração: surgiu a partir dos anos 40 (século
XX), mais precisamente em 1945 com o surgimento dos
primeiros computadores eletrônicos, em que a
linguagem de programação utilizada era a linguagem de
máquina (nível baixo). Exemplo: a linguagem Assembly.
2 LÓGICA DE PROGRAMAÇÃO
• O computador segue as ordens (COMANDOS E
INSTRUÇÕES) descritas em um programa de
computador.
• Para que o computador possa cumprir corretamente as
tarefas desejadas é necessário que o programa esteja
organizado de forma lógica.
• "LÓGICA: coerência de raciocínio, de idéia; seqüência
coerente, regular e necessária de acontecimentos, de
coisas" (DICIONÁRIO AURÉLIO).
EXEMPLO: Calcular a área de uma sala
retangular.
Passos:
Medir o lado transversal
Medir o lado longitudinal
Multiplicar a medida do lado transversal pela
medida do lado longitudinal
Algoritmo
o ser objetivo.
Enunciados
Exercícios Propostos
1. Uma pessoa dirigiu-se até uma casa de sucos e pediu uma limonada com
açúcar. Considerando que o atendente tem o limão, o açúcar, um copo
com água, faca e colher de sopa descreva um algoritmo para fazer a
limonada pedida.
2. Uma criança precisa desenhar e recortar um quadrado em uma folha de
papel. Além da folha de papel ela tem régua, lápis e tesoura. Descreva um
algoritmo que a permita cumprir sua tarefa.
3. Descreva um algoritmo para calcular a área de uma sala retangular.
Considere que você tenha uma trena - para fazer a medida em metros -
de tamanho suficiente para medir a sala.
4. Um professor precisa calcular a média de um aluno. Descreva um
algoritmo para auxiliá-lo nesta tarefa, considerando que ele tem 3 notas
do aluno e que a média é calculado de forma aritmética.
5. Um aluno está na Biblioteca da FURB e precisa pegar um livro.
Considerando que ele sabe que o livro está disponível, mas não sabe a
estante onde o livro se encontra, e que a biblioteca conta com um sistema
computadorizado disponível em um computador da própria biblioteca para
a pesquisa do livro, descreva um algoritmo com os passos necessários
para o aluno emprestar o livro.
6. Uma pessoa apressada estava com sede e decidiu comprar uma garrafa
de água na cantina da FURB. Considerando que ela tinha dinheiro
suficiente para comprar a garrafa de água e que não havia fila no caixa
descreva um algoritmo que lhe permita comprar a garrafa de água.
3 ESPECIFICAÇÃO DE ALGORITMOS
• Os algoritmos em geral trabalham com alguns conceitos
fundamentais DADOS, EXPRESSÕES e COMANDOS.
DADOS
EXEMPLO:
No exercício 4 do capítulo 2 podemos destacar
cinco variáveis: a variável para armazenar a
primeira nota do aluno (Nota1), a variável para
armazenar a segunda nota do aluno (Nota2), a
variável para armazenar a terceira nota do
aluno (Nota3), a variável para armazenar a soma
das notas dos alunos (Soma) e a variável para
armazenar a média do aluno (Media).
Constantes
• Constante é um endereço de memória representado
por um nome cujo conteúdo não pode ser alterado ao
longo de um programa.
EXEMPLO:
No exercício 4 do capítulo anterior o número de
avaliações poderia ser definido como uma
constante pois ele é fixo (3).
Tipos de Dados
• Toda variável tem um tipo de dado associado. O tipo de
dado determina:
- que valores a variável pode assumir;
EXEMPLOS:
Considerando o nome, a idade e o salário de um
funcionário podemos ter como tipos de dados:
Nome : caractere[30]
Idade : inteiro
Salario : real
Obs: O Nome está limitado a 30 caracteres.
EXPRESSÕES
Operadores Aritméticos
• Os operadores aritméticos realizam operações
matemáticas sobre os dados (variáveis ou constantes).
Operadores unários: são aplicados a um único operando. São os
+,-
operadores aritméticos de maior precedência. Exemplos: -3, +x.
Operadores aritméticos: são aplicados para adição, subtração,
+
multiplicação e divisão respectivamente. 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.
Operador de divisão de inteiros*: é aplicado na divisão de números
\
inteiros substituindo operador \.
Operador de resto*: é aplicado para o resto da divisão de números
% inteiros. Por exemplo, 8 % 3 = 2. Tem a mesma precedência do operador
de divisão tradicional.
Operador de potenciação*: é aplicado para elevar um valor a uma
^
potência. Exemplo: 5 ^ 2 = 25.
*
Estes operadores podem variar de acordo com a notação utilizada pela pseudolinguagem.
*
Operador de Caracteres
• O operador de caracteres realiza a concatenação
entre cadeias de caracteres.
Operador de concatenação de 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
• Os operadores relacionais realizam operações de
comparações entre os dados (variáveis ou constantes).
• O resultado de um operador relacional é sempre um
valor lógico (VERDADEIRO ou FALSO).
= Igual
> Maior
< Menor
>= Maior ou Igual
<= Menor ou Igual
<> Diferente
Operadores Lógicos
• Os operadores lógicos permitem realizar combinações
de operações relacionais, juntando diversas decisões
em uma única expressão.
Operador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO =
Não
VERDADEIRO. Tem a maior precedência entre os operadores lógicos.
Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for
Ou
verdadeiro.
Operador que resulta VERDADEIRO somente se seus dois operandos lógicos
E
forem verdadeiros.
COMANDOS
Exercícios Resolvidos
Exercícios Propostos
e) João recebeu sua 18o medalha por ter alcançado a marca de 57.3
segundos nos 100 metros rasos.
d <- a + b + c
b <- b + a
a <- (b - c) * 2
b <- d - b
d <- c - b
5. Dada a seguinte declaração de variáveis:
a, b : inteiro
nome, profissao : caracter[30]
Complete o quadro a seguir, preenchendo os espaços em branco com os
valores lógicos (verdadeiro ou falso) obtidos como resultados das
relações, tendo em vista os valores atribuídos a estas variáveis:
Variáveis Relações
a B nome profissao a^2+1 >= b nome ≠ profissão
'Ana' = 'medico'
3 16 'Miriam' 'advogado' falso verdadeiro falso
5 14 'Pedro' 'medico'
2.5 9 'ANA' 'professor'
12 100 'Ana' 'medico'
10 150 'Carlos' 'professor'
6. Dada a declaração de variáveis:
a, b, c : inteiro
x, y, z : real
nome, rua : caracter[20]
l1, l2 : logico
Classifique as expressões seguintes de acordo com o tipo de dado do
resultado de sua avaliação: I (inteiro), R (real), C (caracter), L (lógico) ou
N (quando não for possível defini-lo):
a) (I) a + b + c
b) (N) l1 ^ l2
c) ( ) a + b + z
d) ( ) nome + rua
e) ( ) a > b
f) ( ) a > y
g) ( ) nome > rua
h) ( ) l1 ou l2
i) ( ) (rua ≠ nome) e não (a = b)
j) ( ) a + b / c
k) ( ) a + z / a
l) ( ) a > b = l1
m) ( ) x + y / z
n) ( ) x + z / a
7. Determine os resultados obtidos na avaliação das expressões abaixo,
sabendo que A, B, C, D, E contêm respectivamente 2, 7, 3.5, “noite” e
“frio” e que existe uma variável lógica L cujo valor é falso:
a) B = A * C e L ou verdadeiro ( )F (X)V
b) ‘dia’ = D ou E <> ‘clima’ ( )F ( )V
Seleção Simples
Seleção Encadeada
fimse
Seleção Composta
Seleção Múltipla
Escolha a cor
verde : tenho esperança
vermelho : estou apaixonado
azul : está tudo tranquilo
Exercícios Resolvidos
3. Um aluno está em dúvida sobre o título que vai receber após concluir seu
curso de graduação. Considerando que o sistema apresenta 3 cursos
disponíveis (1 – Ciência da Computação, 2 – Licenciatura da Computação
e 3 – Sistemas de Informação) descreva um algoritmo para ler a opção do
aluno e escrever uma mensagem informando o título que o aluno vai
receber caso opte por aquele curso. As titulações são respectivamente:
opcao : inteiro
inicio
//escrever as opções de curso
escreval ("1 - Ciência da Computação")
escreval ("2 - Licenciatura em Computação")
escreval ("3 - Sistemas de Informação")
//ler a opção do curso
escreva ("Digite o número do curso desejado: ")
leia (opcao)
//verificar a opcao desejada e escrever a titulação
escolha opcao
caso 1
escreva ("Bacharel em Ciência da Computação")
caso 2
escreva ("Licenciado em Computação")
caso 3
escreva ("Bacharel em Sistemas de Informação")
outrocaso
escreva ("Opção indisponível")
fimescolha
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
(E) opcao = 1 (S) “Bacharel em Ciência da Computação”
(E) opcao = 2 (S) “Licenciado em Computação”
(E) opcao = 3 (S) “Bacharel em Sistemas de Informação”
8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais
possibilidades de erro e melhorar a maneira de descrever ou o modo como
está sendo feito. Uma solução eficiente deve usar menos memória possível e
ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne
ao passo 6.
Exercícios Propostos
escolha nro
caso 1 ate 5
nro <- nro * 2
caso 10 ate 50
nro <- nro % 2
outrocaso
se (nro > 50) entao
nro <- nro \ 10
senao
nro <- nro * (-1)
fimse
fimescolha
fimse
fimse
escreva ("nro.: ", nro)
fimalgoritmo
Quais valores serão escritos considerando que o valor armazenado na
variável nro pode ser 10, 101 e –10?.
Repetição Condicional
Repita
calcule a média do aluno
Até não ter mais alunos
Enquanto-faça
• A estrutura enquanto-faça executa um conjunto de
instruções enquanto a expressão lógica for avaliada
como verdadeira.
• Sintaxe em Portugol (VisuAlg)
enquanto <expressão-lógica> faca
<seqüência-de-comandos>
fimenquanto
Repita-até
• A estrutura repita-até executa um conjunto de
instruções até que a expressão lógica seja avaliada
como verdadeira.
• Sintaxe em Portugol (VisuAlg)
repita
<seqüência-de-comandos>
ate <expressão-lógica>
Exercícios Resolvidos
ENTRADA
Número
3. DADOS DE SAÍDA Identifique e descreva os resultados desejados para o problema, procurando
observar se todas as entradas ou recursos necessários estão disponíveis.
Tabuada do número
4. BASE DE TESTES Defina um conjunto de informações (no mínimo 3) de entrada com suas
respectivas saídas, visando montar uma base de testes para o problema.
(E) 5
(S) 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
5x10=50
5. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas
para a solução do problema.
Identifique se há a necessidade de uso de estruturas de seleção e que tipo de
avaliação deve ser feita.
Identifique se há a necessidade de uso de estruturas de repetição e o número
ou as condições de ocorrência das repetições.
5.1 Operações a serem realizadas
Calcular a tabuada do número
5.2 Uso de estruturas de seleção
Não é necessário
5.3 Uso de estruturas de repetição
Repetição de 1 a 10 para multiplicação do número
6. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema.
ALGORITMO
6.1 Descreva os passos gerais para a solução do problema.
Ler numero
Para contador de 1 a 10 faça
Escrever a multiplicação do contador pelo número
6.2 Descreva o algoritmo em Portugol para a solução do problema.
algoritmo "tabuada"
// Este algoritmo escreve a tabuada de um número
// Autor : Mauricio capobianco Lopes
// Data : 28/3/2006
var
numero, contador : inteiro
inicio
//ler número
escreva ("Informe o número para calcular sua tabuada ")
leia (numero)
//para valores de 1 a 10
para contador de 1 ate 10 faca
//calcular e escrever a tabuada do número
escreval (numero:2, " X ", contador:2, " = ", numero *
contador:3)
fimpara
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
Numero = 5
Contador Mensagem
1 5 X 1 = 5
2 5 X 2 = 10
3 5 X 3 = 15
4 5 X 4 = 20
5 5 X 5 = 25
6 5 X 6 = 30
7 5 X 7 = 35
8 5 X 8 = 40
9 5 X 9 = 45
10 5 X 10 = 50
8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais
possibilidades de erro e melhorar a maneira de descrever ou o modo como
está sendo feito. Uma solução eficiente deve usar menos memória possível e
ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne
ao passo 6.
2. Dada uma turma de alunos, contendo seu nome e nota de duas provas
descreva um algoritmo para informar a média de cada aluno. Considere
que a leitura dos dados deve ser finalizada quando o nome do aluno for
“fim”.
1. PROBLEMA Verifique atentamente se o problema está bem definido, se não há
ambigüidades ou informações incompletas e irrelevantes.
(INTERPRETAÇÃO)
Dada uma turma de alunos, contendo seu nome e nota de duas provas
descreva um algoritmo para informar a média de cada aluno.
Considere que a leitura dos dados deve ser finalizada quando o nome
do aluno for “fim”.
Destaque aqui as ambigüidades ou informações incompletas
Não há a fórmula do cálculo da média. Será usada media aritmética.
2. DADOS DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a
solução do problema.
ENTRADA
Nome e duas notas de alunos
3. DADOS DE SAÍDA Identifique e descreva os resultados desejados para o problema, procurando
observar se todas as entradas ou recursos necessários estão disponíveis.
Média de cada aluno
4. BASE DE TESTES Defina um conjunto de informações (no mínimo 3) de entrada com suas
respectivas saídas, visando montar uma base de testes para o problema.
(E) João 5.0 6.0 (S) 5.5
(E) Pedro 10.0 7.0 (S) 8.5
(E) Maria 7.0 5.0 (S) 6.0
(E) José 8.0 6.0 (S) 7.0
(E) Ana 9.0 10.0 (S) 9.5
(E) fim
5. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas
para a solução do problema.
Identifique se há a necessidade de uso de estruturas de seleção e que tipo de
avaliação deve ser feita.
Identifique se há a necessidade de uso de estruturas de repetição e o número
ou as condições de ocorrência das repetições.
5.1 Operações a serem realizadas
Calcular a média de uma turma de alunos
5.2 Uso de estruturas de seleção
Não é necessário
5.3 Uso de estruturas de repetição
Repetição da leitura dos dados dos alunos até encontrar o nome
“fim”
6. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema.
ALGORITMO
6.1 Descreva os passos gerais para a solução do problema.
Ler nome
Enquanto nome <> “fim” faça
Ler notas
Calcular a média
Informar a média
Ler outro nome
6.2 Descreva o algoritmo em Portugol para a solução do problema.
algoritmo "media"
// Este algoritmo informa a média de uma turma de alunos dadas 2 //
notas
// Autor : Mauricio Capobianco Lopes
// Data : 28/3/2006
var
nome : caracter
nota1, nota2, media : real
inicio
//ler nome do aluno
escreva ("Digite o nome do aluno: ")
leia (nome)
//enquanto não for digitado nome "fim" faça
enquanto nome <> "fim" faca
//ler notas dos alunos
escreva ("Digite a primeira nota do aluno: ")
leia (nota1)
escreva ("Digite a segunda nota do aluno: ")
leia (nota2)
//calcular a media
media <- (nota1 + nota2) / 2
//calcular e escrever a média do aluno
escreval ("Média = ", media:4:1)
//ler nome de outro aluno
escreva ("Digite o nome do aluno: ")
leia (nome)
fimenquanto
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
Nome nota1 nota2 media
João 5.0 6.0 5.5
Pedro 10.0 7.0 8.5
Maria 7.0 5.0 6.0
José 8.0 6.0 7.0
Ana 9.0 10.0 9.5
Fim
8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais
possibilidades de erro e melhorar a maneira de descrever ou o modo como
está sendo feito. Uma solução eficiente deve usar menos memória possível e
ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne
ao passo 6.
(INTERPRETAÇÃO)
Dados 3 valores, descreva um algoritmo que a partir de um menu de
opções faça:
a) se opção = 1, escreva o maior valor
b) se opção = 2, escreva o menor valor
c) se opção = 3, escreva se existem valores iguais
d) se opção = 4, saia do programa
Destaque aqui as ambigüidades ou informações incompletas
Não há.
2. DADOS DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a
solução do problema.
ENTRADA
Três valores e a opção
3. DADOS DE SAÍDA Identifique e descreva os resultados desejados para o problema, procurando
observar se todas as entradas ou recursos necessários estão disponíveis.
O maior, o menor ou se existem valores iguais, dependendo da opção
selecionada
4. BASE DE TESTES Defina um conjunto de informações (no mínimo 3) de entrada com suas
respectivas saídas, visando montar uma base de testes para o problema.
(E) Valor1 = 7.0 Valor2 = 4.0 Valor3 = 8.0
(E) Opção = 1 (S) 8.0
(E) Opção = 2 (S) 4.0
(E) Opção = 3 (S) “não existem valores iguais”
(E) Valor1 = 9.0 Valor2 = 9.0 Valor3 = 6.0
(E) Opção = 1 (S) 9.0
(E) Opção = 2 (S) 6.0
(E) Opção = 3 (S) “existem valores iguais”
5. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas
para a solução do problema.
Identifique se há a necessidade de uso de estruturas de seleção e que tipo de
avaliação deve ser feita.
Identifique se há a necessidade de uso de estruturas de repetição e o número
ou as condições de ocorrência das repetições.
5.1 Operações a serem realizadas
Informar ou maior, o menor ou se existem valores iguais
5.2 Uso de estruturas de seleção
Verificar o maior
Verificar o menor
Verificar se existem valores iguais
5.3 Uso de estruturas de repetição
Repetição para a leitura da opção informada pelo usuário
6. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema.
ALGORITMO
6.1 Descreva os passos gerais para a solução do problema.
Ler 3 números
Repita
Escrever o menu de opções
Ler opção
Escolher opção
1 : Verificar o maior valor
(REFINAMENTO:
Se o primeiro valor é maior que o segundo e o
terceiro valores então
Escrever o primeiro valor
Senão
Se o segundo é maior que o terceiro então
Escrever o segundo valor
Senão
Escrever o terceiro valor
)
2 : Verificar o menor valor
(REFINAMENTO: idem ao maior comparando com o menor )
3 : Verificar se existem valores iguais
(REFINAMENTO:
Se o primeiro valor é igual ao segundo ou o segundo é
igual ao terceiro ou o primeiro é igual ao terceiro então
“Existem valores iguais”
Senão
“Não existem valores iguais”
)
Até opção = 4
6.2 Descreva o algoritmo em Portugol para a solução do problema.
algoritmo "opcoes"
// Dados 3 valores, descreva um algoritmo que a partir de um menu
de opções faça:
// a) se opção = 1, escreva o maior valor
// b) se opção = 2, escreva o menor valor
// c) se opção = 3, escreva se existem valores iguais
// d) se opção = 4, saia do programa
// Autor : Mauricio Capobianco Lopes
// Data : 28/3/2006
var
valor1, valor2, valor3, opcao : inteiro
inicio
//ler os valores
escreva ("Digite o primeiro valor: ")
leia (valor1)
escreva ("Digite o segundo valor: ")
leia (valor2)
escreva ("Digite o terceiro valor: ")
leia (valor3)
//repetir para leitura das opções
repita
//montar o menu
escreval ("1 - Maior valor")
escreval ("2 - Menor valor")
escreval ("3 - Valores iguais")
escreval ("4 - Sair do programa")
//ler a opção
leia (opcao)
//escolher opcao
escolha opcao
caso 1
//procurar o maior valor
se (valor1 > valor2) e (valor1 > valor3) entao
escreval ("Maior = ", valor1)
senao
se (valor2 > valor3) entao
escreval ("Maior = ", valor2)
senao
escreval ("Maior = ", valor3)
fimse
fimse
caso 2
//procurar o menor valor
se (valor1 < valor2) e (valor1 < valor3) entao
escreval ("Menor = ", valor1)
senao
se (valor2 > valor3) entao
escreval ("Menor = ", valor2)
senao
escreval ("Menor = ", valor3)
fimse
fimse
caso 3
//verificar se existem iguais
se (valor1 = valor2) ou (valor1 = valor3) ou (valor2 =
valor3) entao
escreval ("Existem valores iguais")
senao
escreval ("Não existem valores iguais")
fimse
fimescolha
//terminar quando for digitada a opcao 4
ate opcao = 4
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
Valor1 = 7.0 Valor2 = 4.0 Valor3 = 8.0
Opção = 1 - Maior = 8.0
Opção = 2 – Menor = 4.0
Opção = 3 - “Não existem valores iguais”
Valor1 = 9.0 Valor2 = 9.0 Valor3 = 6.0
Opção = 1 – Maior = 9.0
Opção = 2 – Menor = 6.0
Opção = 3 - “Existem valores iguais”
8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais
possibilidades de erro e melhorar a maneira de descrever ou o modo como
está sendo feito. Uma solução eficiente deve usar menos memória possível e
ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne
ao passo 6.
Exercícios Propostos
total ← 0
repita
total ← total + 1
escreva (total)
ate contador < 0
b)
contador ← 0
total ← 0
repita
total ← total + 2
contador ← contador + 1
ate contador > 10
escreva (total)
c)
repita
escreva (“a repetição pára?”)
ate 3 < 2
d)
numero ← 45
repita
escreva (número)
ate número = 100
e)
número ← 45
repita
escreva (número)
ate número <= 100
2. Quais valores serão escritos durante a execução dos algoritmos abaixo:
a)
algoritmo “exercício”
var
a, q, termo : inteiro
inicio
a <- 1
q <- 4
termo <- a
repita
escreva (termo)
termo <- termo * q
ate termo >= 200
fimalgoritmo
b)
algoritmo "exercício_1a"
var
numero, soma, qdo : real
inicio
numero <- 0
soma <- 0
enquanto numero < 10 faca
17. Uma máquina de biscoito está com problemas. Quando ligada, após 1
hora ela quebra 1 biscoito, na segunda hora ela quebra 3 biscoitos, na
hora seguinte ela quebra 3 vezes a quantidade de biscoitos quebrados na
hora anterior, e assim por diante. Faça um algoritmo que calcule quantos
biscoitos são quebrados no final de cada dia (a máquina opera 16 horas
por dia).
18. Uma grande loja de departamentos paga aos vendedores um salário com
base nas vendas efetuadas durante o mês, que é igual a 30% de comissão
sobre o preço de cada produto vendido. Cada vendedor, em um
determinado mês, vende n produtos, onde, para cada produto tem-se o
preço unitário e a quantidade vendida. O departamento de pessoal deseja
obter um relatório com: nome, total de vendas (em R$) e salário de cada
vendedor. Descreva um algoritmo que gere o relatório desejado. Para
prosseguir com a entrada de dados o algoritmo deve apresentar a
seguinte mensagem: “deseja digitar os dados de mais um vendedor: s
(SIM) / n (NÃO)?”. O número de produtos (n) de cada vendedor deve ser
informado.
19. Uma loja de departamentos oferece para seus clientes um determinado
desconto de acordo com o valor da compra efetuada. O desconto é de
20% caso o valor da compra seja maior que R$ 500,00 e de 15% caso
seja menor ou igual. Descreva um algoritmo que leia o valor da compra e
escreva o total a pagar a cada compra. Informe também o valor total
recebido pela loja ao final do dia.
A leitura deve ser finalizada com o flag 0 para o valor da compra.
20. Um hotel cobra R$ 50,00 de diária por hóspede e mais uma taxa de
serviços. A taxa de serviços é de:
R$ 7,50 por diária, caso o número de diárias seja menor que 15;
R$ 6,50 por diária, caso o número de diárias seja igual a 15;
R$ 5,00 por diária, caso o número de diárias seja maior que 15.
Descreva um algoritmo que apresente as seguintes opções ao
recepcionista:
1. encerrar a conta de um hóspede
2. verificar número de contas encerradas
3. sair
Caso a opção escolhida seja a primeira, leia o nome e o número de diárias
do hóspede e escreva o nome e total a ser pago. Caso a opção escolhida
seja a segunda, informe o número de hóspedes que deixaram o hotel
(número de contas encerradas). Caso a opção escolhida seja a terceira
finalize a execução do algoritmo.
21. Um determinado material radioativo perde metade de sua massa a cada
50 segundos. Dada a sua massa inicial em Kg, descreva um algoritmo que
determine o tempo necessário para que essa massa se torne menor que
0,5 gramas. Escreva a massa inicial, a massa final e o tempo.
- pesquisa/busca de informações;
- ordenação.
No corpo do programa
identificador[indice]
1
Em linguagens importantes como C e Java não se define o índice inicial e final, mas
apenas o número de elementos do vetor. O índice inicial está sempre na posição 0
(zero).
DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 68
Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação
• Limitações do VisuAlg:
- o valor de faixa e índice deve ser do tipo INTEIRO. Em
outras linguagens existem variações no uso destes
indexadores;
inicio
leia (valores[1])
leia (valores[2])
valores[3] <- valores[2]
i <- 4
valores[4] <- 70
valores[i+1] <- valores[4] * 2
escreva (valores[5])
fimalgoritmo
Fim se
Fim para
Escrever a média
Escrever o número de elementos maiores que a média
6.2 Descreva o algoritmo em Portugol para a solução do problema.
algoritmo "maiores"
// Este algoritmo conta a quantidade de números maiores que a
// média de 50 números
// Autor : Mauricio Capobianco Lopes Data : 25/4/2006
var
soma, media, cont, contMaiores, tamanho : inteiro
valores : vetor [1..50] de inteiro
inicio
aleatorio 1, 1000
tamanho <- 50
//Inicializar soma
soma <- 0
//Para contador de 1 até 50 faça
para cont de 1 ate tamanho faca
//Ler o número[contador]
escreva ("Digite o número ", cont, ": ")
leia (valores[cont])
//Somar o número[contador]
soma <- soma + valores[cont]
fimpara
//Calcular a média
media <- soma \ tamanho
//Inicializar contador de números maiores que a média
contMaiores <- 0
//Para contador de 1 até 50 faça
para cont de 1 ate tamanho faca
// Se o número[contador] é maior que a média
se (valores[cont] > media) entao
// Contar o número
contMaiores <- contMaiores + 1
fimse
fimpara
//escrever o resultado
escreval ("Media = ", media)
escreval ("Numero de elementos maiores que a média = ",
contMaiores)
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
De acordo com as entradas.
8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais
possibilidades de erro e melhorar a maneira de descrever ou o modo como
está sendo feito. Uma solução eficiente deve usar menos memória possível e
ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne
ao passo 6.
Exercícios Propostos
1. Seja o seguinte vetor v:
1 2 3 4 5 6 7 8 9 10
v 2 6 8 3 10 16 1 21 33 -14
b)
algoritmo "item_b"
var
vet: vetor [1..10] de inteiro
i : inteiro
inicio
para i de 1 ate 10 faca
vet[i] <- 10 * i
fimpara
para i de 1 ate 10 faca
vet[i] <- vet[i] \ vet[1]
fimpara
...
fimalgoritmo
3. Altere o algoritmo resolvido número 1 para ler 100 números inteiros e
escrevê-los na ordem inversa à lida.
4. Considere 1000 elementos inteiros armazenados em um vetor. Descreva
um algoritmo que:
a) informe a soma total dos valores do vetor;
b) informe a média dos valores do vetor;
c) informe o maior valor do vetor;
d) informe o menor valor do vetor;
e) informe a quantidade de números pares nas posições pares do vetor;
81,1 40,8 28,5 69,6 6,8 25,7 83,7 82,9 78,6 95,8
81,1 40,8 28,5 69,6 6,8 25,7 82,9 83,7 78,6 95,8
81,1 40,8 28,5 69,6 6,8 25,7 82,9 78,6 83,7 95,8
i=3 40,8 81,1 28,5 69,6 6,8 25,7 82,9 78,6 83,7 95,8
40,8 28,5 81,1 69,6 6,8 25,7 82,9 78,6 83,7 95,8
40,8 28,5 69,6 81,1 6,8 25,7 82,9 78,6 83,7 95,8
40,8 28,5 69,6 6,8 81,1 25,7 82,9 78,6 83,7 95,8
40,8 28,5 69,6 6,8 25,7 81,1 82,9 78,6 83,7 95,8
40,8 28,5 69,6 6,8 25,7 81,1 82,9 78,6 83,7 95,8
40,8 28,5 69,6 6,8 25,7 81,1 78,6 82,9 83,7 95,8
i=4 28,5 40,8 69,6 6,8 25,7 81,1 78,6 82,9 83,7 95,8
28,5 40,8 69,6 6,8 25,7 81,1 78,6 82,9 83,7 95,8
28,5 40,8 6,8 69,6 25,7 81,1 78,6 82,9 83,7 95,8
28,5 40,8 6,8 25,7 69,6 81,1 78,6 82,9 83,7 95,8
28,5 40,8 6,8 25,7 69,6 81,1 78,6 82,9 83,7 95,8
28,5 40,8 6,8 25,7 69,6 78,6 81,1 82,9 83,7 95,8
i=5 28,5 40,8 6,8 25,7 69,6 78,6 81,1 82,9 83,7 95,8
28,5 6,8 40,8 25,7 69,6 78,6 81,1 82,9 83,7 95,8
28,5 6,8 25,7 40,8 69,6 78,6 81,1 82,9 83,7 95,8
28,5 6,8 25,7 40,8 69,6 78,6 81,1 82,9 83,7 95,8
28,5 6,8 25,7 40,8 69,6 78,6 81,1 82,9 83,7 95,8
i=6 6,8 28,5 25,7 40,8 69,6 78,6 81,1 82,9 83,7 95,8
6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
i=7 6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
i=8 6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
i=9 6,8 25,7 28,5 40,8 69,6 78,6 81,1 82,9 83,7 95,8
- pesquisa binária.
fimse
ate (achou=verdadeiro) ou (ini>fim)
se achou entao
escreval("Valor encontrado na posição ", meio)
senao
escreval("Valor não encontrado.")
fimse
fimalgoritmo
Exercícios Propostos
1. Descreva um algoritmo que leia n (n ≤ 20) números inteiros e escreva-os
em ordem decrescente.
2. Um professor tem n (n ≤ 20) nomes de alunos de uma turma. Baseado
nisto descreva um algoritmo que:
a) ordene os dados dos alunos em ordem alfabética;
b) permita pesquisar se existem determinados nomes de alunos na lista:
3. Uma determinada biblioteca possui o nome de obras de ciências exatas e
ciências humanas, totalizando 100 volumes, sendo 50 volumes de cada
área. Baseado nisto descreva um algoritmo que monte um menu com as
seguintes opções:
a) Cadastrar Obra: insere uma obra no acervo;
b) Pesquisar Obra: informa se uma determinada obra pertence ao
acervo;
c) Excluir Obra: exclui uma obra do acervo;
d) Alterar Obra: altera os dados de uma obra do acervo;
e) Listar Obras: lista o nome e a área de todas as obras do acervo em
ordem alfabética, independente da área;
f) Sair do Programa: sai do programa;
4. Um professor deseja corrigir provas de múltipla escolha. Considerando
que a prova tem n questões (n <= 10) descreva um algoritmo que:
a) leia o gabarito da prova e armazene em um vetor;
b) leia o nome e as respostas dos alunos para cada questão e informe o
nome e a média do aluno. O nome e a média devem ser
armazenados em um vetor;
c) dado o nome de uma aluno, informe sua média;
d) informe o percentual de alunos aprovados, considerando que a nota
mínima de aprovação é 6;
e) informe a média da turma;
f) informe o nome e a média do aluno que teve nota mais alta;
g) informe o nome e a média do aluno que teve nota mais baixa;
Para finalizar o algoritmo deve ser apresentada a seguinte mensagem:
mais um aluno: s (SIM) / n (NÃO)?
5. Uma loja tem o código e estoque de suas 100 mercadorias. Baseado nisto
descreva um algoritmo que leia os pedidos dos clientes, constituídos do
código da mercadoria e quantidade desejada e verifique, para cada
pedido, se ele pode ser integralmente atendido. Caso seja possível,
7 Modularização
• No trabalho cotidiano de programação o programador
tem que lidar com tarefas extensas e, em muitos casos,
repetitivas.
• Tarefas repetitivas causam:
- códigos muito extensos;
Escopo de Variáveis
Exercícios Resolvidos
Não há
procedimento trocarvalores
//troca os valores de variável
var
aux : real
inicio
//usa uma variável auxiliar para trocar os valores
aux <- valor1
valor1 <- valor2
valor2 <- aux
fimprocedimento
inicio
//ler os valores
escreva ("Digite o valor 1: ")
leia (valor1)
escreva ("Digite o valor 2: ")
leia (valor2)
//trocar os valores de variável
trocarvalores
//escrever os valores
escreval ("Valor 1 = ", valor1)
escreval ("Valor 2 = ", valor2)
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes descrita no passo 4
para verificar se os resultados desejados estão corretos. Em algumas situações é
necessário registrar informações intermediárias para acompanhar a execução dos passos.
(E) Valor1: 5 Valor2: 6 (S)Valor 1 = 6 Valor 2 = 5
(E) Valor1: 1 Valor2: 7 (S)Valor 1 = 7 Valor 2 = 1
(E) Valor1: 2 Valor2: 9 (S)Valor 1 = 9 Valor 2 = 2
procedimento calcularDigito
//calcular o digito verificado correto
var
soma, auxConta : inteiro
inicio
//inicializar a soma dos dígitos
soma <- 0
//usar uma variável auxiliar para a conta
auxConta <- conta
//enquanto o auxiliar é maior do que 0
enquanto auxConta > 0 faca
//soma o dígito pegando o resto da divisão da conta por 10
soma <- soma + auxConta % 10
//recalcular o auxiliar da conta tirando o último dígito
auxConta <- auxConta \ 10
fimenquanto
//calcula o dígito verificador correto da conta
digitoCorreto <- soma % 9
fimprocedimento
inicio
//ler a conta
escreva ("Digite o número da conta: ")
leia (conta)
//ler o digito
escreva ("Digite o dígito verificador: ")
leia (digito)
//calcular digito correto
calcularDigito
//comparar digitos e escrever o resultado
se digito = digitoCorreto entao
escreva ("Digito CORRETO")
senao
escreva ("Digito INCORRETO. Correto = ", digitoCorreto)
fimse
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
(E) Conta: 23456 Digito: 7 (S) “Digito INCORRETO. Correto = 2”
(E) Conta: 99999 Digito: 0 (S) “Digito CORRETO”
(E) Conta: 10000 Digito: 5 (S) “Digito INCORRETO. Correto = 1”
3. Exemplo do algoritmo SelectionSort com procedimentos.
DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 95
Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação
procedimento lerVetor
//ler os dados e armazenar em um vetor
var
cont : inteiro
inicio
para cont de 1 ate 10 faca
leia(vet[cont])
fimpara
fimprocedimento
procedimento ordenarVetor
//ordena o vetor utilizando o SelectionSort
var
i, cont, posMenor : inteiro
temp : real
inicio
//percorrer o vetor
para cont de 1 ate 9 faca
//define a posição do menor como sendo a posição atual
posMenor <- cont
//percorre o restante do vetor procurando o menor valor
para i de cont+1 ate 10 faca
//compara o elemento atual com o da posição do menor
se (vet[i] < vet[posMenor]) entao
//guarda a posição do elemento
posMenor <- i
fimse
fimpara
//se encontrou elemento menor troca a posição
se (cont <> posMenor) entao
//troca os elementos de posição
temp <- vet[cont]
vet[cont] <- vet[posMenor]
vet[posMenor] <- temp
fimse
fimpara
fimprocedimento
procedimento escreverVetor
//escreve o conteúdo do vetor
var
cont : inteiro
inicio
para cont de 1 ate 10 faca
escreval(cont:3," - ", vet[cont] : 10 : 3)
fimpara
fimprocedimento
//programa principal
inicio
lerVetor
ordenarVetor
escreverVetor
fimalgoritmo
2
O VisuAlg não permite a definição de registros.
• Exemplo:
tipo //área de declaração de tipos
RegPessoa = registro
nome : caracter
sexo : caracter
rg: inteiro
fimregistro
var //área de declaração de variáveis
pessoa, pessoa1 : RegPessoa
inicio
leia (pessoa.nome)
leia (pessoa.sexo)
leia (pessoa.rg)
pessoa1 <- pessoa
escreva (pessoa1.nome)
escreva (pessoa1.sexo)
escreva (pessoa1.rg)
fimalgoritmo
Exercícios Resolvidos
maior = 0
menor = 999999
//Ler código do funcionário
escreva (“Digite o codigo do funcionario (0 para sair)”)
leia (funcionario.codigo)
//Enquanto código diferente de 0
enquanto (funcionario.codigo) <> 0 faca
//Ler nome, cargo e salário
escreva (“Digite o nome do funcionario”)
leia (funcionario.nome)
escreva (“Digite o cargo do funcionario”)
leia (funcionario.cargo)
escreva (“Digite o salario do funcionario”)
leia (funcionario.salario)
//Se é o maior salário
se (funcionario.salario > maior) entao
//Armazenar dados do funcionário
maior <- funcionario.salario
funcMaior <- funcionario
fimse
//Se é o menor salário
se (funcionario.salario < menor) entao
//Armazenar dados do funcionário
menor <- funcionario.salario
funcMenor <- funcionario
fimse
//Ler código do funcionário
escreva (“Digite o codigo do funcionario (0 para sair)”)
leia (funcionario.codigo)
fimenquanto
//Escrever dados do funcionário com maior salário
escreval (“Funcionário com maior salário”)
escreval (funcMaior.codigo, “ “, funcMaior.nome, “ “,
funcMaior.cargo, “ “, funcMaior.salario)
//Escrever dados do funcionário com menor salário
escreval (“Funcionário com menor salário”)
escreval (funcMenor.codigo, “ “, funcMenor.nome, “ “,
funcMenor.cargo, “ “, funcMenor.salario)
fimalgoritmo
7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes
descrita no passo 4 para verificar se os resultados desejados estão corretos.
Em algumas situações é necessário registrar informações intermediárias para
acompanhar a execução dos passos.
(E) 1 JJ Pedreiro 4500,00 (S) Funcionário com maior salário
2 Mia Secretária 5000,00 3 Cacá Diretor 30000,00
3 Cacá Diretor 30000,00 Funcionário com menor salário
4 Beá Faxineira 400,00 4 Beá Faxineira 400,00
8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais
possibilidades de erro e melhorar a maneira de descrever ou o modo como
está sendo feito. Uma solução eficiente deve usar menos memória possível e
ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne
ao passo 6.
Exercícios Propostos