Академический Документы
Профессиональный Документы
Культура Документы
Tecnologia em Análise
VIRARAPÁGINA
Semestre 2
e Desenvolvimento de
Sistemas
Caderno de Atividades
Construção de Algoritmos
Caderno de Atividades
Tecnologia em Análise e Desenvolvimento de Sistemas
Disciplina
Construção de Algoritmos
Coordenação do Curso
Professor Msc. Arley Regina Lobo
Professor Msc. Carlos Eduardo de Azevedo
Autora
Jeanne Dobgenski
Análise de Processos
Diagramação
Juliana Cristina e Silva
Célula de Inovação e Produção de Conteúdos
Flávia Lopes
Chanceler Pró-Reitor de Graduação
Ana Maria Costa de Sousa Eduardo de Oliveira Elias
Realização:
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
6
Tema 01
Introdução: Noção de Algoritmo, Dado, Variável,
Comandos e Programa
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
• A definição de algoritmos.
7
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Introdução: Noção de Algoritmo, Dado,
Variável, Comandos e Programa
Você já leu alguma definição de algoritmo? Se sua resposta foi afirmativa então você
provavelmente deve ter visto como exemplo de execução dos passos de alguma receita
culinária, por ser essa uma das formas mais intuitivas de algoritmo usadas no cotidiano. Se
esse texto é o seu primeiro contato com a ideia de algoritmo, o que você consegue extrair
sobre a relação feita com uma receita culinária? Pense bem, esse é um exercício importante!
Algoritmo pode ser definido basicamente como uma sequência lógica e finita de passos para se
chegar a um resultado desejado. Em computação, pode-se dizer que é um procedimento para
resolver um problema usando um número finito de instruções, envolvendo, frequentemente,
a repetição de uma ou mais operações.
É importante observar que um problema pode ser resolvido por muitos algoritmos distintos,
8
LEITURAOBRIGATÓRIA
mas será que todas as soluções serão as mesmas ou satisfatórias? A resposta dessa
questão começa a ser explanada no próximo parágrafo, atente-se a ele.
São transcritas a seguir as cinco importantes propriedades aceitas como requisitos para um
algoritmo – definidas por Knuth e citadas pelos autores do Livro-Texto desta disciplina (PIVA
JR. et al., 2012, p. 6).
• 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. Essas entradas são
tomadas a partir de conjuntos de objetos especificados.
Considerando o que foi explicado até agora, pense num algoritmo para calcular a sua média
final nesta disciplina após você completar todas as atividades de avaliação previstas. Quais
são as informações que você precisa obter para fazer o cálculo? Qual a média mínima para
aprovação?
Passo 1 –
Obter a média do 1º bimestre.
Passo 2 –
Obter a média do 2º bimestre.
Passo 3 –
Obter o peso do 1º bimestre.
Passo 4 –
Obter o peso do 2º bimestre.
Passo 5 –
Efetuar o cálculo da média final ponderada com os dados obtidos nos
Passos 1 a 4.
Passo 6 – Apresentar o resultado do cálculo realizado no Passo 5.
9
LEITURAOBRIGATÓRIA ÍNICIO
Observe que o Algoritmo 1 é apenas um exemplo que foi apresentado para calcular a média
final. Considerando as propriedades de Knuth (apud PIVA JR. et al., 2012) para algoritmos,
percebe-se que estes são finitos, ou seja, são executados num número determinado de
passos. A definição foi rigorosa, ou seja, não há dúvidas sobre o que deve ser feito em cada
passo. Há dados de entrada que são solicitados nos Passos 1 a 4. Apresenta-se uma saída
no Passo 6 que é eficaz, pois você poderá calcular sua média final em poucos minutos se
souber o que é uma média ponderada. Caso tenha esquecido, gastará um pouco mais de
tempo para pesquisar como efetuar o cálculo.
O algoritmo que você propôs é igual a esse? Talvez não, e isso é normal, uma vez que
existem muitas formas de descrever e solucionar um problema. Observe a ordem dos
passos. Lembre-se de que na definição de algoritmo foi mencionada a “[...] sequência lógica
de passos [...]”? Se fossem alteradas as ordens dos Passos 1 a 4 não haveria mudança no
resultado final, mas, se o Passo 5 fosse colocado como Passo 1, o algoritmo seria inválido
e não retornaria nada.
Esse exemplo mostra por que os algoritmos precisam ser escritos com utilização do conceito
de lógica formal (ou lógica simbólica), que se concentra na estrutura do raciocínio e fornece
os princípios para formalização do processo de construção de algoritmos. A lógica de
programação pode ser considerada a técnica de encadear ações ou instruções para atingir
determinado objetivo. Observe no exemplo do Algoritmo 1 que uma instrução isolada não
resolve o problema. Ou seja, se existisse apenas o Passo 5, seria possível obter o resultado
final? Claro que não. De forma análoga é possível verificar que ocorreria o mesmo para cada
uma das instruções do algoritmo. O que se compreende desse fato? Que uma instrução ou
ação isolada não permite realizar o processo completo, e por isso é necessário um conjunto
de instruções definidas numa ordem sequencial e lógica. Para não errar, siga as orientações
apresentadas a seguir sempre que precisar desenvolver um algoritmo.
10
LEITURAOBRIGATÓRIA
Passos para construir algoritmos (GOMES, 2005)
1. Compreender o problema.
2. Identificar os dados de entrada.
3. Identificar os dados de saída.
4. Determinar o que é preciso para transformar dados de entrada em dados de
saída:
a. observar regras e limitações;
b. identificar todas as ações a serem realizadas,
c. eliminar ambigüidades.
5. Construir o algoritmo.
6. Testar o algoritmo.
7. Executar o algoritmo.
Dado é qualquer elemento identificado em sua forma bruta que por si só não conduz a uma
compreensão de determinado fato ou situação. Por exemplo, a média final e o peso do 1º
bimestre são dados do Algoritmo 1. Como é possível estruturar esses dados para tornar o
Algoritmo 1 um programa computacional? Uma das coisas a serem analisadas é o tipo de
dado que eles são. Ambos são dados numéricos. A média final pode ser apresentada como
um valor inteiro ou como um valor real? E quanto ao peso? O ideal é representar a média
final como um valor real, afinal esse número pode não ser exato e assumir valor fracionário,
ou seja, com decimais. Já o peso pode ser representado como um valor inteiro. Você verá
que essa definição possui muito impacto num programa computacional quanto ao espaço
de memória que precisará ser reservado para cada dado a ser utilizado. Na linguagem de
programação “C”, um valor inteiro ocupa 2 bytes ao passo que um real ocupa o dobro – 4
bytes. Em VisuALG e Pascal, por exemplo, a diferença é ainda maior: são 2 e 6 bytes para
os valores inteiro e real, respectivamente.
Para que o Algoritmo 1 seja apresentado como um programa, é preciso escrevê-lo com instruções que o
computador possa compreender. Da forma como foi apresentado, o algoritmo não deixa claro o cálculo
matemático que deve ser realizado.Além disso, é necessário definir o tipo de cada um dos dados de entrada
e saída e como eles serão identificados pelo programa, ou seja, como serão “chamados/localizados ”.
11
LEITURAOBRIGATÓRIA ÍNICIO
valor real
M_1B // média do 1º bimestre
M_2B // média do 2º bimestre
MF // média final
valor inteiro
P_1B // peso do 1º bimestre
P_2B // peso do 2º bimestre
//Observações:
// O símbolo “//” foi usado para indicar um comentário no programa. Não serão
// considerados os caracteres que estiverem após esse símbolo na linha em que ele
// aparecer.
// “” símbolo de atribuição. Por exemplo, foi atribuído o valor real 7.0 a M_1B.
// “*” símbolo usado para indicar multiplicação.
// “/” símbolo usado para indicar divisão.
// Parênteses foram usados para indicar ordem de precedência nas operações
// aritméticas.
Veja como o Algoritmo 2 está estruturado. Além de dar “nomes” aos dados, ele também
define o tipo que estes são – existem outros tipos de dados que você aprenderá mais à
frente. Para facilitar o entendimento e a leitura de um algoritmo computacional por outra
pessoa é importante que o desenvolvedor estabeleça critérios no momento de definir os
“nomes” dos dados para que estes sejam facilmente compreendidos. Por exemplo, M_1B
significa “Média do 1º Bimestre” e esse critério (as iniciais das palavras) foi adotado para
indicar os demais dados do Algoritmo 2. Outra característica interessante é a apresentação
de comentários no programa. Esse recurso é fundamental em programação, pois permite
identificar os dados usados, explicar uma ou mais instruções, inserir comentários gerais
acerca do procedimento implementado, entre outros. Isso é chamado de documentação de
12
LEITURAOBRIGATÓRIA
programa, o que você estudará com mais detalhes nas disciplinas de programação.
Perceba que o Algoritmo 2 calcula a média final para dois valores específicos de notas
obtidas no 1º e 2º bimestres, pois M_1B e M_2B sempre conterão os valores 7.0 e 4.0,
respectivamente. Isso significa que esses dados são constantes no Algoritmo 2, não
mudam, e o resultado final será sempre o mesmo. E se você desejasse simular suas notas
na disciplina, por exemplo? Então os valores atribuídos a M_1B e M_2B seriam variáveis
e permitiriam verificar a média final a partir de valores diferentes. Nesse caso, em vez de
atribuir um valor diretamente ao código, o programa poderia ser definido para ler o dado por
alguma forma de entrada, como o teclado. O Algoritmo 3 mostra como ficaria essa alteração
usando instruções de leitura (LEIA) e de saída (ESCREVA).
valor real
M_1B // média do 1º bimestre
M_2B // média do 2º bimestre
MF // média final
valor inteiro
P_1B // peso do 1º bimestre
P_2B // peso do 2º bimestre
//Observações:
// O símbolo “//” foi usado para indicar um comentário no programa. Não serão
// considerados os caracteres que estiverem após esse símbolo na linha em que ele
// aparecer.
13
LEITURAOBRIGATÓRIA ÍNICIO
Como apresentado, o Algoritmo 3 pode ser usado para calcular a média final para valores
distintos de médias do 1º e 2º bimestres e poderá ser incrementado para retornar outras
saídas como:
• Calcular a média final de todos os alunos de uma classe e a média final da turma,
entre outros.
Lembre-se de que os algoritmos correspondem a um conceito central em programação e
que, para aprender sobre eles, a forma mais eficaz é resolver muitos exercícios. Boa sorte!
14
LINKSIMPORTANTES
Quer saber mais sobre o assunto?
Então:
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Leia o “Manual do VisualALG”. É um excelente documento que mostra como usar o VisuALG
para implementação e teste de algoritmos.
Disponível em: <http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/Visualg2.pdf>. Acesso em: 17
maio 2013.
VÍDEOS:
Assista à aula “Curso de programação para iniciantes: #1 Afinal, o que é uma linguagem de
programação?”.
Essa aula apresenta informações sobre a representação binária usada pelo computador. Esses
conceitos são importantes para compreender por que é necessário escrever um algoritmo em uma
linguagem que possa ser interpretada e/ou compilada por um computador.
Disponível em: <http://www.youtube.com/watch?v=PmefpISZ7Ew>. Acesso em: 16 maio 2013.
15
LINKSIMPORTANTES ÍNICIO
AGORAÉASUAVEZ
Instruções:
Esse é o momento de realmente iniciar sua trajetória para se tornar
um desenvolvedor de programas. Quanto mais algoritmos construir
e testar, melhor será seu desempenho nessa área. A seguir são
apresentadas questões relativas ao conteúdo abordado, que
ajudarão em seus estudos e no preparo para a avaliação. Atente-
se aos enunciados para executar o que foi solicitado e sempre
que for necessário retorne ao material de apoio para responder
adequadamente.
16
AGORAÉASUAVEZ
c) Finitude, tamanho, definição, entrada e saída. Questão 4: INDIQUE A ALTERNATIVA CORRETA
17
AGORAÉASUAVEZ ÍNICIO
18
FINALIZANDO
Neste tema você estudou que algoritmos podem ser considerados uma sequência lógica e
finita de passos para se chegar a um resultado desejado e que muitas situações do cotidiano
são realizadas por meio de algoritmos intuitivos. O estudo de algoritmos é conceito central
em programação e tem sua principal aplicação na solução de problemas computacionais,
ou seja, aqueles problemas que podem ser resolvidos por intermédio de computadores.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e concretização do aprendizado. Avalie
seu aprendizado e faça as atividades propostas!
REFERÊNCIAS
PIVA JR., Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de M.;
BIANCHI, Francisco. Algoritmos e Programação de Computadores. Rio de Janeiro, Elsevier,
2012. Livro-Texto 633.
19
GLOSSÁRIO ÍNICIO
Bit: BInary digiT, corresponde a cada impulso elétrico, positivo ou negativo, que são
representados por 0 e 1.
Byte: é um conjunto de bits. É a menor informação completa que pode ser transmitida ou
recebida de um processador num dado tempo. O número de bits varia de acordo com a
codificação usada.
Número inteiro: pode ser positivo ou negativo e não possui parte decimal.
20
GABARITO
Tema 1
Introdução: Noção de Algoritmo, Dado,
Variável, Comandos e Programa
Questão 1
Resposta: As soluções podem variar, mas basicamente o aluno deverá indicar algo
semelhante ao algoritmo descrito a seguir.
1. Pegar as ferramentas no porta-malas.
2. Retirar o estepe.
3. Instalar o macaco.
4. Levantar o carro parcialmente.
5. Afrouxar os parafusos do pneu furado.
6. Retirar o pneu furado.
7. Instalar o novo pneu.
8. Abaixar o carro.
9. Apertar bem as porcas.
10. Guardar o pneu furado e as ferramentas.
Questão 2
Resposta: Alternativa A.
Questão 3
Resposta: Alternativa D.
Questão 4
Resposta: Alternativa C.
21
GABARITO ÍNICIO
Questão 5
Resposta: Alternativa E.
Questão 6
Resposta:
Versão 1:
Passo 1 – Obter o 1º número.
Passo 2 – Obter o 2º número.
Passo 3 – Obter o 3º número.
Passo 4 – Efetuar o cálculo da soma dos dados obtidos nos Passos 1 a 3.
Passo 5 – Apresentar o resultado do cálculo realizado no Passo 4.
Versão 2:
// Declaração dos dados
valor real
N1 // 1º número
N2 // 2º número
N3 // 3º número
SOMA // Soma final
22
GABARITO
Questão 7
Resposta:
//Algoritmo que calcula área de retângulo, triângulo e quadrado
// Declaração dos dados
valor real
B // Base
H // Altura
AreaR // Área do Retângulo
AreaT // Área do Triângulo
AreaQ // Área do Quadrado
//Entrada de dados
LEIA (B) // Leitura da variável base B
LEIA (H) // Leitura da variável altura H
//Processamento
AreaR B * H // Cálculo da área do retângulo
AreaT (B*H)/2 // Cálculo da área do triângulo – também poderia ser:
// AreaT AreaR / 2
AreaQ B * B // cálculo da área do quadrado
//Saída
ESCREVA(“A área do retângulo é “); ESCREVA (AreaR); Escreva(“cm2”);
ESCREVA(“A área do triângulo é “); ESCREVA (AreaT); Escreva(“cm2”);
ESCREVA(“A área do quadrado é “); ESCREVA (AreaQ); Escreva(“cm2”);
23
GABARITO ÍNICIO
Questão 8
Resposta:
//Algoritmo que calcula média ponderada final – três pesos
//Declaração dos dados
valor real
M1P // média da 1ª prova
M2P // média da 2ª prova
M3P // média da 3ª prova
MF // média final
valor inteiro
P1 // peso da 1ª prova
P2 // peso da 2ª prova
P3 // peso da 3ª prova
24
GABARITO
Questão 9
Resposta:
//Algoritmo que calcula de X2 e Y-2
//Declaração dos dados
valor inteiro
X // variável inteira X
Y // variável inteira Y
XX // variável que armazenará X*X
Valor real
INV_YY // variável que armazenará o inverso de Y*Y
//Processamento
XX X*X
INV_YY 1/(Y*Y)
//Saída
ESCREVA(“X ao quadrado é ”); ESCREVA (XX)
ESCREVA(“O inverso de Y ao quadrado é ”); ESCREVA (INV_YY)
25
GABARITO ÍNICIO
Questão 10
Resposta:
//Algoritmo que calcula o valor de grau Celsius conhecendo-se o equivalente
// em Fahrenheit
//Declaração dos dados
valor real
F // variável real Fahrenheit
C // variável real Celsius
//Processamento
C (5/9)*(F-32)
//Saída
ESCREVA(“Grau Celsius é ”); ESCREVA (C)
26
27
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
30
Tema 02
Análise e Princípios de Resolução de Problemas –
Representação Gráfica e em Pseudolinguagem
de Algoritmos
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
31
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Análise e Princípios de Resolução de
Problemas – Representação Gráfica e em
Pseudolinguagem de Algoritmos
Conforme visto no tema 1, um algoritmo pode ser considerado uma sequência lógica e finita
de passos para se chegar a um resultado desejado. É possível adotar essa mesma ideia
para definir a solução de um problema?
Há bastante literatura que trata dos processos para resolver problemas, apresentando técnicas
ou orientações genéricas que permitam encontrar a solução de forma sistemática. No Livro-
Texto da disciplina (PIVA JR. et al., 2012, p. 36-37), os autores apresentam quatro passos para
a resolução genérica de problemas: saber o que deve ser feito; imaginar a solução; avaliar a
solução listada e, por fim, reavaliar. De forma análoga, Polya (1995) propõe: compreender o
problema; estabelecer um plano; executar o plano e reexaminar o resultado final.
32
LEITURAOBRIGATÓRIA
Outro fato bastante discutido pelos autores que tratam desse assunto é que a utilização de
estratégias sistemáticas para resolver problemas resulta em soluções mais precisas e bem-
sucedidas do que as encontradas intuitivamente. Por que será que isso ocorre? Uma ideia
brilhante é muito desejável, mas se nela se deixar de lado uma das quatro fases, descritas
pelos autores citados, alguns erros poderão acontecer. Imagine o resultado da solução de
um problema que não foi completamente compreendido. Mesmo que a ideia para resolvê-lo
seja ótima, poderá não ser suficiente para se chegar ao objetivo desejado, deixando alguma
característica importante sem o tratamento adequado. E de que adianta tratar detalhes do
problema se estes não forem relacionados com o objetivo central por meio de um plano
para a solução? Ter compreendido o problema e traçado um plano para resolvê-lo não
significa que a solução terá o êxito desejado. É fundamental que o plano seja verificado
passo a passo para evitar erros desnecessários e avaliar se a solução é adequada. Por fim,
se a solução final for reavaliada, reconsiderando e reexaminando o caminho que levou ao
resultado final, além de consolidar e aperfeiçoar sua capacidade de resolver problemas, você
perceberá que sempre resta alguma coisa a fazer. Ou seja, com estudo e aprofundamento,
uma solução sempre poderá ser melhorada – é o chamado refinamento de solução, pois
problema algum se esgota completamente.
A Tabela 2.1 apresenta uma adaptação da estratégia apresentada por Polya (1995) para
resolver problemas. Observe que o método de realização de perguntas para se chegar a
caminhos para solucionar um problema é comum, mas nem sempre observado e utilizado
adequadamente. É bem provável que você utilize (ou já tenha utilizado) esse tipo de
procedimento para resolver alguns problemas que encontra (ou encontrou). Pense a esse
respeito!
33
LEITURAOBRIGATÓRIA ÍNICIO
a) Qual é a incógnita?
1. Compreender b) Quais são os dados?
o problema c) Qual é a condicionante?
d) É possível satisfazer a condicionante?
34
LEITURAOBRIGATÓRIA
Uma observação interessante é verificar que as questões apresentadas na Tabela 2.1 são
sugestões que auxiliam a encontrar um caminho para resolver um problema. Não significa
que todas as perguntas devem ser realizadas ou respondidas, muito menos que apenas
elas devam ser consideradas. Tome como exemplo o problema de calcular a média final na
disciplina de Construção de Algoritmos, abordado no Tema 1. Um roteiro para resolver esse
problema poderia ser dado pela sequência apresentada a seguir.
35
LEITURAOBRIGATÓRIA ÍNICIO
1) Compreender o problema
a) Qual é a incógnita?
“A média final.”
b) Quais são os dados?
“As médias e os pesos do 1º e 2º bimestres.”
c) Qual é a condicionante que relaciona a incógnita com os dados?
“A média final é o resultado da média ponderada em que os fatores são as
médias dos bimestres, sendo os pesos os seus fatores de ponderação.”
d) É possível satisfazer a condicionante ou a condicionante é suficiente para
determinar a incógnita?
“Sim. Conhecendo-se os dados, a incógnita é determinada pelo cálculo da
média ponderada.”
2) Estabelecer um plano
a) Já viu esse problema antes ou conhece um correlato?
“Sim. Um problema correlato pode ser considerado o cálculo da média
aritmética simples, em que a soma de todos os fatores é dividida pelo número
de fatores da soma.”
b) Se o problema for conhecido é possível usar o seu método?
“Sim, o problema é conhecido e é possível usar o seu método de atribuir uma
importância diferente a cada um dos fatores por meio da multiplicação de
cada item por um fator de ponderação ou peso específico. Os valores
resultantes devem ser somados e divididos pela soma dos pesos para obter a
média ponderada.”
c) Considere a incógnita, não perca de vista o objetivo. Quais são os meios para
esse fim?
“Os descritos no item ‘b’.”
d) Utilizou todos os dados?
“Sim.”
e) Utilizou toda a condicionante?
“Sim.”
3) Executar o plano
a) Verifique cada passo do plano estabelecido.
“Coletar os dados: média 1º bimestre, média 2º bimestre, peso 1º bimestre,
peso 2º bimestre. Efetuar o cálculo para média ponderada.”
b) É possível verificar claramente que o passo está correto?
“Sim, basta realizar o que foi indicado no item ‘a’.”
36
LEITURAOBRIGATÓRIA
Agora você conhece e já sabe utilizar um método sistemático para resolver problemas,
além de já ter visto como representar um algoritmo para a solução do problema (o que
foi apresentado no Tema 1). Poderá, também, perceber como é simples a utilização de
fluxogramas para representação gráfica de algoritmos. A Tabela 2.2 apresenta os elementos
mais utilizados para a representação de fluxogramas, contendo ainda o seu correspondente
numa pseudolinguagem ou Português Estruturado.
Comandos
Elemento (signo) em Português Significados e utilização
Estruturado
Ordem dos
Fluxo: indica o sentido (direção) dos passos do
comandos
algoritmo.
identifica o fluxo.
Qualquer
Processo: um passo (operação) do algoritmo.
operação.
37
LEITURAOBRIGATÓRIA ÍNICIO
Como ficaria o Algoritmo 3 – que foi apresentado no Tema 1 e resolve o problema da média
final –, em fluxograma e corrigido para Português Estruturado? Uma possível solução é
apresentada a seguir na Figura 2.1.
INÍCIO INÍCIO
MF ((M_1B*P_1B)+(M_2B*P_2B))/(P_1B+P_2B) MF((M_1B*P_1B)+(M_2B*P_2B))/(P_1B+P_2B)
ESCREVA (MF)
MF
FIM FIMALGORITMO
Este é o momento certo para exercitar seus novos conhecimentos. O VisuALG é um ambiente
para executar programas escritos em algoritmo ou português estruturado, com fins didáticos.
No Tema 1, foram disponibilizados os links para o manual do ambiente e para um vídeo
com uma aula introdutória. Logo, você tem as condições suficientes para testar o algoritmo
descrito para calcular a média final! Aproveite seu tempo e dedique-se à sua instrução!
38
LINKSIMPORTANTES
Quer saber mais sobre o assunto?
Então:
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Acesse o conjunto de slides que tratam sobre “Método de solução de problemas”, apresentado pelo
prof. Dr. Antonio R. Albuquerque.
Disponível em: <http://www.dozen.com.br/nakamura/biblioteca/metodologia%20definicao%20
de%20problemas.pdf>. Acesso em: 24 maio 2013.
Leia o artigo intitulado Metodologia da resolução de problemas, desenvolvido por Maria Teresa Car-
neiro Soares (UFPR) e Neuza Bertoni Pinto.
Disponível em: <http://www.ufrrj.br/emanped/paginas/conteudo_producoes/docs_24/metodologia.
pdf>. Acesso em: 24 maio 2013.
VÍDEOS:
Assista a este vídeo que apresenta uma discussão sobre resolução de problemas.
39
AGORAÉASUAVEZ ÍNICIO
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado,
as quais ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
40
AGORAÉASUAVEZ
d) 45. Questão 5: INDIQUE A ALTERNATIVA CORRETA
e) 60.
As duas questões seguintes podem ser
utilizadas respectivamente em quais
Questão 4: INDIQUE A ALTERNATIVA CORRETA passos do método de solução de problemas
apresentados por Polya (1995)?
Classifique cada uma das seguintes i. Quais são os dados?
afirmações em “V” (se verdadeira) ou
ii. Considere a incógnita, não perca de
“F” (se falsa) e assinale a alternativa que
vista o objetivo. Quais são os meios para
corresponde à sequência correta de
esse fim?
indicações.
Marque a alternativa que apresente os
I – Os quatro passos para a resolução
passos corretos.
genérica de problemas apresentados
pelos autores do Livro-Texto da disciplina a) Para “compreender o problema” e para
são: saber o que deve ser feito; imaginar “estabelecer um plano”.
a solução; avaliar a solução listada e, por b) Para “executar o plano” e para
fim, reavaliar. “reexaminar o resultado final”.
II – Os quatro passos para a resolução c) Para “compreender o problema” e para
genérica de problemas apresentados “executar o plano”.
por Polya (1995) são: compreender o
d) Para “executar o plano” e para
problema; estabelecer um plano; executar
“compreender o problema”.
o plano e reexaminar o resultado final.
e) Para “compreender o problema” e para
III – A utilização de estratégias sistemáticas
“reexaminar o resultado final”.
para resolver problemas resulta em
soluções mais precisas e bem-sucedidas
do que as encontradas intuitivamente. Questão 6: RESPOSTA DISSERTATIVA
a) V, F, V.
Dado o problema resolvido na questão 2 – o de en-
b) V, F, F. contrar o peso do copo vazio, sabendo que este,
c) F, V, F. cheio de água, pesa 325g e, com metade desta
fora do copo, o peso cai para 180g –, apresente
d) V, V, F.
um roteiro para se chegar à solução por meio da
e) V, V, V. estratégia de quatro passos de Polya (1995). In-
dique as perguntas feitas no procedimento.
41
AGORAÉASUAVEZ ÍNICIO
42
FINALIZANDO
A construção de algoritmos está intimamente ligada à resolução de problemas, afinal o
objetivo dessa área é propor soluções computacionais como ferramentas úteis em diversos
campos de ação.
Neste tema você estudou um método sistemático para a resolução de problemas, sendo
importante que perceba que o uso contínuo dessa técnica trará muitos benefícios, como o de
desenvolver o seu raciocínio lógico; o de aguçar sua compreensão de situações-problemas,
o de evitar erros por falta de observação do objetivo central do problema e suas possíveis
restrições, entre outros.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e concretização do aprendizado. Avalie
seu aprendizado e faça as atividades propostas!
REFERÊNCIAS
PIVA JR., Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de M.;
BIANCHI, Francisco. Algoritmos e Programação de Computadores. Rio de Janeiro, Elsevier,
2012. Livro-Texto 633.
43
GLOSSÁRIO ÍNICIO
44
GABARITO
Tema 2
Análise e Princípios de Resolução de
Problemas – Representação Gráfica e em
Pseudolinguagem de Algoritmos
Questão 1
Resposta: As soluções podem variar, mas basicamente o aluno deverá indicar algo
semelhante ao algoritmo descrito a seguir.
Passos de um
roteiro para resolver Passos para construir algoritmos
problemas
1. Compreender o problema.
1. Compreender o
2. Identificar os dados de entrada.
problema
3. Identificar os dados de saída.
6. Testar o algoritmo.
3. Executar o plano
7. Executar o algoritmo.
Questão 2
Resposta: Alternativa C.
45
GABARITO ÍNICIO
Questão 3
Resposta: Alternativa D.
Questão 4
Resposta: Alternativa E.
Questão 5
Resposta: Alternativa A.
46
GABARITO
Questão 6
Resposta:
47
GABARITO ÍNICIO
Questão 7
Resposta:
Fluxograma
INÍCIO
y, z
x 2*z - y
FIM
48
GABARITO
Questão 8
Resposta:
49
GABARITO ÍNICIO
Questão 9
Resposta:
Fluxograma
INÍCIO
y, x
10x + 9y = 1260
y = 2x
z y-x
FIM
50
GABARITO
Questão 10
Resposta:
//Algoritmo que calcula a soma do quadrado de três números
//Declaração dos dados
valor inteiro
A // primeira variável
B // segunda variável
C // terceira variável
S // variável soma
//Processamento
S (A*A)+(B*B)+(C*C)
//Saída
ESCREVA(“A soma é ”); ESCREVA (S)
51
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
54
Tema 03
Descrição e Construção Básica de Algoritmo:
Operadores Matemáticos, Tipos de Dados,
Atribuição, Leitura e Escrita
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
• Operadores matemáticos.
55
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Descrição e Construção Básica de Algoritmo:
Operadores Matemáticos, Tipos de Dados,
Atribuição, Leitura e Escrita
Em desenvolvimento de algoritmos você precisará usar operadores matemáticos e lógicos
para obter os resultados necessários para a solução do problema que estiver tratando. No
entanto, é fundamental conhecer não só os tipos de dados que podem ser usados para
armazenar as informações necessárias para os procedimentos do algoritmo, como também
a forma de obtê-las por leitura e de apresentá-las pela escrita.
56
LEITURAOBRIGATÓRIA
Lembre-se de que o computador, ao executar um algoritmo, precisará trabalhar com muitas
informações, que deverão estar guardadas em algum lugar. Por isso é necessário, no início
do programa, determinar quais são os dados do algoritmo, defini-los e armazenar espaço
em memória para que eles possam ser usados durante o processamento. Além disso, eles
podem ser constantes (não alteram seu conteúdo ou valor no decorrer da execução do
algoritmo) ou variáveis (alteram seu conteúdo ou valor durante a execução do programa).
Os tipos de dados usados são o inteiro, o real, o caractere e o lógico. No quarto capítulo
do Livro-Texto da disciplina, Piva Jr. et al. (2012) indicam o espaço de armazenamento
necessário para cada tipo de dado em diferentes linguagens de programação. É importante
que você conheça qual quantidade de espaço é usada por cada tipo de dado, a fim de
auxiliá-lo(a) a definir corretamente qual é a mais eficiente para a situação.
A Tabela 3.1 apresenta uma compilação sobre os tipos de dados, sua interpretação e a
quantidade de espaço em memória de que necessitam.
57
LEITURAOBRIGATÓRIA ÍNICIO
58
LEITURAOBRIGATÓRIA
Como você pôde perceber, a definição do tipo dos dados que serão usados no algoritmo
é muito importante, mas ainda é preciso dar nome às variáveis ou às constantes que os
armazenarão, ou seja, é necessário nomear os identificadores. Quanto mais claro o nome
do identificador, mais fácil será “ler” o programa escrito. Por exemplo: uma variável que, no
decorrer do processamento do algoritmo, armazenar o resultado de uma soma, poderá ser
nomeada por “soma” simplesmente; entretanto, se for nomeada por “X”, o entendimento do
seu significado não é direto, dependerá de uma análise do código, dificultando a leitura do
algoritmo.
Segundo Piva Jr. et al. (2012, p. 87) as regras para criar um identificador são as descritas a
seguir.
59
LEITURAOBRIGATÓRIA ÍNICIO
Como você pôde observar nos exemplos da Tabela 3.2, a variável idade recebeu o valor 12,
que é um número constante. Já a variável preço recebe o conteúdo de outra variável, que
é identificada como valor e no exemplo não apresenta o seu conteúdo. O mesmo ocorre
com a variável A que recebe o valor da soma de outras duas variáveis B e C. Em situações
como essas, ao analisar o código, é possível saber de imediato que a variável “idade” tem
12 como conteúdo. Mas é mais difícil identificar o conteúdo das variáveis “preço” e “A”.
Uma forma simples de verificar o conteúdo dessas variáveis é colocar uma instrução no
programa para que se escreva o conteúdo da variável na tela do computador, por exemplo.
A essa instrução de “saída de dados” dá-se o nome de escreva() – deve-se colocar entre os
parênteses o nome da variável (ou da constante) de que se deseja verificar o valor.
Outra instrução bastante utilizada é a de leitura de alguma variável (ou constante) que não
é definida a priori no próprio algoritmo, mas indicada pelo usuário que está executando o
algoritmo, por exemplo: em um comando de entrada de dados. Essa instrução de leitura é
definida como leia() e, de forma análoga a escreva(), precisa informar entre os parênteses
qual a variável (ou constante) que armazenará a informação lida. Nesse ponto, é importante
que você observe que, se o tipo de dado definido para a variável (ou constante) não for
adequado à informação que será lida, poderá existir um problema na execução do programa.
Agora que já sabe definir os tipos de dados a serem usados num algoritmo, sabe perceber se
os dados serão constantes ou variáveis e sabe como estes serão identificados, você precisa
compreender quais são os tipos de operações que poderá realizar com essas informações.
60
LEITURAOBRIGATÓRIA
Tabela 3.3 – Principais operadores matemáticos.
Símbolo do
Operação Prioridade Exemplo
operador
É importante que você busque complementar seu estudo analisando outros operadores
matemáticos que são apresentados no Livro-Texto dessa disciplina (PIVA JR. et al., 2012,
p. 61).
Considere o seguinte problema e sua solução algorítmica para consolidar o que estudou até
agora. Deseja-se calcular o salário de um funcionário que tem gratificação de 5% sobre o
salário e paga imposto de 7% sobre o salário-base. O programa deverá calcular e mostrar
o salário a receber.
61
LEITURAOBRIGATÓRIA ÍNICIO
valor real
sal_base // Salário-base
sal_receber // Salário a receber
gratificacao // Gratificação
imposto //Imposto a pagar
INICIO
Leia(sal_base) // Valor passado pelo usuário via teclado na execução do programa
gratificacao sal_base * (5/100) // Gratificação, poderia ser sal_base*0,5
imposto sal_base * (7/100) // Imposto, poderia ser sal_base*0,7
sal_receber sal_base + gratificação - imposto // Salário a receber
Escreva (sal_receber) // Mostra na tela do computador o salário a receber
FIMALGORITMO
62
LINKSIMPORTANTES
Quer saber mais sobre o assunto?
Então:
SITES:
Leia material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Acesse o conjunto de slides que versam sobre o VisuALG, apresentação dada pelo prof.
Vilson Heck Junior.
Disponível em: <http://docente.lages.ifsc.edu.br/vilson.junior/MaterialDidatico/ip/IP_02_VisuALG_
Basico.pdf>. Acesso em: 19 jun. 2013.
Leia a excelente apostila sobre lógica de programação, de autoria do professor Jean Carlos
Coelho de Alencar do Instituto Federal de Educação, Ciência e Tecnologia de Sertão
Pernambuco.
Disponível em: <http://pt.scribd.com/doc/59211489/12/Operador-Logico-xou>. Acesso em: 19 jun.
2013.
VÍDEOS:
Assista ao vídeo “ALP VisuALG 06 - Operadores Aritméticos”, que apresenta uma aula so-
bre operadores matemáticos em VisuALG.
Disponível em: <http://www.youtube.com/watch?v=QO4i6MjgP54>. Acesso em: 19 jun. 2013. É um
bom referencial para começar a desenvolver os programas em VisuALG.
63
AGORAÉASUAVEZ ÍNICIO
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado
e que ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
x = a + b*c/f - e
No tema 2 foram estudadas as
representações gráficas (fluxograma) de x = (a*b*c*d)/(e*f)
algoritmos. Com base nesse aprendizado,
Escolha a seguir a alternativa que contém
desenvolva o fluxograma para o Algoritmo
os resultados corretos:
1 apresentado neste tema 3.
a) 15; 9; 10; 40; 18; 350.
64
AGORAÉASUAVEZ
( ) Variável é uma posição de memória II – Tipos de dados reais são os números
nomeada pelo programador, a qual pertencentes ao conjunto dos Reais, isto
guardará um valor que poderá ser é, que podem possuir parte fracionária.
modificado durante a execução do Também são chamados de ponto flutuante
programa. graças à maneira como o computador os
armazena.
( ) Todas as variáveis devem ser declaradas
antes de seu uso. III – Tipos de dados caracter são os
valores pertencentes ao conjunto de
( ) São considerados identificadores os
todos os caracteres numéricos (0...9),
nomes das variáveis, as constantes, as
alfabéticos (a...z,A...Z) e especiais (! @ #
funções e outros objetos definidos no
$ % _ & *).
programa.
a) V, F, V.
( ) Num identificador, letras maiúsculas
e minúsculas são tratadas de formas b) V, F, F.
diferente.
c) F, V, F.
( ) O nome de um identificador não pode
d) V, V, F.
ser igual ao de uma palavra-chave usada
na linguagem de programação, ou a uma e) V, V, V.
função de biblioteca padrão, ou ainda, a
funções que já tenham sido definidas pelo
Questão 5: INDIQUE A ALTERNATIVA CORRETA
programador.
65
AGORAÉASUAVEZ ÍNICIO
66
FINALIZANDO
Neste tema você estudou como é importante saber o tipo de dado a ser declarado para a
constante e a variável que o programa utilizar no decorrer de sua execução, a fim de usar
os recursos computacionais adequadamente. Também viu que a identificação de um dado
é feita por uma nomeação clara e objetiva do que se deseja representar, usando as regras
descritas no texto.
Outro assunto muito importante são os operadores matemáticos que são largamente
utilizados em algoritmos. Mas lembre-se de que neste texto foram apresentados apenas os
operadores que representam as quatro operações matemáticas básicas: adição, subtração,
divisão e multiplicação. No Livro-Texto da disciplina (PIVA JR. et al., 2012) você encontrará
uma listagem dos demais operadores, tais como exponenciação, raiz, funções de seno e
cosseno, entre tantos outros.
67
REFERÊNCIAS ÍNICIO
68
GLOSSÁRIO
Constante: “é um identificador que armazena um valor fixo e imutável, durante a execução
de um algoritmo ou programa. Podemos associá-lo a uma posição de memória (endereço)
que tem um conteúdo fixo. Este conteúdo poderá ser um número (real ou inteiro), uma
cadeia de caracteres (texto) ou um valor lógico” (CARVALHO, 2007).
Variável: “é um identificador que, como sugere o nome, possui o conteúdo variável durante
a execução de um algoritmo ou programa. Podemos associar uma variável a uma posição
da memória (endereço) e poderemos armazenar (guardar) neste endereço qualquer valor
do conjunto de valores de um tipo básico associado a ela. Uma variável pode assumir vários
valores diferentes ao longo da execução do programa, mas, em um determinado momento,
possui apenas um valor” (CARVALHO, 2007).
69
GABARITO ÍNICIO
Tema 3
Descrição e Construção Básica de Algoritmo:
Operadores Matemáticos e Lógicos, Tipos de
Dados, Atribuição, Leitura e Escrita.
Questão 1
Resposta:
Fluxograma
INÍCIO
sal_base, sal_receber,
gratificação, imposto
sal_receber
FIM
70
GABARITO
Questão 2
Resposta: Alternativa C.
Questão 3
Resposta: V, V, V, V, V.
Questão 4
Resposta: Alternativa E.
Questão 5
Resposta: Alternativa D.
Questão 6
Resposta:
71
GABARITO ÍNICIO
Questão 7
Resposta:
Questão 8
Resposta:
72
GABARITO
Questão 9
Resposta:
Questão 10
Resposta:
73
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
76
Tema 04
Operadores Lógicos e Estruturas de Controle:
Sequência, Seleção e Iteração.
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
• Operadores lógicos.
77
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Operadores Lógicos e Estruturas de
Controle: Sequência, Seleção e Iteração.
Os operadores relacionais e os operadores lógicos são usados para a composição de
expressões lógicas, ou seja, aquelas que resultam em apenas duas possibilidades:
verdadeiro ou falso. A Tabela 4.1 apresenta os operadores relacionais e a Tabela 4.2 os
operadores lógicos.
78
LEITURAOBRIGATÓRIA
Tabela 4.1 – Operadores relacionais.
79
LEITURAOBRIGATÓRIA ÍNICIO
Os exemplos de algoritmos que você estudou desde o tema 1 foram construídos usando-se
apenas a estrutura de controle sequencial, ou seja, uma estrutura em que há um grupo de
comandos que são executados um após o outro – veja exemplo o exemplo na Tabela 4.3.
A estrutura de seleção ou condicional permite a escolha do grupo de ações e estruturas a
80
LEITURAOBRIGATÓRIA
serem executados quando determinadas condições, representadas por expressões lógicas,
são ou não satisfeitas. Ou seja, essa estrutura é usada quando a execução de um ou mais
comandos só poderá ser realizada dependendo de um ou mais testes anteriores. E esses
testes são condições lógicas que resultarão VERDADEIRO ou FALSO. Observe que, se o
resultado da expressão lógica for FALSO, então o grupo de comandos que dependia desse
teste para ser executado não o será. É por isso que se deve prestar bastante atenção
aos testes que forem construídos num algoritmo, pois, se o retorno não for adequado
à solução proposta, isso comprometerá o resultado final do algoritmo. As estruturas de
seleção podem ser simples ou compostas, como é mostrado na Tabela 4.4. Por fim, as
estruturas de controle de iteração ou repetição permitem que uma sequência de comandos
seja executada repetidamente até que uma determinada condição de interrupção seja
satisfeita. Esse assunto será aprofundado na próxima aula (tema 5).
ALGORITMO ALGORITMO
comando 1; X, Y, soma real
comando 2; Leia(X,Y)
comando 3; soma X+ Y
… escreva(soma)
comando N; FIMALGORITMO
FIMALGORITMO
81
LEITURAOBRIGATÓRIA ÍNICIO
Dados os exemplos de estruturas de seleção, verifique que após então e senão são aceitos
outros comandos, correto? E se houver a necessidade de realizar outro teste como um
comando interno à seleção? Isso é chamado de aninhamento de seleções. A quantidade de
comandos aninhados pode ficar muito grande, e nesses casos recomenda-se fortemente
que as condições ou testes sejam revistos para verificar a possibilidade de criar um teste
que englobe os demais. Na Tabela 4.5 apresenta-se como fica o aninhamento de seleção.
82
LEITURAOBRIGATÓRIA
Tabela 4.5 – Algoritmo com estrutura de controle de seleção aninhada.
ALGORITMO
ALGORITMO
…
X, Y, Z real
se condição
Leia(X,Y)
então sequência de comandos
se (X >= Y)
senão
então Z X – Y
se condição
senão
então comandos
se (X <> 0 e Y > 0)
senão comandos
então Z Y / X
fim se
senão Z X + Y
fim se
escreva(Z)
…
FIMALGORITMO
FIMALGORITMO
Você viu que na condição mais interna do exemplo apresentado na Tabela 4.5 são feitos
dois testes com o conectivo lógico “e”, ou seja, o comando apresentado em “então” só
ocorrerá se os dois testes forem verdadeiros (relembre esse fato analisando a Figura 4.1). O
comando apresentado em “senão” ocorrerá nas demais condições, ou seja, se os dois testes
ou apenas um deles forem falsos. Entretanto, como ficaria se a condição fosse composta
por três ou mais testes? Esse é um excelente exercício a ser feito para construir testes
corretos para os programas que desenvolverá.
83
LEITURAOBRIGATÓRIA ÍNICIO
flexibilidade bastante prática a esse tipo de estrutura. Na Tabela 4.6 pode ser observado um
exemplo do uso de escolha múltipla.
ALGORITMO
ALGORITMO
letra caracter
…
Leia(letra)
escolha expressão de seleção
escolha letra
caso “expressão” comandos
caso “a” escreva(“Vogal a”)
caso “expressão” comandos
caso “e” escreva(“Vogal e”)
caso “expressão” comandos
caso “i” escreva(“Vogal i”)
…
caso “o” escreva(“Vogal o”)
outrocaso comandos
caso “u” escreva(“Vogal u”)
fim escolha
outrocaso
…
escreva(“Consoante ”, letra)
FIMALGORITMO
FIMALGORITMO
84
LINKSIMPORTANTES
Quer saber mais sobre o assunto?
Então:
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Acesse o conjunto de slides (“Lógica operacional e estrutura de dados”) que tratam sobre
operadores lógicos, apresentado pelo prof. Airton Ribeiro.
Disponível em: <http://www.lanwan.com.br/Aulas_Senac/Tec_Redes_Turma_23014/Aula%20
10042012%20-%20Logica%20-%20Operadores%20Logicos.pdf>. Acesso em: 19 jun. 2013.
Acesse este pequeno artigo com vídeo sobre a otimização do algoritmo de busca do Google.
Disponível em: <http://www.revistainternet.com.br/2011/08/27/otimizacao-quase-diaria-do-algorit-
mo-do-google/>. Acesso em: 19 jun. 2013.
VÍDEOS:
Assista ao vídeo “ALP VisuaALG 08 – Operadores lógicos”, que apresenta uma discussão
sobre resolução de problemas.
Disponível em: <http://www.youtube.com/watch?v=ohYpmFiLiRU>. Acesso em: 19 jun. 2013.
Ambos os vídeos indicados são bons referenciais sobre os assuntos discutidos nessa aula.
85
AGORAÉASUAVEZ ÍNICIO
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado
e que ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
86
AGORAÉASUAVEZ
e a expressão lógica correspondente. III – A disjunção OU é o operador que
resulta VERDADEIRO quando um de
1. X excede Y, e K é menor que 2 ou J é
seus operandos lógicos for verdadeiro.
igual a 4.
a) V, F, V.
2. X é maior que zero, porém menor que
3*y. b) V, F, F.
c) F, V, F.
3. X não é igual a Y e Z não é igual a K, J
ou M. d) V, V, F.
87
AGORAÉASUAVEZ ÍNICIO
Escreva um programa que não só receba Obtenha o valor da variável inteira x dos
um número inteiro, mas verifique se este é trechos de programa a seguir. Considere os
par ou ímpar. seguintes valores iniciais para as variáveis:
a=3, b=2, c=-5 e d=7.
Questão 8: RESPOSTA DISSERTATIVA Teste 1
se ( a = 2 ou b < 7)
Considerando-se que a=5, b=4, c=3 e d=6, então x = (a + 2) * ( b – 2)
informe se as expressões seguintes são senão x = (a + b ) / d * (c + d)
verdadeiras ou falsas. fim se
• ( a > c ) e ( c = d ) Teste 2
Teste 2
se (a > 2) e (b < 7)
então x = (a + 2) * (b – 2)
senão x = (a + b)/d * (c + d)
fim se
88
FINALIZANDO
Para a adequada construção de algoritmos, há a necessidade de compreender todos os
recursos que as linguagens de programação dispõem aos desenvolvedores.
Neste tema você estudou sobre os operadores lógicos e as estruturas de controle que
são essenciais em qualquer algoritmo a ser definido. Além disso, observou o quanto esses
recursos são relacionados, como por exemplo, o estudo das tabelas verdades que mostram
os resultados de testes condicionais os quais, por sua vez, são usados em estruturas de
controle de seleção/condição.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e a concretização do aprendizado.
Avalie seu aprendizado e faça as atividades propostas!
89
REFERÊNCIAS ÍNICIO
90
GLOSSÁRIO
Aninhado: diz-se que um comando está aninhado quando está dentro de outro comando.
Condição: num teste computacional, pode-se dizer que condição é a exigência que precisa
ser atendida para que determinados comandos e determinadas ações sejam executados.
91
GABARITO ÍNICIO
Tema 4
Operadores Lógicos e Estruturas de
Controle: Sequência, Seleção e Iteração.
Questão 1
Resposta:
Fluxograma
INÍCIO
X, Y, Z
V F
ZX–Y X >= Y ZY–X
FIM
Questão 2
Resposta: Alternativa B.
Questão 3
Resposta: Sequência correta: (2) (5) (1) (4) (3).
92
GABARITO
Questão 4
Resposta: Alternativa A.
Questão 5
Resposta: Alternativa E.
Questão 6
Resposta:
ALGORITMO
X, Y real
Leia(X,Y)
se (X > Y)
então escreva(“O maior número é”, X)
senão se (Y>X)
então escreva(“O maior número é”, Y)
senão escreva(“Os dois números são iguais”)
fimse
fimse
FIMALGORITMO
Questão 7
Resposta:
ALGORITMO
X inteiro
resto real
Leia(X)
resto (x%2)
se (resto = 0)
então escreva(“O número é par”)
senão escreva(“O número é ímpar”)
fimse
FIMALGORITMO
Questão 8
Resposta: Solução: F, V, F.
93
GABARITO ÍNICIO
Questão 9
Resposta: Teste1 x = 3; Teste 2 x = 14
Questão 10
Resposta: Teste 1 x = 0; Teste 2 x = 1,5.
94
95
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
98
Tema 05
Laços de Repetição.
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
• Laços de repetição.
99
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Laços de Repetição.
Uma estrutura de repetição é aquela que permite que um conjunto de instruções seja
executado repetidamente até que ocorra uma condição de parada. Observe que esse fato
evita que o mesmo conjunto de instruções seja escrito várias vezes no algoritmo. Essas
estruturas também são chamadas de laços ou loops.
Os comandos iterativos (ou de repetição) básicos são “enquanto”, “para” e “repita” (PIVA JR.
et al., 2012, p. 203). O comando “enquanto” é, geralmente, utilizado quando não se sabe o
número de vezes que um trecho de algoritmo deverá ser repetido, o que não impede o seu
100
LEITURAOBRIGATÓRIA
uso quando tal número for conhecido. Esse comando possui uma condição (ou expressão
lógica) inicial, ou seja, só permite a execução de um ou mais comandos se a condição for
VERDADEIRA. No VisuALG, a sintaxe dessa instrução é a apresentada Tabela 5.1.
Observe que os comandos internos à instrução “enquanto” não estão no mesmo alinhamento
da palavra, mas sim posicionados um pouco mais à direita. Isso é chamado de indentação
e facilita a leitura do código, pois rapidamente são identificados os comandos que estão
“dentro” do “enquanto”. No mesmo alinhamento do “enquanto” está o “fimenquanto” e os
próximos comandos que existirem no algoritmo. O uso da indentação faz parte do estilo do
desenvolvedor, mas certamente contribui muito para um código claro e limpo. Portanto, em
todos os comandos nos quais houver outras instruções internas, é recomendável o uso da
indentação.
101
LEITURAOBRIGATÓRIA ÍNICIO
ALGORITMO Estado X Y
X, Y inteiro Valores iniciais 1 5
Final do primeiro teste 1<5 3 6
X1 Final do segundo teste 3<6 5 7
Y 5 Final do terceiro teste 5<7 7 8
Enquanto X < Y faca Final do quarto teste 7<8 9 9
X X+ 2 Quinto teste 9<9 é falso,
Y Y+1 portanto sai do loop
Fimenquanto “enquanto” e vai para o
Escreva(X, Y) próximo comando.
FIMALGORITMO
O comando “repita” executa um conjunto de instruções até que uma determinada condição
seja verdadeira. Como o teste lógico está no final do comando, isso significa que as instruções
serão executadas enquanto o resultado do teste for FALSO. Na Tabela 5.3, é apresentada a
sintaxe do comando em VisuALG.
repita
comando 1
comando 2
comando 3
…
comando N
ate <expressão lógica>
Analise o exemplo apresentado na Tabela 5.2 e pense em como seria representar aquele
algoritmo usando o comando “repita” em vez do comando “enquanto”. O que mudaria? Da
forma como foi apresentado, o laço “enquanto” testa se o valor de x é menor que y. Sendo
verdade, soma-se duas unidades ao valor de x e uma ao valor de y. O teste é repetido, e,
102
LEITURAOBRIGATÓRIA
se continuar verdadeiro, os incrementos em x e y continuam, tanto que o valor final de x e
y é nove. Não há mais incrementos porque x não é menor que y, e sim igual. Logo, o teste
é falso e a repetição é finalizada. Seria possível repetir os comandos de incremento para x
e y repetindo-os até que x seja menor que y? Mas, qual o valor inicial de x e y? A variável
x inicia com o valor “1” e a variável y com o valor “5”, então x já é menor que 5, certo? Se
você deixar essa condição (x < y) no comando “repita”, o que ocorrerá? As variáveis x e y
sofrerão um incremento e o teste resultará verdadeiro, terminando o laço de repetição. Ou
seja, por essa análise é possível verificar que o teste lógico usado no comando “enquanto”
não pode ser usado no comando “repita” se o objetivo for executar a mesma ação com os
dois comandos. Observe o pseudocódigo apresentado na Tabela 5.4 e suas respectivas
saídas.
ALGORITMO X Y Estado
X, Y inteiro 1 5 Valores iniciais
3 6 Primeiro teste 3>=6
X1 5 7 Segundo teste 5>=7
Y5 7 8 Terceiro teste 7>=8
repita 9 9 Quarto teste 9>=9 é
X X+ 2 verdadeiro, portanto
Y Y+1 sai do loop “repita”
ate X >= Y e vai para o próximo
Escreva(X, Y) comando.
FIMALGORITMO
Fonte: Adaptado de Ascencio e Campos (2002).
103
LEITURAOBRIGATÓRIA ÍNICIO
ALGORITMO Estado I X Y
X, Y, I inteiro Valores iniciais 1 5
Primeiro laço 1 3 6
X1 Segundo laço 2 5 7
Y5 Terceiro laço 3 7 8
para I de 1 ate 4 faca Quarto laço 4 9 9
X X+ 2
Y Y+1
Fimpara
Escreva(X, Y)
FIMALGORITMO
104
LEITURAOBRIGATÓRIA
Esse exemplo foi apresentado porque se sabia quantas repetições dos comandos internos
eram necessárias para que x atingisse o mesmo valor de y. Assim como qualquer outra
estrutura de controle, o comando “para” pode ter outros comandos “para” no seu bloco de
comandos internos, assim como outros comandos de repetição ou de seleção, por exemplo.
105
LINKSIMPORTANTES ÍNICIO
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Leia o pequeno texto “Algoritmo do CPF – Vou te ensinar como fazer o cálculo”, que explica
o funcionamento do algoritmo que gera um CPF válido.
Disponível em: <http://interformacao.wordpress.com/2007/10/01/algoritmo/>. Acesso em: 26 jun.
2013.
Leia o trecho da aula disponibilizado pela professora Maria Angela Moscalewski Roveredo
dos Santos da Pontifícia Universidade Católica do Paraná.
Disponível em: <http://www.las.pucpr.br/roveredo/aulas/a4.pdf>. Acesso em: 24 jun. 2013.
VÍDEOS:
Assista ao vídeo “VisuALG - Aula 03 (Caso, Aleatório, Repita)”.
Disponível em <http://www.youtube.com/watch?v=xBPkA7H3ZzI>. Acesso em: 15 abr. 2013.
106
AGORAÉASUAVEZ
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado
e que ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
107
AGORAÉASUAVEZ ÍNICIO
108
AGORAÉASUAVEZ
c) “repita”, duas vezes, justificar. Questão 9: RESPOSTA DISSERTATIVA
109
FINALIZANDO ÍNICIO
A partir de agora você já tem condições de desenvolver algoritmos cada vez mais complexos.
As estruturas de repetição vistas nesse tema, bem como os demais conteúdos trabalhados
nos temas anteriores, oferecem ferramentas importantes na solução de muitos problemas.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e concretização do aprendizado. Avalie
seu aprendizado e faça as atividades propostas!
REFERÊNCIAS
ALMEIDA, Carlos. Técnicas de Linguagem de Programação. Apostila, 2000.. Disponível
em: <http://www.esenviseu.net/recursos/Download/Tema_26/Apontamentos_TLP_10_Ano.
pdf>. Acesso em: 4 jun. 2013.
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene A. V. de. Fundamentos da
Programação de Computadores: algoritmos, pascal e C/C++. 1ª ed. São Paulo, Pearson,
2002.
110
REFERÊNCIAS
FERRARI, Fabrício; CECHINEL, Cristian. Introdução a Algoritmos e Programação.
Apostila, 2008. Disponível em: <http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/
Introducao_Algoritmos1.pdf>. Acesso em: 17 maio de 2013.
GLOSSÁRIO
Incremento: é uma operação comum que adiciona uma unidade a uma variável inteira no
seu valor atual.
Variável de controle: é quem determina quantas vezes o comando interno ao laço “para”
será executado.
111
GABARITO ÍNICIO
Tema 5
Laços de Repetição.
Questão 1
Resposta:
Fluxograma
INÍCIO
X, Y
X1
Y5
V X X+ 2
X<Y
YY+1
X, Y
FIM
Questão 2
Resposta: Alternativa D.
112
GABARITO
Questão 3
Resposta: Alternativa B.
Questão 4
Resposta: Alternativa E.
Questão 5
Resposta: Alternativa A.
Questão 6
Resposta:
ALGORITMO
i, n, fat inteiro
Leia(n)
fat 1
para i de 1 até n passo 1 faca
fat fat * i
fimpara
Escreva(fat)
FIMALGORITMO
Questão 7
Resposta:
ALGORITMO
idade, i, n inteiro
sexo caracter
n0
para i de 0 até 50 passo 1 faca
Escreva(“Digite o sexo M ou F e a idade”)
Leia(sexo, idade)
se (sexo = M) e (idade >=21)
então n n +1
fimse
fimpara
Escreva(“A quantidade de pessoas do sexo F e com 21 anos ou mais é ”, n)
FIMALGORITMO
113
GABARITO ÍNICIO
Questão 8
Resposta:
ALGORITMO
num, i, j, n, fat inteiro
Leia(n)
para i de 1 até n passo 1 faca
Leia(num)
fat 1
para j de 1 até num passo 1 faca
fat fat * j
fimpara
Escreva(num, fat)
fimpara
FIMALGORITMO
Questão 9
Resposta:
ALGORITMO
num, i, n, alt, num_maior, maior, num_menor, menor inteiro
114
GABARITO
Questão 10
Resposta:
ALGORITMO
opção inteiro
repita
Escreva(“1. Inserir nomes ”)
Escreva(“2. Retirar nomes ”)
Escreva(“3. Listar nomes ”)
Escreva(“4. Procurar nomes ”)
Escreva(“5. Salvar arquivo ”)
Escreva(“6. Carregar arquivo ”)
Escreva(“7. Finalizar ”)
Leia(opção)
ate ( (opção < 1) ou (opção > 7) )
FIMALGORITMO
115
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
118
Tema 06
Estruturas de Dados – Vetores
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
119
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Estruturas de Dados – Vetores
Até agora você manipulou dados num algoritmo usando variáveis e constantes simples.
O que isso significa? Que para cada dado a ser usado num algoritmo foi declarada uma
variável (ou uma constante) para armazenar a informação.
Essa ação é válida para problemas de pequeno porte, que envolvem poucas variáveis e
constantes. Mas como lidar com um problema que precise manipular dezenas, centenas,
milhares de variáveis? Declarar uma variável para cada dado seria muito trabalhoso e seu
controle no código do algoritmo ainda mais. Uma das maiores dificuldades em escrever
um grande programa de computador não se resume em apenas estabelecer suas metas,
os retornos que deverá apresentar, nem mesmo quais métodos serão usados para que os
objetivos sejam atingidos, mas sim em como os dados serão organizados internamente e
quais as estruturas de dados mais adequadas para serem utilizadas.
120
LEITURAOBRIGATÓRIA
dados e otimizar o seu uso. Um vetor unidimensional, ou um array, é uma das estruturas
de dados mais comuns a serem aplicadas no desenvolvimento de um algoritmo e pode
ser considerado uma sequência de posições de memória que é usada para armazenar um
conjunto de dados do mesmo tipo e usando o mesmo nome. Para acessar cada informação
armazenada, separadamente, usa-se um índice que é representado por uma variável inteira.
Essas informações são chamadas de elementos do vetor. Para que você compreenda
melhor o que são vetores, observe o programa apresentado na Tabela 6.1.
Tabela 6.1 – Programa que atribui valor para a variável “temperatura” e mostra seu conteúdo.
ALGORITMO
temperatura real
temperatura 22
temperatura 20
temperatura 18
escreva(“ Temperatura = ”, temperatura)
FIMALGORITMO
Não há duvidas de que a saída do programa será “Temperatura = 18”, certo? Como você já viu,
quando outros valores são atribuídos a uma variável, o valor que ela continha anteriormente
se perde. Como no exemplo, o primeiro valor contido na variável “temperatura” é 22, depois
esta passa a conter o valor 20, sobrescrevendo o valor inicial que é perdido. Por fim, ao
receber o valor 18, a variável “temperatura” perde o antigo valor 20. Observe que todos os
valores atribuídos à variável temperatura são do mesmo tipo de dado: real. Pode-se concluir
que variáveis simples são capazes de armazenar um valor de cada vez. No entanto, existem
situações em que é desejável armazenar um conjunto de dados do mesmo tipo numa mesma
variável. E isso é possível desde que a variável seja composta, como um vetor. Considere
a necessidade de armazenar a temperatura da água de um aquário, que foi obtida a cada
dez minutos durante vinte e quatro horas, resultando em 144 medições distintas. Num
caso desses é preferível usar um vetor para armazenar as temperaturas medidas em vez
de declarar 144 variáveis, pois todos os dados são do mesmo tipo e se referem ao mesmo
assunto. A Figura 6.1 representa como seria um vetor para esse fim.
121
LEITURAOBRIGATÓRIA ÍNICIO
A variável “temperatura” é um vetor que possui 144 posições. Para cada posição do vetor
foi atribuído um valor, ou seja, foi armazenado um elemento que poderá ser acessado
pela indicação da posição que ocupa no vetor. Por exemplo, o primeiro elemento do vetor
“temperatura” é indicado pelo nome da variável seguida pela posição entre colchetes; esta
posição pode ser apresentada por um número inteiro ou por uma variável inteira que tenha
a posição que se deseja acessar, como “temperatura[1]” ou temperatura[i]”, sendo i = 1. E
nesse caso o elemento armazenado nessa posição é o 18,0.
Agora analise o código que é apresentado na Tabela 6.2 e que mostra como declarar o vetor
temperatura e atribuir valores a ele.
ALGORITMO
temperatura vetor[1..144] de real // declaração de vetor
i inteiro // declaração do índice
para i de 1 ate 144 passo 1 faca
Leia(temperatura[i])
fimpara
FIMALGORITMO
122
LEITURAOBRIGATÓRIA
A variável “temperatura” é declarada como um vetor de 144 posições de dados do tipo real.
Isso significa que todos os elementos a serem armazenados nesse vetor serão do mesmo
tipo – real. Mas é importante enfatizar que os elementos desse conjunto podem ser de
qualquer tipo de dado. A variável “i” será usada como índice do vetor, ou seja, atuará como
o componente que indicará qual posição do vetor está sendo trabalhada no momento. Mas
observe que se trata de uma posição do vetor e não do conteúdo que está nessa posição.
Para ficar mais claro, volte à Figura 6.1. Considere que i = 3, então qual o valor está na
terceira posição do vetor temperatura? 19,7, correto? Então, temperatura[3] = 19,7; ou,
como “i = 3”, temperatura[i] = 19,7. Voltando ao código apresentado na Tabela 6.2, veja que
é usado o laço “para” de forma que se manipulem os elementos do vetor. O índice “i” é usado
como contador que inicia em “1” – primeira posição do vetor –, e termina em “144” – última
posição. O incremento é unitário e, dessa forma, percorrerá todas as posições do vetor, de
1 a 144. Por fim, cada elemento será armazenado na posição do vetor pela leitura do dado
por meio do teclado.
• Os elementos de um vetor que foi declarado, mas ao qual os dados ainda não foram
atribuídos, conterão valores aleatórios que já estavam na memória do computador.
• O índice do primeiro elemento do vetor pode ser “0” ou “1”, a depender da linguagem
de programação usada.
123
LEITURAOBRIGATÓRIA ÍNICIO
• A estrutura de repetição mais adequada para manipular dados de um vetor é o laço “para”.
Lembre-se de que o Livro-Texto da disciplina apresenta um conteúdo importante para
completar o seu aprendizado. Esse é o momento para você consolidar o seu aprendizado
sobre vetores. Aproveite seu tempo e dedique-se à sua instrução!
LINKSIMPORTANTES
Quer saber mais sobre o assunto?
Então:
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Acesse o conjunto de slides que versam sobre vetores, de uma aula (“Introdução à ciência
da computação”) apresentada pelo prof. Ricardo J. G. B. Campello.
Disponível em: <http://wiki.icmc.usp.br/images/5/52/Arranjos.pdf>. Acesso em: 30 jun. 2013.
124
LEITURAOBRIGATÓRIA
Assista ao vídeo: “VisuALG - Aula 07 (Vetores)”.
Videoaula que explica a manipulação de vetores no VisuALG.
Disponível em: <http://www.youtube.com/watch?v=DE0GtQJ9EFg>. Acesso em: 15 abr. 2013.
AGORAÉASUAVEZ
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado
e que ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
125
AGORAÉASUAVEZ ÍNICIO
a) 12, 35, 44, 67, 92. Classifique cada uma das seguintes
b) 6, 7, 8, 9, 10. afirmações em “V” (se verdadeira) ou
c) 17, 18, 14, 23, 21. “F” (se falsa) e escolha a alternativa que
corresponde à sequência correta de
d) 17, 23, 14, 28, 21.
indicações.
e) 12, 23, 9, 28, 16.
I – Os elementos de um vetor são sempre
do mesmo tipo de dado.
Questão 3: INDIQUE A ALTERNATIVA CORRETA
II – Os elementos de um vetor são sempre
armazenados em posições consecutivas
Considere o fragmento de código a seguir
de memória.
e indique a alternativa incorreta a respeito
dele. III – A estrutura de repetição mais
adequada para manipular dados de um
para i de 1 até N faca vetor é o laço “para”.
temp x[i]
x[i] y[i] a) V, F, V.
y[i] temp
fimpara b) V, F, F.
c) F, V, F.
a) N é a dimensão dos vetores x e y.
d) V, V, F.
b) temp é uma variável auxiliar que guarda
um valor temporariamente. e) V, V, V.
126
AGORAÉASUAVEZ
Questão 5: INDIQUE A ALTERNATIVA CORRETA Questão 8: RESPOSTA DISSERTATIVA
127
FINALIZANDO ÍNICIO
Neste tema, você pôde aprender que vetores são estruturas de dados bastante comuns em
desenvolvimento de programas computacionais porque podem ser usados para resolver
uma grande parcela de representação de dados.
Mas é importante lembrar que um vetor é uma coleção de dados do mesmo tipo que são
armazenados sequencialmente na memória do computador e referenciados pelo mesmo
nome, usando-se um índice para buscar um elemento específico.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e concretização do aprendizado. Avalie
seu aprendizado e faça as atividades propostas!
REFERÊNCIAS
ALMEIDA, Carlos. Técnicas de Linguagem de Programação. Apostila, 2000. Disponível
em: <http://www.esenviseu.net/recursos/Download/Tema_26/Apontamentos_TLP_10_Ano.
pdf>. Acesso em: 4 jun. 2013.
128
GLOSSÁRIO
Array: um array unidimensional é o mesmo que um vetor unidimensional, ou seja, uma
sequência de posições de memória que são usadas para armazenar um conjunto de
informações do mesmo tipo e com mesmo nome de variável.
Posição: lugar ocupado por uma coisa ou onde se colocam uma pessoa ou coisa.
129
GABARITO ÍNICIO
Tema 6
Estruturas de Dados – Vetores
Questão 1
Resposta:
Questão 2
Resposta: Alternativa D.
Questão 3
Resposta: Alternativa C.
Questão 4
Resposta: Alternativa E.
Questão 5
Resposta: Alternativa B.
130
GABARITO
Questão 6
Resposta:
ALGORITMO
x vetor[1..10] de inteiro
i, max inteiro
para i de 1 ate 10 passo 1 faca
Leia(x[i])
fimpara
max x[1]
para i de 2 ate 10 passo 1 faca
se (x[i] > max)
então Max x[i]
fimse
fimpara
escreva(“O maior número é”, max)
FIMALGORITMO
Questão 7
Resposta:
ALGORITMO
x vetor[1..10] de inteiro
i, min inteiro
para i de 1 ate 10 passo 1 faca
Leia(x[i])
fimpara
min x[1]
para i de 2 ate 10 passo 1 faca
se (x[i] < min)
então Min x[i]
fimse
fimpara
escreva(“O menor número é”, min)
FIMALGORITMO
131
GABARITO ÍNICIO
Questão 8
Resposta:
ALGORITMO
x vetor[1..10] de inteiro
i, numero inteiro
para i de 1 ate 10 passo 1 faca
Leia(x[i])
fimpara
Escreva(“Digite o número a ser procurado”)
Leia(numero)
i1
enquanto (x[i] <> numero) faca
ii+1
fimenquanto
se (i < 10)
então escreva(“O número procurado está na posição”, i)
senão escreva(“O número procurado não está no conjunto”)
fimse
FIMALGORITMO
Questão 9
Resposta:
x y
x[1] 7 y[1] 35
x[2] 8 y[2] 40
x[3] 12 y[3] 510
x[4] 8 y[4] 40
x[5] 14 y[5] 520
132
GABARITO
Questão 10
Resposta:
x y
x[1] 3 y[1] 18
x[2] 6 y[2] 36
x[3] 7 y[3] 42
x[4] 8 y[4] 48
x[5] 13 y[5] 78
133
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
136
Tema 07
Estruturas de dados – Matrizes
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
137
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
LEITURAOBRIGATÓRIA
Estruturas de dados – Matrizes
Você estudou até o momento os arrays de uma única dimensão, ou seja, vetores que
são graficamente representados por uma linha ou uma coluna. Mas também é possível
trabalhar com arrays de duas ou mais dimensões. O array bidimensional, ou matriz, é
muito conhecido e utilizado em desenvolvimento de algoritmos, sendo formado por linhas e
colunas, como numa tabela.
138
LEITURAOBRIGATÓRIA
Figura 7.1 – Matriz quadrada a7x7, com sete linhas e sete colunas.
colunas 1 2 3 4 5 6 7
linha 1 5 9 6 4 3 8 7
linha 2 4 1 3 5 6 8 7
linha 3 3 1 4 5 6 8 7
linha 4 1 3 4 5 6 8 7
linha 5 1 3 4 5 6 8 7
linha 6 1 3 4 5 2 7 8
linha 7 1 3 4 5 6 7 8
Da mesma forma como ocorre com os vetores, cada elemento de uma matriz é acessado
por meio da variável declarada como matriz seguida da posição que ocupa no conjunto.
A matriz apresentada na Figura 7.1 foi declarada como “a” e cada elemento foi atribuído
em uma posição específica, que é identificada pela linha e pela coluna da matriz. Essa
posição é obtida por meio de índices que auxiliam a manipular os dados da variável. Por
exemplo, o elemento a[1,2] é o valor “9”, destacado em vermelho na representação gráfica.
O primeiro índice indica a linha e o segundo, a coluna; e essa ordem nunca se altera, ou
seja, a linha sempre deve ser indicada em primeiro lugar, e depois se indica a coluna da
matriz para manipular algum dado. Você consegue identificar a posição ocupada pelo valor
“2” em destaque na matriz da Figura 7.1? Está na linha “6” e na coluna “5”, então a sintaxe
correta para manipular esse dado é a[6,5] = 2.
Observe o código apresentado na Tabela 7.1 que mostra como declarar matriz “a” e como
atribuir seus valores.
139
LEITURAOBRIGATÓRIA ÍNICIO
ALGORITMO
a vetor[1..7, 1..7] de inteiro // declaração de matriz
i,j inteiro // declaração dos índices
para i de 1 ate 7 passo 1 faca // variação da linha da matriz
para j de 1 ate 7 passo 1 faca // variação da coluna da matriz
Escreva(“Digite o elemento da matriz na posição”, i, j)
Leia(a[i,j])
fimpara
fimpara
FIMALGORITMO
A variável “a” é declarada como um vetor bidimensional (matriz) com 49 posições de dados do
tipo inteiro. Essa quantidade de elementos é obtida pela multiplicação da dimensão da linha
pela dimensão da coluna. Na declaração, assim como na manipulação dos dados na matriz,
primeiro é indicada a dimensão da linha e depois, a da coluna. Considere que “m” seja o
número de elementos nas linhas e “n” seja a dimensão da coluna. Nesse exemplo “m=n=7”,
uma matriz quadrada, com 7*7 = 49 posições. Então, tem-se que “a” é um vetor[1..m, 1..n]
de inteiros. Outro aspecto bastante importante que você deve observar é com relação à
variação dos índices da matriz. Na Tabela 7.1, o laço mais externo é a variação do índice “i”,
que significa a linha da matriz que está sendo manipulada, e o laço mais interno varia “j”,
que é o índice que controla as colunas. Como você já estudou, ao executar uma estrutura
de repetição, todos os seus comandos internos são efetuados para que então a variável de
controle seja atualizada e verificada para a condição de parada. Como o primeiro laço é “i”,
isso significa que, quando “i=1”, o comando interno a esse laço “para j” será executado até
finalizar, para então a variável de controle “i” ser atualizada novamente. Ou seja, quando
“i=1”, a variável de controle “j” assumirá os valores 1, 2, 3, 4, 5, 6 e 7, lendo os valores de
a[1,1], a[1,2], a[1,3], a[1,4], a[1,5], a[1,6] e a[1,7]. Observe que esses são os elementos que
estão na primeira linha da matriz. Fixou-se a linha e variaram-se as colunas. Após finalizar
a variação das colunas, atualiza-se o índice “i =2” e novamente há a variação das colunas,
obtendo-se então a[2,1], a[2,2], a[2,3], a[2,4], a[2,5], a[2,6] e a[2,7]. E assim sucessivamente
até a última linha da matriz (Figura 7.2).
140
LEITURAOBRIGATÓRIA
Figura 7.2 – Matriz quadrada a7x7 – Fixa linha (i) e varia coluna (j)
j= 1 2 3 4 5 6 7
i=1 5 9 6 4 3 8 7
i=2 4 1 3 5 6 8 7
i=3 3 1 4 5 6 8 7
i=4 1 3 4 5 6 8 7
i=5 1 3 4 5 6 8 7
i=6 1 3 4 5 2 7 8
i=7 1 3 4 5 6 7 8
Mas se, em vez de fixar a linha para então variar a coluna, fosse feito o contrário? Seria
válido? Veja na Tabela 7.2 como ficaria o código.
Tabela 7.2 – Programa que atribui valores para a matriz “a” coluna a coluna.
ALGORITMO
a vetor[1..7, 1..7] de inteiro // declaração de matriz
i,j inteiro // declaração dos índices
para j de 1 ate 7 passo 1 faca // variação da coluna da matriz
para i de 1 ate 7 passo 1 faca // variação da linha da matriz
Escreva(“Digite o elemento da matriz na posição”, i, j)
Leia(a[i,j])
fimpara
fimpara
FIMALGORITMO
141
LEITURAOBRIGATÓRIA ÍNICIO
Veja que a única mudança foi colocar o índice da coluna da matriz no laço mais externo e o
da linha no mais interno. Isso fixará a coluna “j = 1” enquanto as linhas serão variadas “i = 1,
2, 3, 4, 5, 6 e 7”, lendo-se agora os valores da primeira coluna: a[1,1], a[2,1], a[3,1], a[4,1],
a[5,1], a[6,1] e a[7,1]. E assim sucessivamente até a última coluna da matriz (Figura 7.3).
Figura 7.3 – Matriz quadrada a7x7 – Fixa coluna (j) e varia linha (i)
j= 1 2 3 4 5 6 7
i=1 5 9 6 4 3 8 7
i=2 4 1 3 5 6 8 7
i=3 3 1 4 5 6 8 7
i=4 1 3 4 5 6 8 7
i=5 1 3 4 5 6 8 7
i=6 1 3 4 5 2 7 8
i=7 1 3 4 5 6 7 8
142
LEITURAOBRIGATÓRIA
elementos na linha de A deve ser igual à quantidade de elementos na coluna de B. E, para
essa operação, é fundamental observar a correta variação dos índices das matrizes para
que os elementos certos sejam manipulados. Nesse exemplo, a matriz resultante (nesse
caso, matriz C) terá dimensão mxv, isto é, “m” linhas e “v” colunas.
• Arrays são muito parecidos com variáveis simples, exceto pela possibilidade que têm
de poder armazenar múltiplos elementos do mesmo tipo.
• Os elementos de uma matriz que foi declarada, mas à qual os dados ainda não foram
atribuídos, conterão valores aleatórios, que já estavam na memória do computador.
• Da mesma forma como ocorre com um array unidimensional, ao declarar uma variável
como uma matriz de X elementos de determinado tipo de dado, o compilador reservará
espaço em memória para o tipo de dado declarado. Ou seja, se forem X dados reais,
haverá necessidade de mais espaço se comparados com X dados inteiros. Por isso
é fundamental declarar corretamente o tipo de dado e a quantidade de elementos de
uma matriz. Volte ao tema 3 para ver o espaço em memória de que cada tipo de dado
necessita.
• A estrutura de repetição mais adequada para manipular dados de uma matriz é o uso
de laços “para” aninhados.
143
LINKSIMPORTANTES ÍNICIO
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Leia o bom tutorial sobre matrizes e strings desenvolvido pelos professores Anne Carolyne
Cunha Martins, Eduardo Aranha e Julliane Cavalcanti.
Disponível em: <http://www.metropoledigital.ufrn.br/aulas/disciplinas/prog_est/aula_06.html>.
Acesso em: 1 jul. 2013.
Leia o bom tutorial ”Estruturas de dados homogêneas – vetores e matrizes”, desenvolvido pelos
professores Nélio Alessandro Azevedo Cacho e Keivilany Janielle de Lima Coelho.
Disponível em: <http://www.metropoledigital.ufrn.br/aulas/disciplinas/logica/aula_11.html>. Acesso em: 1 jul.
2013.
VÍDEOS:
Assista ao vídeo: “VisuALG - Aula 08 (Matrizes)”.
Trata-se de videoaula que explica a manipulação de matrizes no VisuALG.
Disponível em <http://www.youtube.com/watch?v=gmtZSoyy0UI>. Acesso em: 15 abr. 2013.
144
AGORAÉASUAVEZ
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado
e que ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
145
AGORAÉASUAVEZ ÍNICIO
Questão 3: INDIQUE A ALTERNATIVA CORRETA matrizes Amxn e Bzxv, “m” deve ser igual a “z”.
III – É possível que os elementos em
Considere o fragmento de código a seguir uma matriz que foi declarada, mas à qual
e escolha a alternativa correta. os dados ainda não foram atribuídos,
contenham valores aleatórios, que já
para i de 1 até 3 faca estavam na memória do computador.
A[i,2] B[i,3] a) V, F, V.
fimpara b) V, F, F.
(veja figura) c) F, V, F.
d) F, F, V.
a) A coluna 2 da matriz A receberá os e) V, V, V.
elementos da coluna 3 de B.
b) A linha 2 da matriz A receberá os Questão 5: INDIQUE A ALTERNATIVA CORRETA
elementos da coluna 3 de B.
c) A linha 2 da matriz A receberá os Analise o fragmento de código a seguir e
elementos da linha 3 de B. indique a alternativa que apresenta a saída
d) A coluna 2 da matriz A receberá os correta.
elementos da linha 3 de B. para i de 1 até 3 faca
e) A coluna 2 da matriz A receberá os para j de 1 até 3 faca
valores 18,6; 14,7 e 10,5. C[i,j] B[i,j] + A[j,i]
fimpara
Questão 4: INDIQUE A ALTERNATIVA CORRETA fimpara
(veja figura)
Classifique cada uma das seguintes
afirmações em “V” (se verdadeira) ou
“F” (se falsa) e escolha a alternativa que a)
C
corresponde à sequência correta de
2 8 14
indicações.
4 10 16
I – Os elementos de uma matriz podem
ser de tipos de dados distintos. 6 12 18
146
AGORAÉASUAVEZ
b) C cinco fornecedores, o gerente encontrou
a tabela de preços apresentada a seguir.
2 6 10
Desenvolva um algoritmo que receba os
6 10 14 dados do orçamento e que retorne quanto
10 14 18 ficará a compra em cada fornecedor. Dica:
armazene as quantidades de cada produto
e os valores finais da compra em vetores.
c) C
Fornecedores
2 8 14
6 10 14 Produtos 1 2 3 4 5
10 12 18
P1 20 15 30 40 68
P2 35 18 35 35 60
d) C
2 6 10 P3 40 12 27 70 50
6 10 14
10 12 18 Questão 7: RESPOSTA DISSERTATIVA
xi = [1+(1/i)]i e yi = (i-1)/i
Questão 6: RESPOSTA DISSERTATIVA O algoritmo deverá mostrar os resultados
de xi e yi para cada i e a saída final da
O gerente de uma loja de produtos de matriz A . Use dimensão 5. Dica: o
construção civil deseja fazer vários exercício deve ser desenvolvido com
utilização de operações entre matrizes e
orçamentos a fim de averiguar o custo de
vetores. Considere x um vetor linha e y um
uma compra de materiais para abastecer
vetor coluna (x1,5 e y5,1).
o estoque. Os três produtos P1, P2 e P3
são necessários nas quantidades Q1, Q2
e Q3, respectivamente. Ao pesquisar em
147
AGORAÉASUAVEZ ÍNICIO
A
12,3 15,3 19,9 18,6
10,9 12,6 18,6 14,7
11,2 13,0 19,8 10,5
148
FINALIZANDO
Neste tema, você pôde aprender que uma matriz pode ser definida como um conjunto de
variáveis do mesmo tipo, identificadas pelo mesmo nome. Essas variáveis são diferenciadas
por meio da especificação de suas posições dentro dessa estrutura.
Você viu, ainda, que as matrizes bidimensionais são usadas para armazenar dados de forma
a tabulá-los em linha e coluna, sendo fundamentais para modular problemas bidimensionais.
Ou seja, as operações matemáticas efetuadas com matrizes são facilmente implementadas
num algoritmo ao usar esse tipo de estrutura de dados. Além disso, embora apenas um tipo
de dado possa ser armazenado por vez numa matriz, é possível declarar outras matrizes,
de diferentes tipos de dados, conforme a necessidade do problema sendo tratado.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e concretização do aprendizado. Avalie
seu aprendizado e faça as atividades propostas!
149
REFERÊNCIAS ÍNICIO
150
GLOSSÁRIO
Bidimensional: relativo a duas dimensões.
Homogêneo: aquilo que é da mesma natureza que outro, da mesma espécie, da mesma
categoria.
151
GABARITO ÍNICIO
Tema 7
Estruturas de dados – Matrizes
Questão 1
Resposta:
ALGORITMO
A vetor[1..50] de real
aux real
i inteiro
para i de 1 ate 50 faca // leitura do vetor A
Escreva(“Digite o elemento do vetor A”, i)
Leia(A[i])
fimpara
aux A[1]
para i de 1 ate 49 faca // vetor A com elementos deslocados
A[i] A[i+1]
fimpara
A[50] aux;
escreva(“Vetor A com elementos deslocados ”)
para i de 1 até A faca // impressão do conteúdo da matriz na tela
escreva(A[i])
fimpara
FIMALGORITMO
Questão 2
Resposta: Alternativa C.
Questão 3
Resposta: Alternativa A.
152
GABARITO
Questão 4
Resposta: Alternativa D.
Questão 5
Resposta: Alternativa B.
Questão 6
Resposta:
ALGORITMO
i, j inteiro
qtde vetor[1..3] de real
valor vetor[1..5] de real
precos vetor[1..3, 1..5] de real
153
GABARITO ÍNICIO
Questão 7
Resposta:
ALGORITMO
X, Y vetor[1..5] de real
A vetor [1..5,1..5] de real
I,J,K inteiro
Questão 8
Resposta:
ALGORITMO
x vetor[1..50] de real
y vetor[1..49, 1..2] de real
i inteiro
para i de 1 ate 50 faca // leitura do vetor x
Escreva(“Digite o elemento do vetor x”, i)
Leia(x[i])
fimpara
para i de 1 ate 49 faca // calculo da matriz y
y[i,1] x[i+1] – x[i]
y[i,2] x[i+1] + x[i]
fimpara
escreva(“Matriz Y ”)
para i de 1 até 49 faca // impressão do conteúdo da matriz na tela
escreva(y[i,1], “ “, y[i,2])
fimpara
FIMALGORITMO
154
GABARITO
Questão 9
Resposta:
B = AT
12,3 10,9 11,2
15,3 12,6 13,0
19,9 18,6 19,8
18,6 14,7 10,5
Questão 10
Resposta:
C
0 2 4
-2 0 2
-4 -2 0
155
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES
LEITURAOBRIGATÓRIA
AGORAÉASUAVEZ
LINKSIMPORTANTES GLOSSÁRIO
REFERÊNCIAS
FINALIZANDO
158
Tema 08
Estruturas de Dados Compostas.
ÍNICIO
Caro(a) aluno(a).
Este Caderno de Atividades foi elaborado com base no livro Algoritmos e Programação de
Computadores, dos autores Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de M.
Engelbrecht e Francisco Bianchi, Editora Campus, 2012. Livro-Texto 633.
ROTEIRO DE ESTUDO:
CONTEÚDOSEHABILIDADES
Conteúdos
159
CONTEÚDOSEHABILIDADES ÍNICIO
Habilidades
• Quais são os passos para declarar uma variável registro num programa?
LEITURAOBRIGATÓRIA
Estruturas de Dados Compostas.
Até agora você estudou sobre como variáveis comuns podem armazenar conjuntos de
informações em vetores e/ou matrizes desde que os elementos desses conjuntos sejam
do mesmo tipo. Esses dois tipos de dados podem ser suficientes para resolver uma grande
variedade de situações. Mas em muitos casos é necessário trabalhar com um conjunto de
dados de tipos distintos. Por exemplo: suponha que você necessite armazenar os dados
de um livro. Certamente precisará armazenar o nome do livro (um conjunto de caracter), o
preço (um valor real) e o número de páginas que possui (um número inteiro). Ao considerar
que se deseje armazenar essas informações de três desses livros, então é possível seguir
duas abordagens:
• Declarar vetores individuais, sendo o primeiro para armazenar os nomes dos livros,
outro para os preços e o terceiro para o número de páginas.
160
LEITURAOBRIGATÓRIA
Examine as duas situações indicadas. Por motivos de conveniência, considere que os nomes
dos livros sejam um único caracter. Na Tabela 8.1 é apresentado o código para esse caso.
Tabela 8.1 – Programa que declara matrizes e armazena informações de três livros.
ALGORITMO
nome vetor[1..3] de caracter // nome do livro
preco vetor[1..3] de real // preço do livro
paginas vetor[1..3] de inteiro // páginas do livro
i inteiro // declaração do índice
Não há dúvidas de que essa opção de armazenamento das informações dos livros permite
guardar corretamente os nomes, os preços e as páginas que possuem. Mas, como você
deve ter percebido, é uma abordagem que não deixa claro o fato de se estar lidando com
um grupo de características relacionadas a uma única entidade - o livro. Nesse exemplo, é
evidente que com o programa se tornará cada vez mais difícil trabalhar com as estruturas
e entender sua lógica conforme aumentar o número de características dos livros a serem
armazenadas. Por exemplo, pode ser necessário usar um número grande de vetores se
houver desejo de guardar o número da editora, a data de publicação do livro, o ISBN, entre
outros. Para resolver esse problema, poderá ser usada uma estrutura de dados que agrupa
dados de tipos distintos, chamada de registro.
Essa estrutura contém uma série de tipos de dados agrupados que se referem a um
determinado objeto, sendo que os dados podem ou não ser do mesmo tipo. Mas será que
existe uma estrutura de dados do tipo registro para cada situação que se deseja tratar?
No VisuALG, se for necessário declarar um vetor ou matriz, indica-se o nome da variável
161
LEITURAOBRIGATÓRIA ÍNICIO
seguido da palavra “vetor” e entre colchetes a dimensão do array. Nesse caso, a palavra
“vetor” é reservada, ou seja, é uma instrução da linguagem usada e não poderá ser indicada
como uma variável: vetor vetor[1..10], por exemplo, pois causará um erro na compilação
do código. Observe que em cada linguagem de programação as palavras reservadas se
alteram, e é muito importante conhecê-las para não cometer equívocos no desenvolvimento
de um código. Voltando à questão do array, verifica-se que as linguagens de programação
apresentam um “tipo de estrutura” como vetor ou matriz, necessitando apenas definir o tipo
de dados que será agrupado na estrutura. Ou seja, a variável que indicará os elementos
do vetor ou matriz é declarada diretamente no programa ao usar a “palavra reservada” que
indicará a estrutura de dados desejada. Quando se trata de uma estrutura de dados do tipo
registro, o processo é diferente porque um registro não tem uma estrutura definida para
cada situação, o que permite ao desenvolvedor definir o tipo de registro mais adequado
para o programa que está desenvolvendo.
Com base no que estudou até agora sobre registro, ao definir um tipo de dado registro,
contendo os atributos adequados ao objeto que você está tratando no algoritmo, as posições
de memória para armazenar as informações já foram reservadas? Veja que até agora foi
falado de “tipo de dado” e não de “variável”. Isso significa que, por mais que um registro
tenha sido declarado no programa, se não for definida pelo menos uma variável do tipo
registro, não haverá como armazenar informações na estrutura, pois não foi estabelecido
um “nome” para um espaço da memória que possa armazenar os tipos definidos de dados.
Piva et al. (2012, p. 436) diz que as definições de tipos não ocupam espaço em memória e
servem apenas para que o compilador saiba não só quais são os atributos que compõem
cada registro, mas também o tipo de cada um, ou seja, a forma da estrutura.
Então, quando decidir usar um registro em algum programa, você deverá efetuar dois passos:
primeiramente, definir e atribuir um nome para a estrutura do tipo registro; em segundo lugar,
declarar a variável do tipo registro. A variável do tipo registro poderá ser, inclusive, um vetor.
162
LEITURAOBRIGATÓRIA
do livro, aquela situação-problema indicada no início desse estudo.
Para ser possível manipular cada dado da variável “livro1”, por exemplo, é preciso indicar
em qual atributo o elemento está alocado. Isso é feito pelo nome da variável seguido de
ponto “.” e de nome do atributo. Logo, se houver necessidade de saber o número de páginas
do livro1, deve-se usar “livro1.pagina”, tanto em Pascal quanto em C. Na Tabela 8.3 é
apresentado o pseudocódigo com utilização de uma variável do tipo registro para manipular
as informações dos livros.
163
LEITURAOBRIGATÓRIA ÍNICIO
Tabela 8.3 – Programa que declara registro e armazena informações de três livros.
ALGORITMO
//declaração do tipo de dado
tipo
estrutura_livro = registro
nome : caracter
preco : real
pagina : inteiro
fimregistro
Agora você já tem um bom referencial sobre o que são os registros. Lembre-se de que
a leitura do Livro-Texto da disciplina é fundamental para consolidar o seu aprendizado.
Aproveite bem o seu tempo de estudo e se dedique à sua instrução!
164
LINKSIMPORTANTES
Quer saber mais sobre o assunto?
Então:
SITES:
Leia o material complementar do Livro-Texto da disciplina de Construção de Algoritmos.
Disponível em: <http://www.elsevier.com.br/material_complementar_PLT_2013/>. Acesso em: 17
maio 2013.
Acesse e leia o conjunto de slides sobre uma aula de registros da disciplina de Linguagem
de Programação, desenvolvida pelo prof. Bruno B. Boniati da Universidade Federal de Santa
Maria.
Disponível em: <http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/slides/aula8_
registros.pdf>. Acesso em: 2 jul. 2013.
Acesse e leia conjunto de slides sobre uma aula de registros e estruturas da disciplina Algo-
ritmos e Programação de Computadores, desenvolvida pela professora Wanessa Machado
do Amaral da FEEC - Unicamp.
Disponível em: <http://www.dca.fee.unicamp.br/~wmamaral/mc102/files/aula23/aula23Registros_
Enum.pdf>. Acesso em: 2 jul. 2013.
Acesse a página do curso Lógica de Programação na Prática. Apresenta-se nela uma breve
explicação sobre o uso de registros, além de se oferecer um problema com o código desen-
volvido para resolvê-lo.
Disponível em: <http://www.activeinfo.com.br/curso_programacao/registros.html>. Acesso em: 2 jul.
2013.
VÍDEOS:
Assista o vídeo: “Aula 35 - STRUCT Parte 1 - Programação Descomplicada”.
Trata-se de videoaula que explica o uso de registro ou estrutura na linguagem C.
Disponível em: <https://www.youtube.com/watch?v=MatsUCe5uZw>. Acesso em: 2 jul de 2013.
165
AGORAÉASUAVEZ ÍNICIO
Instruções:
A seguir são apresentadas questões relativas ao conteúdo abordado
e que ajudarão você a se preparar para a avaliação e a consolidar
o seu aprendizado. Atente-se aos enunciados para executar o que
foi solicitado e sempre que for necessário retorne ao material de
apoio para responder adequadamente. Para resolver as questões de
desenvolvimento de algoritmos, utilize, se possível, o laboratório de
sua unidade. Dessa forma, há possibilidade de verificar o desempenho
de sua solução algorítmica por meio do ambiente VisuALG.
166
AGORAÉASUAVEZ
tipo II – Cada informação distinta de um
circulo = registro registro é considerada um atributo ou
diametro : real campo.
area : real
fimregistro III – O atributo pode ser definido como
qualquer tipo de dado que a linguagem
quadrado = registro utiliza ou como outra estrutura de dados:
lado : real
vetor, matriz ou mesmo outro registro.
area : real
circulo_inscrito : circulo a) V, F, V.
circulo_circunscrito : circulo
fimregistro b) V, F, F.
c) F, V, F.
a) São declaradas duas estruturas do tipo
d) F, F, V.
registro.
b) O registro “círculo” possui dois atributos. e) V, V, V.
167
AGORAÉASUAVEZ ÍNICIO
168
AGORAÉASUAVEZ
mes 1
fimse
se func[i].venda_dez > maior
então
maior func[i].venda_dez
pos_maior i
mes 2
fimse
se func[i].venda_jan > maior
então
maior func[i].venda_jan
pos_maior i
mes 3
fimse
fimpara
FINALIZANDO
Neste tema, você viu que o uso de registros é muito útil, especialmente para trabalhar com
distintos tipos de dados que se refiram a um mesmo objeto, como o cadastro de clientes,
por exemplo.
O Livro-Texto da disciplina (PIVA JR. et al., 2012) apresenta um rico conteúdo sobre o
assunto, sendo importante referência para o estudo e a concretização do aprendizado.
Avalie seu aprendizado e faça as atividades propostas!
169
REFERÊNCIAS ÍNICIO
KANETKAR, Yashavant P. Let us C. Nova Deli, Infinity Science Press LLC, 2008
170
GLOSSÁRIO
Atributo: que é próprio de alguém ou de algo. Característica.
Coleção: é um grupo de variáveis que têm algum significado compartilhado com o problema
sendo resolvido e necessitam ser operadas em conjunto, mas de forma controlada.
Sintaxe: refere-se às regras que regem a composição dos textos em uma linguagem formal
que constitui as fórmulas bem formadas de um sistema lógico.
171
GABARITO ÍNICIO
Tema 8
Estruturas de Dados Compostas.
Questão 1
Resposta:
VAR
alunos: vetor[1..100] de aluno
disciplinas: vetor[1..6] de disciplina
Questão 2
Resposta: Alternativa D.
Questão 3
Resposta: Alternativa E.
Questão 4
Resposta: Alternativa E.
Questão 5
Resposta: Alternativa A.
172
GABARITO
Questão 6
Resposta:
ALGORITMO
quadrado = registro
lado : real
area : real
cinscrito : circulo
ccircunscrito : circulo
fimregistro
173
GABARITO ÍNICIO
Questão 7
Resposta:
// declaração da estrutura
tipo horario = registro
hora_ini, min_ini, hora_fim, min_fim: REAL
fimregistro
REPITA
ESCREVA(‘Digite o minuto inicial do jogo: ‘)
LEIA(tempo.min_ini)
ATE (tempo.min_ini <= 59) E (tempo.min_ini >= 0)
REPITA
ESCREVA(‘Digite a hora final do jogo: ‘)
LEIA(tempo.hora_fim)
ATE (tempo.hora_fim <= 24) E (tempo.hora_fim > 0)
REPITA
ESCREVA(‘Digite o minuto final do jogo: ‘)
LEIA(tempo.min_fim)
ATE (tempo.min_fim <= 59) E (tempo.min_fim > 0)
174
GABARITO
FIMSE
Questão 8
Resposta:
// declaração da estrutura
Tipo p = registro
idade, filhos: inteiro
salario: real
sexo: caracter
Fimregistro
175
GABARITO ÍNICIO
SE (cont2 > 0)
ENTÃO media_sa2 soma_sa2 / cont2
SENÃO media_sa20
FIMSE
176
GABARITO
ENTÃO
media_sa1soma_sa1 / cont1
media_fi soma_fi / cont1
SENÃO
media_sa1 0
media_fi0
FIMSE
ESCREVA(“A média de salários da população ‚: “,media_sa)
ESCREVA(“A média de filhos da população ‚: “,media_fi)
ESCREVA(“O maior sal rio da população ‚: “,maior_sa)
ESCREVA(“A menor idade da população ‚: “,menor_id)
FIMALGORITMO
Questão 9
Resposta:
// declaração da estrutura
tipo cadastro = registro
nome, ender : vetor[1..35] de caracter
fone : vetor[1..20] de caracter
fimregistro
i0
escreva (“Cadastro de Clientes”)
repita
ii+1
escreva (“Nome: “)
leia (cliente[i].nome)
escreva (“Endereco: “)
177
GABARITO ÍNICIO
leia (cliente[i].ender)
escreva (“Telefone: “)
leia (cliente[i].fone)
escreva (“Novo Cliente (S/N)? “)
leia (resp)
se resp in [“s”,”S”,”n”,”N”]
então teste true
senão
repita
escreva (“Resposta Incorreta! Digite Novamente: “)
leia (resp)
até (resp =“s”) ou (resp =“S”) ou (resp =“n”) ou (resp =“N”)
Fimse
até (resp = “n”) ou (resp = “N”) ou (i = 50)
escreva(“Clientes cadastrados...”)
escreva(“Existe(m) “, i, “ Cliente(s) Cadastrado(s):”)
para x = 1 até i faça
escreva (“Nome: “, cliente[x].nome)
escreva (“Endereco: “, cliente[x].ender)
escreva (“Telefone: “, cliente[x].fone)
fimpara
FIMALGORITMO
178
GABARITO
Questão 10
Resposta: Para um conjunto de 15 registros, verifica-se se alguma das vendas dos meses
de novembro, dezembro e janeiro é maior que um determinado valor armazenado numa
variável “maior”. Se a venda de algum desses meses for maior, então guarda-se o valor
da venda na variável “maior”, guarda-se qual o registro foi maior e guarda-se em qual mês
houve a maior venda. Ao final da verificação de todos os registros, terão sido guardadas as
seguintes informações:
179