Вы находитесь на странице: 1из 180

CLIQUEAQUIPARA

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

FICHA TÉCNICA Revisão Textual


Equipe de Gestão Editorial Alexia Galvão Alves
Regina Cláudia Fiorin Giovana Valente Ferreira
Ana Cristina Ferreira Ingrid Favoretto
João Henrique Canella Fiório Julio Camillo
Priscilla Ramos Capello Luana Mercúrio

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

Reitora Pró-Reitor de Extensão


Leocádia Aglaé Petry Leme Ivo Arcangêlo Vedrúsculo Busato

Pró-Reitor Administrativo Pró-Reitora de Pesquisa e PósGraduação


Antonio Fonseca de Carvalho Luciana Paes de Andrade

Realização:

Diretoria de Planejamento de EAD


José Manuel Moran
Barbara Campos

Diretoria de Desenvolvimento de EAD


Thais Costa de Sousa

Gerência de Design Educacional


Rodolfo Pinelli
Gabriel Araújo

Como citar esse documento:


DOBGENSKI, Jeanne. Construção de
Algoritmos. Valinhos, p. 1-180, 2013.
Disponível em: <www.anhanguera.edu.br/
cead>. Acesso em: 17 julho 2013

© 2013 Anhanguera Educacional


Proibida a reprodução final ou parcial por qualquer meio de impressão, em forma idêntica, resumida ou modificada em língua por-
tuguesa ou qualquer outro idioma.
seções
S e ç õ e s
CONTEÚDOSEHABILIDADES

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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• A definição de algoritmos.

• Conceitos de lógica e lógica de programação.

• O que são dados, variáveis, comandos e programas.

7
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Quais são as principais propriedades de um algoritmo?

• Como construir algoritmos?

• Por que a lógica é fundamental na construção de algoritmos?

• Qual a relação entre dado e variável? São sempre a mesma coisa?

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).

• Finitude: um algoritmo deve sempre terminar após um número finito de etapas.

• Definição: cada passo de um algoritmo deve ser definido com precisão; as ações a
serem executadas deverão ser especificadas rigorosamente e sem ambiguidades para
cada caso.

• Entrada: valores que são dados ao algoritmo antes que ele inicie. Essas entradas são
tomadas a partir de conjuntos de objetos especificados.

• Saída: os valores resultantes das ações do algoritmo relacionadas com as entradas


especificadas.

• Eficácia: todas as operações a serem realizadas no algoritmo devem ser suficientemente


básicas e podem, em princípio, ser feitas com precisão e em um período de tempo finito
por um homem usando papel e lápis.

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?

Algoritmo 1 – Calcular Média Final

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.

Programar consiste na codificação precisa de um algoritmo – utilizando-se de alguma


linguagem de programação. Ziviani (2002) afirma que programar é basicamente estruturar
dados e construir algoritmos, sendo os programas a representação de uma classe especial
de algoritmos capazes de serem seguidos por computadores. Mas, afinal, o que são dados
e como estruturá-los?

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

Algoritmo 2 – Programa para Calcular Média Final - constante

// Declaração dos dados

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

// Instruções do Programa: Entrada → Processamento → Saída

M_1B  7.0 // Passo 1 no Algoritmo 1


M_2B  4.0 // Passo 2
P_1B  4 // Passo 3
P_2B  6 // Passo 4
MF  ( (M_1B * P_1B) + (M_2B * P_2B) ) / (P_1B + P_2B) // Passo 5
MF = 5.2 // Passo 6

//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).

Algoritmo 3 – Programa para Calcular Média Final - variável

//Declaração dos dados

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

//Instruções do Programa: Entrada → Processamento → Saída

LEIA (M_1B) // Passo 1 no Algoritmo 1


LEIA (M_2B) // Passo 2
LEIA (P_1B) // Passo 3
LEIA (P_2B) // Passo 4
MF  ( (M_1B * P_1B) + (M_2B * P_2B) ) / (P_1B + P_2B) // Passo 5
ESCREVA (MF) // Passo 6

//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.


// “*” 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.

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:

• Verificar se a média final é suficiente para aprovação na disciplina.

• Retornar a média necessária para aprovação no 2º bimestre, conhecendo-se a média


do 1º.

• 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.

Acesse a página sobre o livro Projeto de Algoritmos: com implementações em Pascal e C,


do professor Nívio Ziviani. Trata-se de leitura muito recomendada.
Disponível em: <http://www.dcc.ufmg.br/algoritmos/>. Acesso em: 17 maio 2013.

Leia o conteúdo da apostila Introdução a Algoritmos e Programação, de Fabrício Ferrari e


Cristian Cechinel.
Disponível em: <http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/Introducao_Algoritmos1.pdf>.
Acesso em: 17 de 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

“VisuALG - Aula 01 (Princípios Básicos)”.


Esse vídeo é uma aula introdutória ao VisuALG – um ambiente para executar programas escritos
em algoritmo ou português estruturado, tendo fins didáticos.
Disponível em: <http://www.youtube.com/watch?v=dZq7l9Oj-_c&list=PLE88CDBBDB041CC82&in
dex=1>. Acesso em: 17 maio 2013.

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.

Questão 1: RESPOSTA DISSERTATIVA Questão 2: INDIQUE A ALTERNATIVA CORRETA

Considerando que a ideia intuitiva de Quais são as propriedades definidas por


algoritmos já é de conhecimento prévio Knuth amplamente aceitas como requisitos
das pessoas, formule um algoritmo simples para um algoritmo?
para a troca de pneu de um carro. Dica: use a) Finitude, definição, entrada, saída,
um verbo no infinitivo em cada passo. eficácia.
b) Finitude, entrada, ambiguidade, saída,
eficácia.

16
AGORAÉASUAVEZ
c) Finitude, tamanho, definição, entrada e saída. Questão 4: INDIQUE A ALTERNATIVA CORRETA

d) Finitude, definição, entrada, saída,


Leve em conta as seguintes ações a serem
ambiguidade.
consideradas no desenvolvimento de um
e) Finitude, definição, entrada, tamanho, algoritmo. Assinale a alternativa que indica
saída. a ordem correta em que essas ações devem
ser executadas.

Questão 3: INDIQUE A ALTERNATIVA CORRETA 1. Executar o algoritmo.

2. Identificar os dados de entrada.


Classifique cada uma das seguintes
afirmações em “V” (se verdadeira) ou 3. Determinar o que é preciso para
“F” (se falsa) e assinale a alternativa que transformar dados de entrada em dados
corresponde à sequência correta de de saída.
indicações. 4. Compreender o problema.
I – Dado é qualquer elemento 5. Construir o algoritmo.
identificado em sua forma bruta que por
si só não conduz a uma compreensão de 6. Identificar os dados de saída.
determinado fato ou situação. 7. Testar o algoritmo.
II – Um problema pode ser resolvido
por muitos algoritmos distintos, mas
nem todos apresentarão uma solução a) 2, 6, 4, 5, 3, 1, 7.
satisfatória. b) 4, 2, 6, 3, 5, 1, 7.
III – Um problema pode ser resolvido c) 4, 2, 6, 3, 5, 7, 1.
por muitos algoritmos distintos, e todos
d) 2, 6, 5, 4, 3, 1, 7.
apresentarão solução satisfatória.
e) 4, 2, 6, 5, 3, 7, 1.
a) V, F, V.
b) F, F, V.
Questão 5: INDIQUE A ALTERNATIVA CORRETA
c) F, V, F.
d) V, V, F. Os algoritmos precisam ser ________
e) F, V, V. com utilização do conceito de lógica formal
(ou lógica simbólica) que se concentra
na estrutura do _________ e fornece os

17
AGORAÉASUAVEZ ÍNICIO

princípios para formalização do processo a) Calcule a área de um retângulo de base


de _________ de algoritmos. “b” e altura “h”.

A alternativa que traz a sequência de b) Calcule a área de um triângulo usando


palavras que completam as lacunas a especificação do retângulo do item
adequadamente é: a – lembre-se que a área do triângulo é
metade da área do retângulo.
a) Executados, raciocínio, programação.
c) Calcule a área de um quadrado de lado
b) Escritos, lógico, programação. “b” – observe que “b” é a mesma variável
c) Executados, lógico, construção. que representa a base do retângulo.

d) Escritos, raciocínio, programação.


Questão 8: RESPOSTA DISSERTATIVA
e) Escritos, raciocínio, construção.

Altere o “Algoritmo 3” que foi usado como


Questão 6: RESPOSTA DISSERTATIVA exemplo no texto para que se apresente a
média final de uma disciplina que contenha
Construa um algoritmo que some três nú- três provas e três pesos.
meros. Apresente duas versões: uma se-
guindo o padrão do exemplo dado pelo Al- Questão 9: RESPOSTA DISSERTATIVA
goritmo 1 – apresentando os passos com
ações verbais –, e outra como o apresen-
Faça um algoritmo que leia dois
tado pelo Algoritmo 2 – definindo “nome”
número inteiros X e Y. Utilizando apenas
para os dados e explicitando o cálculo.
multiplicação e divisão, o algoritmo deverá
retornar o valor de X2 e Y-2.
Questão 7: RESPOSTA DISSERTATIVA

Proponha um algoritmo que calcule a área


Questão 10: RESPOSTA DISSERTATIVA

das figuras geométricas definidas em cada


item a seguir – todas em cm e com valores É possível encontrar o valor correspondente
variáveis para seus dados. Use o “Algorit- ao grau Celsius, conhecendo-se o valor em
mo 3” como exemplo para execução. Fahrenheit, usando C = (5/9)(F-32). Desen-
volva um algoritmo que leia um medida em
Fahrenheit e retorne seu correspondente em
grau Celsius.

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.

É fundamental ter em mente quais são as propriedades de um algoritmo – finitude, definição,


entrada, saída, eficácia –, assim como os passos recomendados para a construção de bons
algoritmos. Também é importante lembrar que dados do tipo inteiro precisam de metade de
espaço para armazenamento em memória do que os dados do tipo real.

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.

ZIVIANI, Nivio. Projeto de Algoritmos: com implementação em Pascal e C. São Paulo,


Pioneira, 2002.

GOMES, Abel. “Design de Algoritmos e Programação Estruturada”. Apresentação de


slides de Aula, 2005.  Disponível em: <http://www.di.ubi.pt/~programacao/capitulo4.
pdf>. Acesso em: 16 maio 2013. 

19
GLOSSÁRIO ÍNICIO

Ambiguidade: incerteza, dúvida.

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.

Número real: pode ser positivo ou negativo e 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

// Instruções do Programa: Entrada → Processamento → Saída

N1  31.50 // Passo 1 na Versão 1


N2  40.80 // Passo 2
N3  18.70 // Passo 3
SOMA  N1 + N2 + N3 // Passo 4
MF = 91.00 // Passo 5

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

// Instruções do Programa: Entrada → Processamento → Saída

//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

//Instruções do Programa: Entrada → Processamento → Saída

LEIA (M1P) // Leitura da nota da 1ª prova


LEIA (M2P) // Leitura da nota da 2ª prova
LEIA (M3P) // Leitura da nota da 3ª prova
LEIA (P1) // Leitura do peso da 1ª prova
LEIA (P2) // Leitura do peso da 2ª prova
LEIA (P3) // Leitura do peso da 3ª prova

MF  ( (M1P * P1) + (M2P * P2) + (M3P * P3)) / (P1 + P2 + P3)

ESCREVA (MF) // Média ponderada final

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

//Instruções do Programa: Entrada → Processamento → Saída


//Entrada
LEIA (X) // Leitura de X
LEIA (Y) // Leitura de 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

//Instruções do Programa: Entrada → Processamento → Saída


//Entrada
LEIA (F) // Leitura de Fahrenheit

//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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Como analisar problemas.

• Estratégias para solucionar problemas.

• Representação gráfica e em pseudolinguagem de algoritmos.

31
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Quais são os passos para resolver um problema?

• O que é um método sistemático para resolver problemas?

• Como representar graficamente um algoritmo?

• Como representar um algoritmo em pseudolinguagem?

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

Tabela 2.1 – Roteiro para Resolver um Problema


Passos Questões

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?

a) Já viu esse problema antes ou conhece um correlato?


b) Se o problema for conhecido é possível usar o seu método?
c) Deve-se introduzir algum elemento auxiliar para tornar possível
a sua utilização?
d) É possível reformular o problema?
e) É possível resolver o problema por partes ou apenas em parte?
2. Estabelecer um
f) Considere a incógnita, não perca de vista o objetivo. Quais são
plano
os meios para esse fim?
g) Como é possível chegar a ele?
h) Que causas poderiam produzir tal resultado?
i) O que geralmente faz para obter esse resultado?
j) Utilizou todos os dados?
k) Utilizou toda a condicionante?

a) Verifique cada passo do plano estabelecido.


3. Executar o plano b) É possível verificar claramente que o passo está correto?
c) É possível demonstrar que o passo está correto?

a) É possível verificar o resultado?


4. Reexaminar o b) É possível chegar ao resultado por um caminho diferente? É
resultado final fácil identificar um novo procedimento?
c) É possível utilizar o/a método/solução em outro problema?

Fonte: Adaptado de Polya (1995).

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

Problema 1 – Calcular Média Final

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’.”

4) Reexaminar o resultado final


a) É possível verificar o resultado?
“Conferir os dados coletados: média 1º bimestre, média 2º bimestre, peso 1º
bimestre, peso 2º bimestre. Verificar cálculo para média ponderada. Conferir o
cálculo efetuado.”
b) É possível utilizar o/a método/solução em outro problema?
“Sim.”

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.

Tabela 2.2 – Elementos Mais Utilizados em um Fluxograma

Comandos
Elemento (signo) em Português Significados e utilização
Estruturado

INÍCIO Terminal: demarca os pontos de início e fim de


FIM um algoritmo. O símbolo é uma elipse.

Entrada ou saída de dados: mostra dados


LEIA()
trocados (recebidos ou fornecidos) entre o
ESCREVA()
algoritmo e o ambiente externo.

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.

Condição: indica uma situação na qual o


SE
algoritmo deve seguir em uma ou outra
ENTÃO
direção, conforme o resultado de uma
SENÃO
condição.

Fonte: Conteúdo extraído de Piva Jr. et al. (2012, p. 43).

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.

Figura 2.1 – Representação do Algoritmo de Média Final em Fluxograma e Português


Estruturado.
Fluxograma Português Estruturado

INÍCIO INÍCIO

M_1B, M_2B LEIA (M_1B)


LEIA (M_2B)
P_1B, P_2B LEIA (P_1B)
LEIA (P_2B)

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

Fonte: Desenvolvido pela autora.

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.

Leia a excelente apostila (Técnicas em programação) sobre algoritmos de autoria do professor


Otávio Chase da Universidade Federal Rural da Amazônia.
Disponível em: <http://www.lab.ufra.edu.br/lasic/images/AULAS/PROF_CHASE/TEC_PROG_I/
UFRA_TEC_PROG_P_01.pdf>. Acesso em: 24 maio 2013..

VÍDEOS:
Assista a este vídeo que apresenta uma discussão sobre resolução de problemas.

É um bom referencial sobre os procedimentos e as atitudes adequadas para solucionar problemas.

Disponível em: <http://www.youtube.com/watch?v=3vZrH2WQGfg>. Acesso em: 24 maio 2013.

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.

Questão 1: RESPOSTA DISSERTATIVA a) 20g.


b) 25g.
Tendo em vista os passos a serem
c) 35g.
considerados no desenvolvimento de um
algoritmo, estudados no tema 1, apresente d) 40g.
a correlação existente com os métodos e) 45g.
para a resolução de problemas que foram
vistos neste tema.
Questão 3: INDIQUE A ALTERNATIVA CORRETA

Considere o seguinte problema e marque a


Questão 2: INDIQUE A ALTERNATIVA CORRETA alternativa que corresponde à sua solução.
Somando-se 2/3 de um número x com 3/5
Considere o seguinte problema e marque a
de um número y, obtém-se 84. Se o número
alternativa que corresponde à sua solução.
x é metade do número y, então a diferença
Um copo cheio de água pesa 325g. Se y-x é igual a:
jogarmos metade da água fora, seu peso
a) 18.
cai para 180g. O peso do copo vazio é?
b) 25.
c) 30.

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

Questão 7: RESPOSTA DISSERTATIVA

Ainda considerando o problema resolvido nas


questões 2 e 6, construa o fluxograma do algo-
ritmo que apresenta sua solução.

Questão 8: RESPOSTA DISSERTATIVA

Para o problema apresentado na questão


3 – o de encontrar a diferença entre x e y,
sabendo-se que ao somar os 2/3 de um nú-
mero x com os 3/5 do número y, obtém-se
84, sendo o número x a metade do número
y –, apresente um roteiro para se chegar à
solução.

Questão 9: RESPOSTA DISSERTATIVA

Considerando o problema resolvido nas


questões 3 e 7, construa o fluxograma do
algoritmo que apresenta sua solução.

Questão 10: RESPOSTA DISSERTATIVA

Elabore um algoritmo em pseudolinguagem


que leia três números inteiros e calcule a
soma de seus quadrados.

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 uso de fluxogramas e de pseudolinguagem para a apresentação de algoritmos é uma


estratégia importante para a consolidação do aprendizado e, inicialmente, para verificar
facilmente a estruturação do algoritmo proposto (fluxograma) e treinar para a aplicação de
uma linguagem de programaçã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 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.

POLYA, George. A arte de resolver problemas: um novo aspecto do método matemático.


Rio de Janeiro, Interciência, 1995.

43
GLOSSÁRIO ÍNICIO

Análogo: referente à analogia – uma espécie de semelhança.

Condicionante: que condiciona, que estabelece condição para a realização ou cumprimento


de algo, que constitui uma condição para a ocorrência de um fato.

Fluxograma: também chamado de diagrama de fluxo, é uma representação gráfica que


utiliza formas geométricas padronizadas ligadas por setas de fluxo, para indicar as diversas
ações/instruções e decisões que devem ser seguidas para resolver um problema.

Pseudolinguagem: é uma forma especial de linguagem e com significados bem definidos


para todos os termos utilizados nas instruções (comandos). Possui todos os elementos
básicos e uma estrutura semelhante à de uma linguagem de programação de computadores.

Sistemático: que revela método, organização intelectual.

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.

4. Determinar o que é preciso para transformar dados de


entrada em dados de saída:
a) observar regras e limitações.
2. Estabelecer um plano
b) identificar todas as ações a serem realizadas.
c) eliminar ambiguidades.
5. Construir o algoritmo.

6. Testar o algoritmo.
3. Executar o plano
7. Executar o algoritmo.

4. Reexaminar o Não indicado, mas poderia ser uma avaliação do resultado ou


resultado final ainda um retorno ao item 6 – novo teste do 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

//Instruções do Programa: Entrada → Processamento → Saída


//Entrada
LEIA (A) // primeira variável
LEIA (B) // segunda variável
LEIA (C) // terceira variável

//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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Operadores matemáticos.

• Tipos dos dados que podem ser usados num programa.

• Atribuição, leitura e escrita em algoritmos.

55
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Como representar expressões matemáticas em algoritmos?

• Qual o tipo de dado mais apropriado para guardar uma informação?

• Qual a importância em definir corretamente os tipos de dados num algoritmo?

• Como usar comandos de leitura e escrita num algoritmo?

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.

Ao desenvolver um algoritmo, é importante que você saiba corretamente qual tipo de


informação precisará armazenar e qual operação será realizada com ela, pois a sua
adequada representação permitirá a otimização dos recursos computacionais e de
processamento.

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

Tabela 3.1 – Tipos de dados

Tipo de dado Definição Espaço em memória

São os números pertencentes ao


Representa números entre
conjunto dos Inteiros, isto é, que não
Inteiro -32768 até +32767. Ocupa
possuem parte fracionária. Podem ser
2 bytes na memória.
positivos, nulos ou negativos.

São os números pertencentes ao


conjunto dos Reais, isto é, que podem
Representa os números entre
possuir parte fracionária. Também são
Real 2.9 x 10-39 até 1.7 x 1038.
chamados de ponto flutuante devido
Ocupa 6 bytes na memória.
à maneira como o computador os
armazena.

São os valores pertencentes ao


conjunto de todos os caracteres
numéricos (0...9), alfabéticos
(a...z,A...Z) e especiais (! @ # $ % _ &
*). Esse conjunto também é conhecido Representa um dos caracteres,
Caracter como conjunto de caracteres da tabela ASCII.
alfanuméricos. Os caracteres Ocupa 1 byte na memória.
alfanuméricos são armazenados
internamente no computador na forma
numérica (binária) utilizando o padrão
ASCII3.

Cadeia de caracteres (também


designada como
Cadeia Alfanumérica, texto, ou Conjunto de caracteres (Char).
Caracteres simplesmente caracteres). Estes tipos Ocupa de 1 a 255
de dados são mais adequados ao bytes na memória.
manuseamento de texto, nas instruções
de leitura, escrita e atribuição.

O tipo lógico é utilizado para representar


informações que só podem assumir Valor lógico. Assuma somente
dois valores, o valor verdadeiro (V) ou dois valores: TRUE
Lógico o valor falso (F). Estes valores também (Verdade) ou FALSE (Falso).
podem ser entendidos como: ligado/ Ocupa 1 byte na
desligado, 1/0, alto/baixo, fechado/ memória.
aberto, entre outros.

Fonte: Adaptado de Almeida (2000) e Ferrari e Cechinel (2008).

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.

• Começar com um caractere alfabético.

• Podem ser seguidas por mais caracteres alfabéticos e/ou numéricos.

• É permitido o uso do caractere especial ‘sublinha’ (_).

• Não é permitido o uso de outros caracteres especiais.


É importante ressaltar que as variáveis num programa podem ter seu conteúdo alterado,
consultado ou apagado muitas vezes durante o algoritmo. No entanto, ao alterar o conteúdo
da variável, a informação anterior é perdida, permanecendo sempre a última informação
armazenada na variável. Por isso é fundamental verificar se, ao atribuir novo valor a uma
variável, é necessário guardar o valor anterior em alguma outra variável auxiliar.

A atribuição, mencionada anteriormente, se refere ao ato de atribuir um(a) valor/informação


a uma variável. Essa operação de atribuição é normalmente representada por uma seta que
aponta para a esquerda. A Tabela 3.2 mostra alguns exemplos de atribuição.

Tabela 3.2 – Exemplos de atribuição.


Atribuições Alguns exemplos
variável  constante idade  12 (lê-se: idade recebe 12)

variável  variável preço  valor

variável  expressão AB+C

Fonte: Extraído de Carvalho (2007).

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.

Os operadores matemáticos são aqueles que efetuam as quatro operações básicas de


adição, subtração, multiplicação e divisão. Na Tabela 3.3 são apresentados os principais
operadores matemáticos usados em linguagem algorítmica.

60
LEITURAOBRIGATÓRIA
Tabela 3.3 – Principais operadores matemáticos.

Símbolo do
Operação Prioridade Exemplo
operador

Multiplicação * 1ª a*b (a vezes b)

Divisão / 1ª a/b (a dividido por b)

Adição + 2ª a+b (a mais b)

Subtração - 2ª a-b (a menos b)

Fonte: Adaptado de Carvalho (2007) e Piva Jr. et al. (2012).

É 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

Algoritmo 1 – Programa para o salário a receber

// Declaração dos dados

valor real
sal_base // Salário-base
sal_receber // Salário a receber
gratificacao // Gratificação
imposto //Imposto a pagar

// Instruções do Programa: Entrada → Processamento → Saída

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

Observe que o Algoritmo 1 apresenta, no bloco de instruções do algoritmo, um “INICIO” e


um “FIMALGORITMO”. Essas declarações são necessárias para que se indique à linguagem
de programação em uso quando se deve iniciar a execução do programa.

Agora teste seus conhecimentos.

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 o material sobre operadores matemáticos, desenvolvido pelo professor Cristian


Cechinel.
Disponível em: <http://www.cristiancechinel.pro.br/my_files/algorithms/bookhtml/node39.html>.
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.

Questão 1: RESPOSTA DISSERTATIVA x = a + b*c

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.

Questão 2: INDIQUE A ALTERNATIVA CORRETA b) 15; 9; 10; 90; 28; 350.

c) 15; 9; 44; 40; 18; 350.


Indique o valor da variável x em cada
expressão aritmética seguinte. Considere d) 15; 9; 44; 90; 18; 350.
a=10, b=5, c=6, d=7, e=2 e f=3. Além disso, e) 15; 9; 44; 40; 28; 350.
ressalta-se que todas as variáveis são
inteiras.
Questão 3: RESPOSTA DISSERTATIVA
x=a+b
Indique “V” (verdadeiro) ou “F” (falso) para
x=a+b–c
cada uma das sentenças a seguir.
x = a*b - c

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.

Leia a seguir as regras para criar um


Questão 4: INDIQUE A ALTERNATIVA CORRETA identificador e escolha a alternativa correta no
que diz respeito ao que dizem Piva Jr. et al.
(2012, p. 87) sobre o assunto:
Classifique cada uma das seguintes
afirmações em “V” (se verdadeira) ou 1) Não podem começar com um caractere
“F” (se falsa) e escolha a alternativa que alfabético.
corresponde à sequência correta de
2) Podem ser seguidas por mais caracteres
indicações.
alfabéticos e/ou numéricos.
I – Tipos de dados inteiros são os números
3) Não é permitido o uso do caractere
pertencentes ao conjunto dos Inteiros,
especial ‘sublinha’ (_).
isto é, que não possuem parte fracionária.
Podem ser positivos, nulos ou negativos.

65
AGORAÉASUAVEZ ÍNICIO

4) É permitido o uso de outros caracteres Questão 9: RESPOSTA DISSERTATIVA


especiais.
Desenvolva um algoritmo que receba o
Marque a alternativa correta.
ano de nascimento de uma pessoa e o ano
a) As sentenças 1 e 3 estão corretas. atual e que calcule e mostre não só a idade
dessa pessoa, mas quantos anos esta terá
b) As sentenças 1 e 2 estão corretas.
daqui a 6 anos.
c) As sentenças 1, 2 e 3 estão corretas.

d) Apenas a sentença 2 está correta. Questão 10: RESPOSTA DISSERTATIVA


e) Apenas a sentença 1 está correta.
Desenvolva um algoritmo que receba uma
medida em metro e que faça a conversão
Questão 6: RESPOSTA DISSERTATIVA para centímetro e milímetro.

Desenvolva um algoritmo que não só


receba o valor de um depósito e o valor
da taxa de juros, mas também calcule e
mostre o valor do rendimento e o valor total
depois do rendimento.

Questão 7: RESPOSTA DISSERTATIVA

Faça um programa que calcule e mostre a


área de um triângulo, sabendo-se que a área
= (base * altura)/2.

Questão 8: RESPOSTA DISSERTATIVA

Faça um programa que calcule e mostre a


área de um círculo.

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.

Agora, avalie seu aprendizado e faça as atividades propostas!

67
REFERÊNCIAS ÍNICIO

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. de 2013.

CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação – Algoritmos.


Apostila, 2007. Disponível em: http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/apostila_
algoritmos_Flavia.pdf. Acesso em: 4 jun. 2013.

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 2013.

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.

WIKIPÉDIA, Informação. 2013. Disponível em http://pt.wikipedia.org/wiki/


Informa%C3%A7%C3%A3o. Acesso em: 19 jun. 2013.

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).

Dados brutos: em informática designam os dados/valores obtidos e armazenados sem


sofrer tratamento. São conjunto de números, caracteres, imagens entre outros.

Identificador: representa o nome escolhido para rotular as variáveis, as constantes, os


procedimentos e as funções.

Informação: “é o resultado do processamento, manipulação e organização dos dados, de


tal forma que represente uma modificação (quantitativa ou qualitativa) no conhecimento
do sistema (pessoa, animal ou máquina) que a recebe” (WIKIPÉDIA, 2013, disponível em
<http://pt.wikipedia.org/wiki/Informa%C3%A7%C3%A3o>. Acesso em: 19 jun. 2013).

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

gratificacao  sal_base * (5/100)


imposto  sal_base * (7/100)
sal_receber  sal_base + 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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Operadores lógicos.

• Estruturas de controle: sequência, seleção simples e composta.

• Construção de algoritmos que utilizem operadores lógicos e estruturas de controle.

77
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Quais são os operadores lógicos?

• Qual a importância dos operadores lógicos e relacionais num algoritmo?

• O que são estruturas de controle de seleção?

• Quais são os tipos de estruturas de controles que existem?

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.

Operação Operador Exemplo

Igual = a = b (a é igual a b?)

Diferente <> a<>b (a é diferente de b?)

Maior que > a>b (a é maior que b?)

Menor que < a<b (a é menor que b?)

Maior ou igual que >= a>=b (a é maior ou igual a b?)

Menor ou igual que <= a<=b (a é menor ou igual a b?)

Fonte: Extraído Piva Jr. et al. (2012, p. 62-63).

Tabela 4.2 – Operadores lógicos.

Operação Operador Significado

Operador unário de negação. Tem a maior


precedência entre os operadores lógicos.
Negação não
Exemplo: não(VERDADEIRO) = FALSO e
não(FALSO) = VERDADEIRO
Operador que resulta VERDADEIRO
Conjunção e somente se seus dois operandos lógicos
forem verdadeiros.
Operador que resulta VERDADEIRO
Disjunção (não
ou quando um de seus operandos lógicos for
exclusiva)
verdadeiro.
Operador que resulta VERDADEIRO
Disjunção
xou* se seus dois operandos lógicos forem
(exclusiva)
diferentes, e FALSO, se forem iguais.

Fonte: Adaptado de Carvalho (2007) e Piva Jr. et al. (2012, p. 63).


*Lê-se: “ou exclusivo”.

79
LEITURAOBRIGATÓRIA ÍNICIO

A Figura 4.1 apresenta os resultados possíveis para os operadores lógicos, conhecido


como tabela verdade. Nas duas primeiras colunas são dados os valores lógicos das duas
variáveis A e B e nas demais são apresentados os resultados para a combinação das
variáveis por meio de um operador lógico. Observe a terceira linha como exemplo. Foi dado
que o valor de A é VERDADEIRO (V) e de B é FALSO (F). Ao usar o operador lógico “e”,
verifica-se que quando há uma variável VERDADEIRA e outra FALSA, o resultado é FALSO,
pois ao unir uma falsidade com uma verdade o retorno é falso. Já o operador lógico “ou” é
uma disjunção, será escolhido um ou outro valor. Como uma das variáveis é VERDADEIRA,
o resultado será VERDADEIRO. O operador lógico “não” altera o conteúdo da variável
lógica para seu oposto. No exemplo, como A era VERDADEIRO, tornou-se FALSO. Se fosse
a negação de B o retorno seria VERDADEIRO. Por fim, o operador lógico “xou” é uma
disjunção exclusiva, ou seja, só retornará VERDADEIRO se as duas condições (variáveis)
forem diferentes, como no exemplo abordado.

Figura 4.1 – Tabela verdade com resultados de operadores lógicos.


Fonte: Extraído de (Carvalho, 2007).

Um algoritmo completo sempre será composto por declarações (variáveis, constantes,


comentários, funções, entre outros), comandos (atribuição, entrada, saída, por exemplo) e
estruturas. As estruturas de sequência, seleção e iteração permitem representar a solução
de qualquer algoritmo. E é por esse motivo que elas são tão importantes no seu aprendizado
de construção de algoritmos.

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).

Tabela 4.3 – Algoritmo com estrutura de controle sequencial.

Estrutura geral Exemplo

ALGORITMO ALGORITMO
comando 1; X, Y, soma real
comando 2; Leia(X,Y)
comando 3; soma  X+ Y
… escreva(soma)
comando N; FIMALGORITMO
FIMALGORITMO

Fonte: Desenvolvido pela autora.

A estrutura de seleção simples é aquela em que a execução de um ou mais comandos


depende de uma condição verdadeira apenas, não tendo comandos a executar se a
condição for falsa. Já a composta é aquela que tem comandos a serem executados quando
a condição for verdadeira ou falsa.

81
LEITURAOBRIGATÓRIA ÍNICIO

Tabela 4.4 – Algoritmo com estrutura de controle de seleção simples e composta.

ALGORITMO // seleção simples ALGORITMO


… X, Y, Z real
se condição Leia(X,Y)
então sequência de comandos se (X >= Y)
fim se então Z  X - Y
… escreva(Z)
FIMALGORITMO FIMALGORITMO

ALGORITMO // seleção composta ALGORITMO


… X, Y, Z real
se condição Leia(X,Y)
então sequência de comandos se (X >= Y)
senão sequência de comandos então Z  X – Y
fim se senão Z  Y – X
… escreva(Z)
FIMALGORITMO FIMALGORITMO

Fonte: Desenvolvido pela autora.

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

Fonte: Desenvolvido pela autora.

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á.

Outra estrutura de controle de seleção que é bastante usada é a de escolha múltipla, ou


simplesmente escolha em VisuALG. O uso dessa estrutura é indicado quando é necessário
optar por uma opção entre várias para uma certa variável. Seria possível usar uma estrutura
do tipo se-então-senão aninhadas, mas se o algoritmo puder ficar mais claro e objetivo, a
estrutura de escolha múltipla é a opção a ser escolhida. Essa estrutura possui uma expressão
de seleção e a partir dela é feita a escolha de um dos casos para serem executados os
comandos associados a ele. Se nenhum caso atender à expressão de seleção, há a opção
de inserir uma situação genérica com o uso de outro caso. Nessa estrutura, em geral, os
demais comandos que estão associados aos outros casos, não serão executados, mas
é importante ressaltar que esse aspecto pode ser alterado em algumas linguagens de
programação quando não se insere um comando de interrupção, e isso apresenta uma

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.

Tabela 4.6 – Algoritmo com estrutura de controle 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

Fonte: Desenvolvido pela autora.

Como já mencionado o VisuALG é um ambiente para executar programas escritos em


algoritmo ou português estruturado. Logo, você tem as condições suficientes para testar os
algoritmos descritos e consolidar o seu aprendizado! Aproveite seu tempo e dedique-se à
sua instrução!

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.

Leia a excelente apostila intitulada “Técnicas em Programação”, trecho sobre algoritmos, de


autoria do professor Otávio Chase da Universidade Federal Rural da Amazônia.
Disponível em: <http://www.lab.ufra.edu.br/lasic/images/AULAS/PROF_CHASE/TEC_PROG_I/
UFRA_TEC_PROG_P_01.pdf>. Acesso em: 24 maio 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.

Assista ao vídeo “VisuALG - Aula 02 (Se,Conectivos,Lógico)”.


Disponível em: <http://www.youtube.com/watch?v=4VZtEtjI-rI>. Acesso em: 15 abr. 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.

Questão 1: RESPOSTA DISSERTATIVA Questão 2: INDIQUE A ALTERNATIVA CORRETA

Com base no que estudou até agora, Considere os valores de X e Y e os aplique


apresente num fluxograma o algoritmo no algoritmo do exercício anterior. Marque
mostrado na Tabela 4.4 e reapresentado a a alternativa incorreta para a saída de Z.
seguir. Se for necessário, volte ao Tema 2 a) X = 20, Y = 5, Z = 15.
para identificar as representações corretas
b) X = 5, Y = 20, Z = -10.
para as instruções.
c) X = 5, Y = 5, Z = 0.
ALGORITMO
d) X = 20, Y = 20, Z = 0.
X, Y, Z real
Leia(X,Y) e) X = 5, Y = 20, Z = 15.
se (X >= Y)
então Z  X – Y
senão Z  Y – X Questão 3: RESPOSTA DISSERTATIVA
escreva(Z)
FIMALGORITMO Exercício para treinar expressões lógicas.
São dadas a seguir algumas ordens de
operações que são expressões lógicas. Faça
a correlação entre a operação apresentada

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.

4. X está entre 1 e 8, inclusive nos extremos, e) V, V, V.


porém Y está fora deste intervalo.

5. A soma de X e Y deve ser menor que Questão 5: INDIQUE A ALTERNATIVA CORRETA


dez ao cubo.
Analise os dois algoritmos seguintes.
( ) (X > 0) e (X < 3*Y) (veja figura)
( ) (X + Y < 10^3) Em relação ao exposto, escolha a seguir a
( ) (X > Y) e ((K < 2) ou ( J = 4)) alternativa correta.

( ) (X>=1) e (x<=8) e ((Y<1) ou (Y> 8)) a) O Algoritmo 1 está correto e o Algoritmo


2 está incorreto.
( ) (X<>Y) e (Z <> K) e (Z <> J) e (Z <> M)
b) O Algoritmo 1 e o Algoritmo 2 estão
incorretos.
Questão 4: INDIQUE A ALTERNATIVA CORRETA
c) O Algoritmo 1 só considerará a letra u
como vogal.
Classifique cada uma das seguintes
afirmações em “V” (se verdadeira) ou d) O Algoritmo 1 poderá apresentar uma
“F” (se falsa) e escolha a alternativa que vogal como uma consoante.
corresponde à sequência correta de e) Os dois algoritmos retornam o mesmo
indicações. resultado.
I – NÃO é o operador unário de negação.
Tem a maior precedência entre os Questão 6: RESPOSTA DISSERTATIVA
operadores lógicos.
II – A disjunção E é o operador que resulta Faça um algoritmo que não só receba dois
VERDADEIRO somente se seus dois números, mas mostre o maior deles.
operandos lógicos forem verdadeiros.

87
AGORAÉASUAVEZ ÍNICIO

Questão 7: RESPOSTA DISSERTATIVA Questão 10: RESPOSTA DISSERTATIVA

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

• 10 > (a + b) ou (a + b) = (c + d) se (não( a > 2 ou não(b < 7)))


• (a = c) e (d = a) então x = a + b
senão x = a / b
fim se
Questão 9: RESPOSTA DISSERTATIVA

Calcule o valor de x em cada teste, sabendo-


se que a=5, b=4 e c=3 e d=6.
Teste 1
se ( não(d > 5) )
então x = (a + b) * d
senão x = (a – b) * c;
fim se

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

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.

CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação – Algoritmos. Apostila,


2007. Disponível em: <http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/apostila_
algoritmos_Flavia.pdf>. Acesso em: 4 jun. 2013.

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 2013.

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.

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.

Estrutura de controle: em computação se refere à ordem em que as instruções, expressões


e as funções são executadas ou avaliadas em um programa.

Interrupção: é o ato ou efeito de interromper. Por exemplo, quando um comando de


interrupção termina uma execução de uma estrutura de seleção.

Tabela verdade: é uma tabela que apresenta os resultados VERDADEIRO ou FALSO de


testes lógicos realizados, lembrando que estes testes são relacionados com os conectivos
lógicos estudados.

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
ZX–Y X >= Y ZY–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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Laços de repetição.

• Como criar algoritmos com repetição de blocos de comandos.

• Os diferentes tipos de estruturas de repetição.

99
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• O que são laços de repetição?

• Quais os comandos de laços de repetição que existem?

• Quando usar as estruturas de repetição num algoritmo?

• Quais as diferenças entre os comandos “para”, “enquanto” e “repita”?

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 de repetição, assim como as estruturas sequenciais e de seleção, permitem


a codificação da solução de problemas realmente complexos. Além disso, auxiliam também
na solução de problemas simples como testar a entrada de dados e solicitar ao usuário que
a repita até que um valor válido seja digitado.

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.

Tabela 5.1 – Sintaxe do comando “enquanto” no VisuALG.

Enquanto <expressão lógica> faca


comando 1
comando 2
comando 3

comando N
fimenquanto

Fonte: Desenvolvido pela autora.

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.

Considere o pseudocódigo e as respectivas saídas apresentadas na Tabela 5.2 a fim de


analisar o que é realizado pelo algoritmo.

101
LEITURAOBRIGATÓRIA ÍNICIO

Tabela 5.2 – Sintaxe do comando “enquanto”.

ALGORITMO Estado X Y
X, Y inteiro Valores iniciais 1 5
Final do primeiro teste 1<5 3 6
X1 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

Fonte: Adaptado de Ascencio e Campos (2002).

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.

Tabela 5.3 – Sintaxe do comando “repita” no VisuALG.

repita
comando 1
comando 2
comando 3

comando N
ate <expressão lógica>

Fonte: Desenvolvido pela autora.

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.

Tabela 5.4 – Sintaxe do comando “repita”.

ALGORITMO X Y Estado
X, Y inteiro 1 5 Valores iniciais
3 6 Primeiro teste 3>=6
X1 5 7 Segundo teste 5>=7
Y5 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).

Na Tabela 5.4 foram apresentados os valores de x e y antes do teste lógico porque no


comando “repita” os comandos internos ao laço são executados pelo menos uma vez antes
de a condição ser avaliada para verificar se a repetição continuará ou não.

O comando de repetição “para” é usado quando é conhecida a quantidade de vezes que


se deseja repetir o bloco de comandos internos. Funciona com uma variável de controle
que assume um valor inicial e inteiro, é incrementada em determinado valor inteiro a cada
passo e, por fim, testa-se seu valor para averiguar se atingiu o valor final (também inteiro)
estabelecido. Na Tabela 5.5 é apresentada a sintaxe desse comando em VisuALG.

103
LEITURAOBRIGATÓRIA ÍNICIO

Tabela 5.5 – Sintaxe do comando “repita” no VisuALG.

para <variável> de <valor inicial> até <valor limite> passo


<incremento> faca
comando 1
comando 2
comando 3

comando N
fimpara

Fonte: Desenvolvido pela autora.

O incremento padrão de um comando “para” é de uma unidade, mas, se for necessário,


é possível indicar em passo o valor do incremento. Dessa forma, entende-se que, se o
incremento for unitário, pode-se eliminar o trecho [passo <incremento>] do comando. A
variável de controle assume o valor inicial definido apenas na primeira execução do comando
“para”. Nos demais passos a variável é incrementada pelo valor padrão ou pelo determinado
no comando, repetindo-se as instruções internas até que a variável de controle atinja o
valor limite definido para o laço. Na Tabela 5.6 é apresentado o mesmo exemplo usado para
exemplificar os comandos de repetição, mas agora com o uso do “para”.

Tabela 5.6 – Sintaxe do comando “para”.

ALGORITMO Estado I X Y
X, Y, I inteiro Valores iniciais 1 5
Primeiro laço 1 3 6
X1 Segundo laço 2 5 7
Y5 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

Fonte: Adaptado de Ascencio e Campos (2002).

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.

É importante que você exercite o emprego desses comandos de repetição desenvolvendo


novos algoritmos. Portanto, aproveite seu tempo, dedique-se à sua instrução e faça os
exercícios propostos.

105
LINKSIMPORTANTES ÍNICIO

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 ótimo material do Curso de Lógica de Programação e Algoritmos, 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_09.html>. Acesso
em: 25 jun. 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.

Assista à videoaula “Estrutura de Repetição – algoritmo”.


Disponível em <http://www.youtube.com/watch?v=xBPkA7H3ZzI>. Acesso em: 15 abr. 2013.

Ambos são bons referenciais sobre os assuntos discutidos nessa disciplina.

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.

Questão 1: RESPOSTA DISSERTATIVA Questão 2: INDIQUE A ALTERNATIVA CORRETA

Com base no que estudou até agora Considere que X  X+ 1 e Y  Y + 2 são as


apresente num fluxograma o algoritmo instruções internas do comando “enquanto”
mostrado na Tabela 5.2 e reapresentado no algoritmo do exercício anterior. Isso
exposto, escolha a seguir a alternativa
a seguir. Se for necessário, volte ao Tema
incorreta sobre o assunto.
2 e ao Livro-Texto da disciplina para
identificar as representações corretas para a) A diferença entre os novos valores de
as instruções. X e Y aumenta uma unidade a cada laço.
b) A condição não permite que o algoritmo
ALGORITMO seja finalizado.
X, Y inteiro
c) O laço é infinito.
X1 d) O algoritmo termina no 16º passo do
Y5 laço “enquanto”.
Enquanto X < Y faca
X  X+ 2 e) No quarto passo do laço, X = 5 e Y =
Y  Y + 1 13.
Fimenquanto
Escreva(X, Y)
FIMALGORITMO

107
AGORAÉASUAVEZ ÍNICIO

Questão 3: INDIQUE A ALTERNATIVA CORRETA I – Numa estrutura de repetição só é


possível que várias instruções sejam
Dado o trecho de código a seguir, indique a executadas repetidamente até que ocorra
alternativa correta sobre ele. uma condição de parada.

para i de 1 até 3 passo 1 faca II – O comando “enquanto” só deve ser


utilizado quando não se sabe o número
para j de 1 até 2 passo 1 faca
de vezes que um trecho de algoritmo
escreva(i, j) deverá ser repetido.
fimpara III – O laço “enquanto” só permite a
execução de um ou mais comandos se a
fimpara
condição for VERDADEIRA.
a) A sintaxe do comando “para” está a) V, F, V.
errada, pois não deveria conter “passo 1”,
b) V, F, F.
que é o padrão de incremento.
c) F, V, F.
b) A sequência de (i,j) gerada pelo código
é 1,1; 1,2; 2,1; 2,2; 3,1; 3;2. d) V, V, F.
c) Não é possível executar um laço dentro e) F, F, V.
de outro laço.

d) A sequência de (i,j) gerada pelo código Questão 5: INDIQUE A ALTERNATIVA CORRETA


é 1,1; 2,1; 3,1; 1,2; 2,2; 3;2.

e) O laço interno só funcionará se forem Escolha a alternativa que apresente a


usados “enquanto” ou “repita”. sequência de palavras que completam
corretamente as lacunas do parágrafo
seguinte.
Questão 4: INDIQUE A ALTERNATIVA CORRETA “No comando _____________ os comandos
internos ao laço são executados pelo menos
Classifique cada uma das seguintes _____________ antes de a condição ser
afirmações em “V” (se verdadeira) ou avaliada para _____________ se a repetição
“F” (se falsa) e escolha a alternativa que continuará ou não.”
corresponde à sequência correta de
indicações. a) “repita”, uma vez, verificar.

b) “enquanto”, uma vez, justificar.

108
AGORAÉASUAVEZ
c) “repita”, duas vezes, justificar. Questão 9: RESPOSTA DISSERTATIVA

d) “enquanto”, uma vez, verificar.


Construa um algoritmo que leia em
e) “repita”, uma vez, justificar. centímetros a altura de 10 pessoas,
devendo indicar qual é a pessoa mais
alta e a mais baixa, assim como suas
Questão 6: RESPOSTA DISSERTATIVA
respectivas alturas. Dica: além do laço
de repetição “para”, você deverá utilizar a
Faça um algoritmo que calcule o fatorial de
estrutura de seleção “se” para desenvolver
um número. Use a estrutura de repetição
adequadamente o algoritmo.
“para”.

Questão 10: RESPOSTA DISSERTATIVA


Questão 7: RESPOSTA DISSERTATIVA

Escreva um trecho de código que apresente


Escreva um programa considerando que,
um menu na tela do computador com as 7
dentro de um conjunto de informações
opções: inserir nomes, retirar nomes, listar
referentes a idades e sexos de 50 pessoas,
nomes, procurar nomes, salvar arquivo,
seja procurada a informação de quantas
carregar arquivo, finalizar. Use a estrutura
dessas pessoas são do sexo feminino e
de repetição “repita” para desenvolver o
possuem 21 anos ou mais. Para isso, utilize
menu.
um contador (uma variável auxiliar) para
armazenar a quantidade de ocorrências
dessa condição definida no enunciado.
Esse contador deve ser inicializado com 0
e incrementado em 1 sempre que o sexo
de uma dada pessoa for feminino e sua
idade, maior ou igual a 21.

Questão 8: RESPOSTA DISSERTATIVA

Desenvolva um algoritmo que leia um número


N e que indique quantos valores inteiros e
positivos devem ser lidos em seguida. Para
cada número lido, mostre o valor lido e o
fatorial desse valor.

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.

É importante que você esteja atento às possibilidades de emprego das estruturas de


repetição, aninhando-as, combinando-as com as estruturas de seleção e, como verá adiante,
com estruturas de dados como vetores e matrizes. Em virtude de esse conteúdo ser básico,
recomenda-se que os estudos sejam aprofundados pela leitura do material disponibilizado
e pela visualização dos vídeos indicados.

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.

CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação – algoritmos. Apostila,


2007. Disponível em: <http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/apostila_
algoritmos_Flavia.pdf>. Acesso em: 4 jun. de 2013.

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.

PIVA JUNIOR, Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de


M.; BIANCHI, Francisco. Algoritmos e Programação de Computadores. Rio de Janeiro,
Elsevier, 2012. Livro-Texto 633.

GLOSSÁRIO
Incremento: é uma operação comum que adiciona uma unidade a uma variável inteira no
seu valor atual.

Indentação: maneira de organizar o código, deixando os comandos alinhados à esquerda


de acordo com o nível em que ele se encontra.

Instrução: descreve uma tarefa a ser realizada por um computador.

Loop ou laço: é uma estrutura de repetição.

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

X1
Y5

V X  X+ 2
X<Y
YY+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

n0
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

para i de 1 até 10 passo 1 faca


Leia(n, alt)
se (i = 1)
entao maior  alt
num_maior  n
menor  alt
num_menor  n
senao se (alt > maior)
então maior  alt
num_maior  n
senao se (alt < menor)
então menor  alt
num_menor  n
fimse
fimse
fimse
Escreva(“Pessoa mais alta e sua altura “, num_maior, maior)
Escreva(“Pessoa mais baixa e sua altura “, num_menor, menor)
fimpara
FIMALGORITMO

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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Vetores como estrutura de dados.

• Como a informação pode ser organizada em estrutura composta homogênea e


unidimensional.

• Aplicação e manipulação de vetores.

119
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Como usar um vetor para armazenar informação?

• Qual a forma mais adequada de manipular os dados em um vetor?

• Como definir um vetor?

• Quais tipos de dados podem ser armazenados em um vetor?

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.

Em programação, as estruturas de dados são uma forma coerente e racional de organizar os

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

Fonte: Desenvolvido pela autora.

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

Figura 6.1 – Representação gráfica de um vetor que armazena a temperatura.

Nome da variável vetor Conteúdo


temperatura[1] 18,0
temperatura[2] 19,2
temperatura[3] 19,7
... ....
temperatura[143] 20,5
temperatura[144] 20,3

Fonte: Desenvolvido pela autora.

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.

Tabela 6.2 – Programa que atribui valor para a variável “temperatura”.

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

Fonte: Desenvolvido pela autora.

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.

As observações mais importantes que você precisa saber sobre vetores:

• Os elementos de um vetor são sempre armazenados em posições adjacentes de


memória.

• 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.

• Cada linguagem de programação trabalha de forma distinta com relação à atribuição


de dados, à declaração e ao dimensionamento do vetor.

• É muito importante observar se a manipulação do índice do vetor está correta, ou seja,


se o elemento correto do vetor está sendo acessado. Esse tipo de erro não é detectável
pelos compiladores das linguagens de programação e são difíceis de identificar.

• Ao declarar uma variável como vetor 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 em comparação com X dados inteiros.
Por isso é fundamental declarar corretamente o tipo de dado e a quantidade de elementos de
um vetor. Volte ao tema 3 para ver o espaço em memória de que cada tipo de dado necessita.

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.

Leia um pequeno texto sobre vetores e matrizes e sua manipulação no VisuALG.


Disponível em: <http://gnulinuxbr.com/2010/02/19/matrizes-e-vetores-para-logica-de-programa-
cao/>. Acesso em: 30 jun. 2013.

Acesse a excelente apostila Técnicas de Linguagem de Programação, disponibilizada pelo


professor Carlos Almeida.
Disponível em: <http://www.esenviseu.net/recursos/Download/Tema_26/Apontamentos_TLP_10_
Ano.pdf>. Acesso em: 4 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.

Questão 1: RESPOSTA DISSERTATIVA Questão 2: INDIQUE A ALTERNATIVA CORRETA

Para a manipulação de dados num vetor, é Analise o fragmento de código a seguir e


fundamental que se utilizem os conceitos escolha a alternativa com a sequência que
vistos sobre laços de repetição. Tendo preenche corretamente o vetor de saída.
em vista o que já foi estudado sobre o
para i de 1 até 5 faca
assunto no tema 5, apresente três códigos
a[i]  a[i] + 5
que atribuam valores a um vetor de 10 fimpara
elementos inteiros, usando os comandos
“para”, “enquanto” e “repita”.

125
AGORAÉASUAVEZ ÍNICIO

Antes Depois d) O índice i é incrementado em uma


unidade a cada iteração.
a[1] 12 a[1]
e) Ao final da execução do laço, o vetor y
a[2] 18 a[2]
apresentará o conteúdo original do vetor
a[3] 9 a[3] x e vice-versa.
a[4] 23 a[4]
a[5] 16 a[5] Questão 4: INDIQUE A ALTERNATIVA CORRETA

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.

c) Ao final da execução do laço, o vetor x


será igual ao vetor y.

126
AGORAÉASUAVEZ
Questão 5: INDIQUE A ALTERNATIVA CORRETA Questão 8: RESPOSTA DISSERTATIVA

Analise os dois trechos de código seguintes Construa um algoritmo que busque um


(veja figura). elemento num vetor de 10 elementos
inteiros e que retorne a posição em que ele
Em relação ao exposto, marque a seguir a
está no vetor ou indique quando ele não for
alternativa correta:
encontrado.
a) O Código 1 está incorreto porque não
é possível efetuar cálculo para apresentar
um índice de um vetor. Questão 9: RESPOSTA DISSERTATIVA

b) O Código 1 retorna em x o conteúdo de


Calcule o valor de saída dos elementos dos
y em ordem reversa.
vetores x e y dado pelo código a seguir,
c) O Código 1 está correto e o Código 2 sabendo-se que x = {2, 5, 6, 7, 12} e y = {5,
está incorreto.
3, 6, 1, 2}.
d) O Código 2 está incorreto porque não
é possível somar o conteúdo de dois para i de 1 até 5 faca
vetores. x[i]  x[i] + y[i]
y[i]  x[i] * 5
e) O Código 1 e o Código 2 estão fimpara
incorretos.

Questão 10: RESPOSTA DISSERTATIVA


Questão 6: RESPOSTA DISSERTATIVA

Calcule o valor de saída dos elementos dos


Faça um algoritmo que encontre o maior
elemento de um vetor que contém 10 vetores x e y dado pelo código a seguir,
elementos do tipo inteiro. sabendo-se que x = {2, 5, 6, 7, 12} e y = {5,
3, 6, 1, 2}.

Questão 7: RESPOSTA DISSERTATIVA para i de 1 até 5 faca


x[i]  x[i] + y[4]
Faça um algoritmo que encontre o menor y[i]  x[i] * y[3]
fimpara
elemento de um vetor que contém 10
elementos do tipo inteiro.

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.

CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação – algoritmos. Apostila,


2007. Disponível em: http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/apostila_algoritmos_
Flavia.pdf. Acesso em: 4 jun. 2013.

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.

PIVA JUNIOR, Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de M.;


BIANCHI, Francisco. Algoritmos e Programação de Computadores. Rio de Janeiro, Elsevier,
2012. Livro-Texto 633.

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.

Índice: indicador, ponteiro.

Otimizar: proceder à otimização de; tornar ótimo.

Posição: lugar ocupado por uma coisa ou onde se colocam uma pessoa ou coisa.

Unidimensional: relativo a uma única dimensão.

129
GABARITO ÍNICIO

Tema 6
Estruturas de Dados – Vetores
Questão 1
Resposta:

Comando “para” Comando “enquanto” Comando “repita”

ALGORITMO ALGORITMO ALGORITMO


x vetor[1..10] de inteiro x vetor[1..10] de inteiro x vetor[1..10] de inteiro
i, max inteiro i, max inteiro i, max inteiro
para i de 1 ate 10 faca i1 i1
Leia(x[i]) enquanto ( i <= 10) faca repita
fimpara Leia(x[i]) Leia(x[i])
FIMALGORITMO ii+1 ii+1
fimenquanto ate ( i > 10)
FIMALGORITMO FIMALGORITMO

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)
i1
enquanto (x[i] <> numero) faca
ii+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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Matrizes como estrutura de dados.

• Como a informação pode ser organizada em estrutura composta homogênea e


multidimensional.

• Aplicação e manipulação de matrizes.

137
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Como usar uma matriz para armazenar informação?

• Qual a forma mais adequada de manipular os dados em matrizes?

• Como definir uma matriz?

• Quais tipos de dados podem ser armazenados em uma matriz?

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.

Assim como os vetores, as matrizes também são variáveis compostas homogêneas.


Composta por ser uma variável que contém um número finito de dados e homogênea
porque todos estes são do mesmo tipo. Uma matriz é considerada quadrada quando possui
o mesmo número de linhas e de colunas (Figura 7.1).

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

Fonte: Elaborado pela autora.

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

Tabela 7.1 – Programa que atribui valores para a matriz “a”.

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

Fonte: Desenvolvido pela autora.

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

Fonte: Desenvolvido pela autora.

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

Fonte: Desenvolvido pela autora.

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

Fonte: Desenvolvido pela autora.

Compreender essa manipulação de índices em matrizes é muito importante para o


desenvolvimento correto de muitos métodos matemáticos que são usados em alguns
algoritmos. Considere a necessidade de multiplicar os elementos de duas matrizes. Como
essa operação seria realizada? Qual a primeira análise a ser realizada para verificar a
validade do cálculo? Suponha uma matriz Amxn e uma Bzxv, sendo “m” a dimensão da linha
de A e “n” a de sua coluna, assim como “z” e “v” em B, respectivamente. A multiplicação só
será possível se “n” for igual a “z”, n = z, porque a multiplicação de matrizes é feita por meio
da multiplicação dos elementos da linha de A pelos elementos da coluna de B, somando-se
seu resultado para obter um elemento da matriz resultante. Dessa forma, a quantidade de

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.

As observações mais importantes que você precisa saber sobre matrizes:

• 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.

• Num array, os elementos são armazenados em posições adjacentes de memória.

• 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.

A leitura do Livro-Texto da disciplina é fundamental para consolidar o seu aprendizado. Esse


é o momento para você praticar a manipulação de matrizes.

143
LINKSIMPORTANTES ÍNICIO

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 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.

Acesse a página da TOTVS que apresenta a manipulação de matrizes na linguagem AdvPL.


Disponível em: <http://tdn.totvs.com/pages/viewpage.action?pageId=6063768>. 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.

Questão 1: RESPOSTA DISSERTATIVA para j de 1 até 4 faca


A[2,j]  B[3,j]
Para a manipulação de dados numa
fimpara
matriz/vetor, são importantes os conceitos
estudados sobre vetores. Portanto escreva (veja figura)
um programa que desloque os valores de a) A coluna 2 da matriz A receberá os
um conjunto unidimensional A, tal que A[1] elementos da coluna 3 de B.
= A[2], A[2] = A[3], ..., A[n] = A[1]. Dica: b) A linha 2 da matriz A receberá os
use uma variável auxiliar para não perder elementos da coluna 3 de B.
o conteúdo do primeiro elemento do vetor
c) A linha 2 da matriz A receberá os
e não use outro vetor para realizar essa elementos da linha 3 de B.
tarefa. Faça n = 50.
d) A coluna 2 da matriz A receberá os
elementos da linha 3 de B.
Questão 2: INDIQUE A ALTERNATIVA CORRETA
e) A linha 2 da matriz A receberá os
valores 10,9; 12,6; 18,6 e 14,7.
Analise o fragmento de código a seguir e
escolha a alternativa correta.

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

II – Para ser válida a multiplicação das

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

Desenvolva um algoritmo que gere uma


e) C matriz Anxn = (x i * y), sendo x e y reais e
2 8 14 i um inteiro. Admita que xi e yi, i = 1,...,n
4 10 16 contenham as saídas das sequências
10 14 18 definidas a seguir.

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

Questão 8: RESPOSTA DISSERTATIVA para efetuar o cálculo.


Dado um vetor X com 50 elementos, elabore
para i de 1 até 3 faca
um programa que calcule e que apresente
para j de 1 até 3 faca
os elementos da matriz Y49x2 conforme a
C[i,j]  B[i,j] - A[j,i]
relação apresentada a seguir.
fimpara
y i,1 = x i+1 – x i , i = 1, 2, 3, ...., 49
fimpara
y i,2 = x i+1 + x i , i = 1, 2, 3, ...., 49
A B
1 4 7 1 4 7
Questão 9: RESPOSTA DISSERTATIVA
2 5 8 2 5 8
3 6 9 3 6 9
Calcule o valor de saída dos elementos da
matriz B dado pelo código a seguir, sabendo-
se que a matriz A tem o conteúdo mostrado.
Indique que operação matemática é essa.

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

para i de 1 até 3 faca


para j de 1 até 4 faca
B[j,i]  A[i,j]
fimpara
fimpara

Questão 10: RESPOSTA DISSERTATIVA

Calcule o valor de saída dos elementos


da matriz C, dado pelo código a seguir e
considere os valores das matrizes A e B

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

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.

CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação – algoritmos. Apostila,


2007. Disponível em: http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/apostila_algoritmos_
Flavia.pdf. Acesso em: 4 jun. 2013.

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 2013.

PIVA JUNIOR, Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de M.;


BIANCHI, Francisco. Algoritmos e Programação de Computadores. Rio de Janeiro, Elsevier,
2012. Livro-Texto 633.

150
GLOSSÁRIO
Bidimensional: relativo a duas dimensões.

Compilador: é um programa de sistema que traduz um código descrito em uma linguagem


de programação de alto nível para um programa equivalente em código de máquina para
um processador.

Homogêneo: aquilo que é da mesma natureza que outro, da mesma espécie, da mesma
categoria.

Matriz: um array multidimensional, 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.

Multidimensional: relativo a duas ou mais dimensões.

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

para i de 1 até 3 faca // leitura dos preços dos produtos


para j de 1 até 5 faca
escreva(“Entre com o valor do Produto”, i)
escreva(“no fornecedor”, j)
leia (precos[i,j])
fimpara
fimpara
para i = 1 até i <= 3 faça // leitura das quantidades de cada produto
escreva(“Entre com a quantidade do Produto”, i)
leia(qtde[i])
fimpara
para j = 1 até j <= 5 faça
valor[j] = 0
para i =1 até i <= 3 faça
valor[j] = valor[j] + qtde[i]*precos[i,j]
fimpara
escreva(“Orçamento do fornecedor ”, j)
escreva(“Total ”, valor[j])
fimpara
FIMALGORITMO

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

para I de 1 ate 5 faca


X[I]  (1+(1/I))^I
Y[I]  (I-1)/I
para J de 1 ate 5 faca
A[I,J]  A[I,J] + (X[I]^I)* Y[I]
fimpara
escreva(“A”, I, J, A[I,J])
fimpara
FIMALGORITMO

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

Introdução ao Estudo da Disciplina

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:

Construção de Algoritmos Jeanne Dobgenski

CONTEÚDOSEHABILIDADES
Conteúdos

Nesta aula, você estudará:

• Estruturas de dados heterogêneas - registro.

• Como a informação pode ser organizada em estrutura composta heterogênea.

• Aplicação e manipulação de registros.

159
CONTEÚDOSEHABILIDADES ÍNICIO

Habilidades

Ao final, você deverá ser capaz de responder as seguintes questões:

• Como declarar o tipo de estrutura de dados registro?

• De que forma são definidos os atributos de um registro?

• O que é uma variável que tenha tipo de dado registro?

• 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.

• Usar uma variável que é uma estrutura do tipo registro.

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

Escreva(“Entre com os nomes, preços e números de páginas de três livros”)


para i de 1 ate 3 faca // leitura dos dados
Leia(nome[i], preco[i], paginas[i])
fimpara
Escreva(“Esses foram os dados digitados”)
para i de 1 ate 3 faca
Escreva(nome[i], preço[i], paginas[i])
fimpara
FIMALGORITMO

Fonte: Adaptado de Kanetkar (2008).

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.

Portanto, um registro reúne uma coleção de informações de um objeto, facilitando a sua


organização e o seu uso. Cada informação distinta é considerada um atributo ou campo
do registro. Por sua vez, o atributo pode ser definido como qualquer tipo de dado que a
linguagem utiliza ou como outra estrutura de dados: vetor, matriz ou mesmo outro registro.

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.

Na linguagem VisuALG não existem registros, portanto os exemplos apresentados doravante


serão nas linguagens Pascal ou C. Em Pascal é usado o record e em C, o structure. Na Tabela
8.2 é apresentada a sintaxe de declaração de um registro para armazenar as informações

162
LEITURAOBRIGATÓRIA
do livro, aquela situação-problema indicada no início desse estudo.

Tabela 8.2 – Declaração do registro em Pascal e C – dados do livro.


Pascal C

//declaração do tipo de dado //declaração do tipo de dado


type struct livro
estrutura_livro = record {
nome : char; char nome;
preco : real; float preco;
pagina : integer; int pagina;
end; };

//declaração das variáveis //declaração das variáveis


var struct livro livro1, livro2, livro3;
livro1, livro2, livro3 : estrutura_livro;
//outra opção para declaração de variável
//outra opção para declaração de variável struct livro livro[3];
var
livro : array[1..3] of estrutura_livro;

Fonte: Desenvolvido pela autora.

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

// declaração das variáveis


i inteiro
livro array[1..3] de estrutura_livro

Escreva(“Entre com os nomes, preços e números de páginas de três livros”)


para i de 1 ate 3 faca // leitura dos dados
Leia(livro[i].nome, livro[i].preco, livro[i].paginas)
fimpara
Escreva(“Esses foram os dados digitados”)
para i de 1 ate 3 faca
Escreva(livro[i].nome, livro[i].preco, livro[i].paginas)
fimpara
FIMALGORITMO

Fonte: Adaptado de Kanetkar (2008).

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.

Questão 1: RESPOSTA DISSERTATIVA tipo


circulo = registro
Para a manipulação de dados em registros diametro : real
é importante ter compreendido o que já foi area : real
estudado a respeito de declaração de arrays. fimregistro
Portanto, tendo por base o conhecimento
adquirido sobre vetores, defina uma variável a) Declaração da variável círculo.
vetor que armazene as informações de b) Declara um registro com duas variáveis.
100 alunos indicando seu nome; seu RA e
c) Declara um registro identificado como
sua série. Defina outra variável vetor que
diâmetro.
armazene as informações de seis disciplinas
como o código, descrição e carga horária. d) Declara um registro identificado como
circulo.

Questão 2: INDIQUE A ALTERNATIVA CORRETA e) Declara um registro identificado como


área.
Analise o fragmento de código a seguir e
escolha a alternativa correta.
Questão 3: INDIQUE A ALTERNATIVA CORRETA

Considere o fragmento de código a seguir


e indique a alternativa incorreta.

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.

c) O registro “quadrado” possui dois


atributos do tipo real e dois do tipo “circulo”. Questão 5: INDIQUE A ALTERNATIVA CORRETA

d) As declarações dos registros “círculo” Escolha a alternativa que apresente a


e “quadrado” apenas indicam para o sequência de palavras que completam
compilador a forma dessas estruturas. corretamente as lacunas do parágrafo
e) A declaração do registro “quadrado” seguinte.
está errada porque não é possível declarar “As definições de ___________ não ocupam
um atributo como outro registro. espaço em memória e servem apenas para
que o __________ saiba não só quais são
Questão 4: INDIQUE A ALTERNATIVA CORRETA os ______________ que compõem cada
registro, mas também o tipo de cada um, ou
Classifique cada uma das seguintes seja, a forma da estrutura.”
afirmações em “V” (se verdadeira) ou
“F” (se falsa) e escolha a alternativa que a) tipos, compilador, atributos.
corresponde à sequência correta de b) variáveis, compilador, campos.
indicações. c) tipos, programador, atributos.
I – Um registro reúne uma coleção de
informações de um objeto, facilitando a
sua organização e o seu uso.

167
AGORAÉASUAVEZ ÍNICIO

d) variáveis, programador, campos. Questão 8: RESPOSTA DISSERTATIVA


e) variáveis, programador, atributos. A prefeitura de uma cidade fez uma pesquisa
entre os seus habitantes, coletando dados
Questão 6: RESPOSTA DISSERTATIVA sobre salário, idade, sexo e número de
filhos. Desenvolva um algoritmo que leia
Apresente um algoritmo que utilize registro
os dados de um número indeterminado
para armazenar as informações de um
de pessoas e ao final mostre: a média de
círculo e que permita calcular sua área
idade das mulheres com salários abaixo
(Acirculo = Pi * R2, lembrando que R =
de R$3000,00; a média de salário da
d/2, sendo d = diâmetro) e outro para as
população; a média do número de filhos; o
informações do quadrado (Aquadrado = l *
maior salário; a menor idade.
l, sendo l = lado), que deverá apresentar
a área do círculo inscrito e também do
circunscrito. Dica: observe a estrutura da Questão 9: RESPOSTA DISSERTATIVA
questão 3 e verifique se é possível utilizá-
Escreva um programa para cadastrar 50
la. O lado do quadrado é igual ao diâmetro
clientes de uma loja. As informações
do círculo inscrito, e o diâmetro do círculo
necessárias para o cadastro são: nome,
circunscrito é obtido ao calcular o diâmetro
endereço e telefone. Deve ser usada uma
do quadrado – aplicando-se Pitágoras.
estrutura de registro para a construção
deste cadastro. Após o ato de cadastrar,
Questão 7: RESPOSTA DISSERTATIVA cada cliente deverá ser perguntado se há
necessidade de um novo cadastro. Dica:
Desenvolva um algoritmo que receba a hora
use um vetor do tipo do registro declarado
de início e a hora de término de um jogo,
para armazenar as informações.
sendo ambas divididas em dois valores
distintos: hora e minutos. O programa
deverá determinar a duração do jogo, Questão 10: RESPOSTA DISSERTATIVA
expressando-a de três formas: em hora e
Considere o fragmento de código a seguir
minutos; apenas em minutos; e apenas em
segundos. Considere que o tempo máximo e explique o que é feito.
de duração de um jogo é 24 horas e que
para i = 1 até 15 faca
o jogo pode iniciar num dia e terminar em
se func[i].venda_nov> maior
outro.
então
maior  func[i].venda_nov
pos_maior  i

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.

Lembre-se de que os registros permitem agregar diferentes tipos de informações, podendo


então gerar inúmeras combinações distintas, dando origem a novos tipos de dados. Outro
fator importante que você precisa lembrar é a necessidade de primeiro definir a estrutura
registro que será usada no algoritmo, para então declarar a variável que será desse tipo de
estrutura. É possível, inclusive, declarar uma variável como um array de registro.

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

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.

CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação – algoritmos. Apostila,


2007. Disponível em: <http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/apostila_
algoritmos_Flavia.pdf>. Acesso em: 4 jun 2013.

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 2013.

KANETKAR, Yashavant P. Let us C. Nova Deli, Infinity Science Press LLC, 2008

PIVA JUNIOR, Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de M.;


BIANCHI, Francisco. Algoritmos e Programação de Computadores. Rio de Janeiro, Elsevier,
2012. Livro-Texto 633.

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.

Declarar: o ato de mostrar claramente, esclarecer, revelar, dar a conhecer ou explicar.

Registro: estruturas que podem agregar diferentes informações.

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:

Tipo aluno = registro


RA, serie: inteiro
nome : vetor[1..50] de caracter
fimregistro

Tipo disciplina = registro


codigo, cargah : inteiro
descricao : vetor[1..100] de caracter
fimregistro

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

// declaração das estruturas


tipo
circulo = registro
diametro : real
area : real
fimregistro

quadrado = registro
lado : real
area : real
cinscrito : circulo
ccircunscrito : circulo
fimregistro

//declaração das variáveis


figura quadrado
lado, d, PI real

escreva(“Entre com o valor do lado do quadrado”)


leia(lado)
PI  3,141593

// calculo das áreas das figuras


figura.lado  lado
figura.area  lado * lado
figura.cinscrito.diametro  lado
figura.cinscrito.area  (PI * lado * lado)/4
d = sqrt(2 * lado * lado) // calculo do diâmetro do círculo circunscrito
figura.circunscrito.diametro  d
figura.cinscrito.area  (PI * d * d)/4

// Escreve a área das figuras e o diâmetro dos círculos inscrito e circunscrito


escreva(“ A área e o lado do quadrado, em cm, são respectivamente”)
escreva(figura.area, figura.lado)
escreva(“ A área e o diâmetro do círculo inscrito, em cm, são respectivamente”)
escreva(figura.cinscrito.area, figura.cinscrito.diametro)
escreva(“ A área e o diâmetro do círculo circunscrito, em cm, são respectivamente”)
escreva(figura.cinscrito.area, figura.circunscrito.diametro)
FIMALGORITMO

173
GABARITO ÍNICIO

Questão 7
Resposta:
// declaração da estrutura
tipo horario = registro
hora_ini, min_ini, hora_fim, min_fim: REAL
fimregistro

//declaração das variáveis


tempo: horario;
hora_total,min_total,min,seg: REAL

// leitura dos dados


REPITA
ESCREVA(‘Digite a hora inicial do jogo: ‘)
LEIA(tempo.hora_ini)
ATE (tempo.hora_ini <= 24) E (tempo.hora_ini > 0)

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)

SE (tempo.min_fim < tempo.min_ini)


ENTÃO
tempo.min_fim  tempo.min_fim + 60
tempo.hora_fim  tempo.hora_fim - 1
FIMSE

SE (tempo.hora_fim < tempo.hora_ini)


ENTÃO tempo.hora_fim  tempo.hora_fim + 24

174
GABARITO
FIMSE

hora_total  tempo.hora_fim - tempo.hora_ini


min_total  tempo.min_fim - tempo.min_ini
min  hora_total * 60 + min_total
seg  min * 60

ESCREVA(“Duração do jogo em hora e minutos, respectivamente ”, hora_total, min_total)


ESCREVA(“Duração do jogo em minutos ”, min)
ESCREVA(“Duração do jogo em segundos ”, seg)
FIMALGORITMO

Questão 8
Resposta:
// declaração da estrutura
Tipo p = registro
idade, filhos: inteiro
salario: real
sexo: caracter
Fimregistro

//declaração das variáveis


pessoa: p
media_id, media_sa1, media_sa2: real
media_fi, maior_sa, soma_sa1, soma_sa2, soma_fi: real
menor_id, cont1, cont2: real

//inicialização das variáveis


soma_sa1  0
soma_sa2  0
soma_fi  0
cont1 0
cont2  0
menor_id  0
maior_sa  0
ESCREVA(“Digite a idade da pessoa: “)
LEIA(pessoa.idade)

// o programa terminará quando a idade digitada for zero ou um número negativo

175
GABARITO ÍNICIO

ENQUANTO (pessoa.idade > 0) FACA


ESCREVA(“Digite a salário da pessoa: “)
LEIA(pessoa.salario)
ESCREVA(“Digite o sexo da pessoa (M ou F): “)
LEIA(pessoa.sexo)
ESCREVA(“Digite o número de filhos da pessoa: “)
LEIA(pessoa.filhos)

soma_sa1  soma_sa1 + pessoa.salario


cont1cont1 + 1
soma_fi  soma_fi + pessoa.filhos

SE (pessoa.sexo = “F”) E (pessoa.salario < 3000)


ENTÃO
soma_sa2  soma_sa2 + pessoa.salario
cont2  cont2 + 1
FIMSE
SE (cont1 = 1)
ENTÃO maior_sapessoa.salario
SENÃO SE (pessoa.salario > maior_sa)
ENTÃO maior_sa / pessoa.salario
FIMSE
FIMSE
SE (cont1 = 1)
ENTÃO
SENÃO SE (pessoa.idade < menor_id)
ENTÃO menor_id  pessoa.idade
FIMSE
FIMSE

ESCREVA(“Digite a idade da pessoa: “)


LEIA(pessoa.idade)
FIMENQUANTO

SE (cont2 > 0)
ENTÃO media_sa2 soma_sa2 / cont2
SENÃO media_sa20
FIMSE

ESCREVA(“Média de salários das mulheres com salário inferior a R$ 3000,00: “,media_sa)


SE (cont1 > 0)

176
GABARITO
ENTÃO
media_sa1soma_sa1 / cont1
media_fi  soma_fi / cont1
SENÃO
media_sa1 0
media_fi0
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

//declaração das variáveis


cliente : vetor [1..50] de cadastro
i,x : inteiro
resp : caracter
teste : logico

i0
escreva (“Cadastro de Clientes”)

repita
ii+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:

• A maior venda entre todas as ocorridas nos três meses.

• Qual registro obteve a maior marca.

• Qual mês em que ocorreu a maior venda.

179

Вам также может понравиться