Prévia do material em texto
Universidade do Contestado
Curso de Sistemas de Informação
Disciplina de Lógica de Programação
Lógica para o Desenvolvimento de
Algoritmos e Programas de Computador
Prof. Zorzo, Carlos Alberto
Caçador, Junho/2013.
Lógica para o Desenvolvimento de
Algoritmos e Programas de Computador
Tal apostila não tem a presunção de substituir qualquer
referência indicada na bibliografia da disciplina.
Ela é tão somente uma compilação das notas de aula do professor,
servindo a mesma como guia e material de apoio.
Material mais completo e abrangente está indicado na bibliografia
constante no Plano de Ensino da Disciplina em anexo.
1. Introdução
2. Lógica de Programação:
2.1 Lógica
2.2 Seqüência Lógica
2.3 Instruções
3. Algoritmos:
3.1 Conceito
3.2. Exemplos
3.3 Formas de Representação:
3.3.1 Descrição Narrativa
3.3.2 Fluxograma ou Diagrama de Blocos
3.3.3 Pseudocódigo
3.4 Método de Construção
3.5 Exercícios
4. Construção de Algoritmos em Pseudocódigo:
4.1 Conceitos e Estruturas básicas:
4.1.1 Estrutura de um algoritmo
4.1.2 Tipos de Dados
4.1.3 Variáveis
4.1.4 Constantes
4.1.5 Expressões
4.1.6 Instruções/Comandos Primitivos
4.1.7 Exercícios
4.2 Estruturas de Seleção:
4.2.1 Estrutura de Seleção Simples
4.2.2 Estrutura de Seleção Composta
4.2.3 Estrutura de Seleção Encadeada
4.2.4 Estrutura de Seleção de Múltipla Escolha
4.2.5 Exercícios
4.3 Estruturas de Repetição:
4.3.1 Estrutura de Repetição com Variável de Controle
4.3.2 Estrutura de Repetição com Teste no Início
4.3.3 Estrutura de Repetição com Teste no Final
4.3.4 Exercícios
4.4 Tipos Estruturados de Dados:
4.4.1 Vetores
4.4.2 Matrizes
4.4.3 Exercícios
4.5 Subprogramação:
4.5.1 Procedimentos
4.5.2 Funções
4.5.3 Parâmetros e Escopo de Variáveis
4.5.4 Exercícios
4.6 Recursividade:
4.7 Alocação Dinâmica de Memória :
4.8 Arquivos de Dados:
4.8.1 Arquivos Tipo Texto
4.8.2 Arquivos Tipo Registro
4.9 Modularização e Reusabilidade (Units) :
5. Anexos
5.1 Plano de Ensino da Disciplina
1. Introdução:
Para que os computadores tenha alguma utilidade para os seres
humanos, eles devem ser programados para a realização de tarefas específicas.
Desta forma, para que um computador possa ser usado como máquina de
automatização de tarefas o mesmo precisa ser alimentado com orientações claras
e precisas de como resolver determinada tarefa. Este conjnto de orientações
claras e precisas fornecidas ao computador em uma linguagem por ele intelegível
é conhecido como um “Programa de Computador” e a área da Ciência da
Computação que que trata do estudo e desenvolvimento de metodologias e
técncias para a construção de programas, bem como estudo e desenvolvimento
de linguagens para tal finalidade, é denominada de Programação de
Computadores. Por outro lado, o desenvolvimento de programas de computador
normalmente está baseado em uma lógica que, sem se preocupar com uma
linguagem de programação específica, especifica através de um formalismo claro
e preciso as operações a serem desenvolvidas pelo computador na
automatização de uma tarefa. Tal apostila tem por objetivo introduzir os conceitos
básicos de um formalismo de especificação de lógica de programação de
computadores utilizando um pseudocódigo (não entendível diretamente pelo
computador) através da metodologia de programação estruturada.
2. Lógica de Programação:
2.1 Lógica:
A lógica de programação é necessária para as pessoas que desejam
trabalhar com o desenvolvimento de sistemas e programas de computador e
permite definir as instruções que serão executadas pelo computador dentro de
uma seqüência lógica. Desta forma, pode-se definir a lógica de programação
como a técnica de encadear pensamentos para atingir determinado objetivo.
2.2 Seqüência Lógica:
Estes pensamentos devem ser descritos como um seqüência de
instruções ou passos que devem ser seguidos para se cumprir uma determinada
tarefa. Desta forma, uma seqüência lógica pode ser entendida como um conjunto
de passos que devem ser seguidos até se atingir um objetivo ou a solução de um
problema.
2.3 Instruções:
Em informática uma instrução é uma informação que indica ao
computador uma ação elementar a executar. Deve-se ressaltar neste ponto, que
uma ordem ou ação isolada normalmente não permite a especificação de todas
as instruções para se atingir um objetivo ou realizar uma tarefa completa sendo,
para isto, necessário um conjunto de instruções colocadas em uma certa
seqüencia lógica. Por exemplo, se quisermos fazer um omelete de batatas,
precisaremos colocar em prática uma série de instruções: descascar as batatas,
bater os ovos, fritar as batatas, etc, etc. É evidente também que essas instruções
devem ser executadas em uma ordem adequada (não se pode descascar as
batatas depois de fritá-las).
Dessa maneira, uma instrução tomada isoladamente e em separado não
tem muito sentido e, para obtermos o resultado desejado, normalmente
precisamos colocar em prática o conjunto de todas as instruções na ordem
correta.
Convém ressaltar também, que este conjunto de instruções, quando
especificado em uma linguagem de programação é entendido como um Programa
de Computador, ao passo que quando especificado através de um formalismo
para especificação de lógica de programação, sem estar atrelado a uma
linguagem de programação específica, é entendido como um Algoritmo. Em
suma, os programas de computadores nada mais são do que algoritmos escritos
numa linguagem específica de programação de computadores como Pascal, C,
Delphi, Java e Visual Basic entre outras e que são interpretados e executados por
um computador.
3. Algoritmos:
3.1 Conceito:
Um algoritmo é, formalmente, uma seqüência finita de passos que levam
a execução de uma tarefa, ou seja, a atingir um objetivo. Nesta pequena definição
de algoritmo deve-se notar a existência de três idéias básicas:
1. Seqüência: uma ordem de execução das instruções;
2. Finita: a seqüência de passos a serem executados deve ser finita; e
3. Objetivo: um algoritmo é desenvolvido para se atingir um determinado
objetivo.
Além disso, um algoritmo deve possuir garantia de repetibilidade, ou seja,
toda ver que ele for executado, a partir dos mesmos dados, deverá produzir o
mesmo resultado.
De forma genérica, os algoritmos não são específicos da área da Ciência
da Computação e pode-se pensar em algoritmos como uma receita de bolo,
instruções para se chegar à Universidade, orientações passo a passo para se
ligar um vídeo cassete, etc. Até mesmo as coisas mais simples, podem ser
descritas por seqüências lógicas, como por exemplo chupar uma bala (pegar a
bala, retirar o papel, colocar a bala na boca, chupar a bala enquanto ela não
terminar, jogar o papel no lixo). Qual é o problema com este pequeno algoritmo de
5 passos?
Como um algoritmo é a solução para um problema especificado através
de uma seqüência lógica e geralmente existem várias soluções possíveis para um
problema, um algoritmo é um possível caminho para a solução de um problema, e
em geral, os caminhos que levam a uma solução são muitos.
Finalmente, pode-se dizer que o aprendizado de algoritmos não se
consegue a não ser através de muitos exercícios e, em suma:
Algoritmos não se aprende:
Copiando Algoritmos
Estudando Algoritmos
Algoritmos só se aprendem:
Construindo Algoritmos
TestandoAlgoritmos
3.2. Exemplos:
Alguns exemplos de algoritmos podem ser vistos abaixo:
Receita de Bolo:
Misturar os ingredientes
Untar a forma com manteiga
Despejar a mistura no forno
Levar a forma ao forno
Deixar assar durante 30 minutos
Retirar do forno
Deixar esfriar
Trocar Pneu Furado de um carro:
Afrouxar ligeiramente as porcas
Suspender o carro
Retirar as porcas e o pneu furado
Colocar o pneu reserva
Apertar as porcas
Abaixar o carro
Dar o aperto final nas porcas
Tomar Banho:
Entrar no banheiro e tirar a roupa
Abrir a torneira do chuveiro
Entrar na água
Ensaboar-se
Sair da água
Fechar a torneira
Enxugar-se
Vestir-se
Como um leitor atento, tente identificar as diferenças entre os dois
algoritmos abaixo que tem por objetivo “lavar o cabelo”?
Algoritmo 1 Algoritmo 2
Molhar o cabelo
Colocar xampú
Massagear
Enxaguar
Secar o cablo
Abrir a torneira do chuveiro
Entrar na água
Molhar o cabelo
Abrir o xampú
Colocar um pouco na mão
Levar à cabeça
Massagear
Enxaguar
Sair da água
Fechar o chuveiro
Secar o cabelo
Pode-se notar que os dois algoritmos abaixo atendem aos requisitos de
definição de um algoritmo: são seqüências, são finitos e possuem um objetivo. A
diferença básica entre os dois es tá no seu nível de detalhamento ou abstração.
Em suma, o segundo algoritmo é muito mais detalhado que o primeiro,
fornecendo assim, orientações bem mais precisas a quem for executar o
algoritmo. Deve-se ter em mente que o desenvolvimento dos algoritmos deve-se
dar num nível de detalhamento mínimo que permita às pessoas executá-los para
atingir seus objetivos.
3.3 Formas de Representação:
Como visto, os algoritmos são representações formais do raciocínio a ser
seguido para a automatização de uma tarefa e, para tanto, existem formalismos
que devem ser seguidos para a sua especificação. Os principais formalismos
utilizados para se especificar algoritmos são: “Descrição Narrativa”, “Fluxograma”
ou “Diagrama de Blocos” e “PseudoCódigo”.
3.3.1 Descrição Narrativa:
Esta forma de especificação de algoritmos é dada em linguagem natural
estando, portanto, impregnada com problemas de má interpretação,
ambiguidades e imprecisões. Com exemplo, tem-se o algoritmo abaixo para
“trocar o pneu furado de um carro”:
Afrouxar ligeiramente os parafusos (*)
Suspender o carro
Retirar os parafusos e o pneu
Colocar o pneu reserva
Apertar os parafusos
Abaixar o carro
Dar o aperto final nos parafusos
No exemplo acima, pede-se ao leitor qual a sua interpretação para a
instrução “Afrouxar ligeiramente os parafusos”. Nota-se, neste caso, que a
execução desta instrução dá margem à várias interpretações. O que significa para
o leitor a palavra “ligeiramente”? Para fins de uma boa execução do algoritmo
abaixo, tal instrução deveria ser especificada de forma mais precisa como, por
exemplo, “Afrouxar os parafusos girando-os 30° graus no sentido anti-horário”.
Em função destes problemas de má interpretação, ambiguidades e imprecisões,
próprios da linguagem natural, outros formalismos são mais apropriados para a
especificação de algoritmos do que a descrição narrativa em linguagem natural.
3.3.2 Fluxograma ou Diagrama de Blocos:
O Fluxograma ou Diagrama de Blocos é uma das formas mais populares
para a especificação de algoritmos, sendo uma forma padronizada e eficaz para
representar os passos lógicos de um determinado processamento através de
formas geométricas diferentes que especificam ações diferentes. Com ele define-
se uma seqüência de símbolos com significados específicos, facilitando, desta
forma, a visualização dos passos de um processamento. Além disso, o
Fluxograma ou Diagrama de Blocos constituie-se numa forma mais precisa do
que a Descrição Narrativa para especificar algoritmos.
3.3.3 Pseudocódigo:
Algoritmos também podem ser descritos através de um formalismo
chamado Pseudocódigo, sendo conhecido também por PseudoLinguagem,
Português Estruturado ou Portugol. Este nome, pseudocódigo, é uma alusão à
posterior necessidade de implementação do mesmo em uma linguagem de
programação específica, uma vez que o mesmo não é executável diretamente
pelo computador. Desta forma, algoritmos em pseudocódigo (ou qualquer um dos
outros formalismos anteriormente citados) são independentes das linguagens de
programação, sendo intermediários entre a linguagem falada e uma linguagem de
programação. O pseudocódigo é uma representação genérica e bem aceita para
a especificação de algoritmos e permite uma tradução praticamente direta para
programas de computador na Linguagem Pascal ou C (linguagens muito
utilizadas para o ensino de programação).
Um exemplo de algoritmo em pseudocódigo pode ser visto abaixo:
ALGORITMO média
VAR
n1, n2, n3, média: REAL
INÍCIO
LEIA (n1,n2,n3)
média (n1 + n2 + n3 ) / 3
SE média >= 7 ENTÃO
ESCREVA ("Aluno Aprovado")
SENÃO
ESCREVA ("Aluno Reprovado")
FIM SE
FIM
Dentro do escopo desta apostila, o pseudocódigo foi escolhido como
formalismo para a especificação de algoritmos por não possuir os problemas
inerentes do formalismo de Descrição Narrativa; ser padronizado e intelegível
tanto sintática quanto semanticamente; permitir a elaboração de algoritmos
estruturados; ser simples e enxuto e, a despeito disto, permitir a representação
clara e precisa da lógica para a resolução de problemas, bem como por facilitar a
codificação dos algoritmos nas linguagens de programação Pascal e C.
3.4 Método de Construção:
Como visto, um algoritmo é uma seqüência lógica de instruções que são
executadas para se atingir um objetivo. A construção de um algoritmo, consiste
basicamente, na especificação de instruções para as fases de:
1. Entrada: corresponde a fornecer ao algoritmo os dados básicos
necessários para a resolução do problema (normalmente estes dados
serão usados pelo algoritmo para realizar os cálculos e comparações
necessárias na etapa de processamento);
2. Saída: corresponde à geração dos resultados do algoritmo para o
usuário; e
3. Processamento: é a etapa intermediária do algoritmo onde os dados
de entrada, normalmente fornecidos pelo usuário, são transformados
nos dados de saída.
Em suma, pode-se sugerir o algoritmo abaixo como um método inicial
para a especificação de algoritmos:
(1) Ler atentamente o enunciado;
(2) Retirar do enunciado a relação dos dados de entrada;
(3) Retirar do enunciado a relação dos dados de saída;
(4) Determinar o processamento a ser feito para transformar as
entradas em saídas;
(5) Construir o Algoritmo usando o formalismo;
(6) Executar o Algoritmo ( Teste de Mesa ).
Após o desenvolvimento de um algoritmo, o mesmo deverá sempre ser
testado. Este teste é chamado de TESTE DE MESA e implica em seguir e
executar uma a uma as instruções do algoritmo de maneira precisa para verificar
se o procedimento utilizado está correto ou não.
3.5 Exercícios:
1) Identifique as fases de um algoritmo para resolver a equação (Y=X2+2X+10),
bem como as instruções em cada uma delas (exercício resolvido).
Entradas: valor de X
Saídas: valor de Y
Processamento:
(1) Elevar X ao quadrado
(2) Multiplicar X por 2
(3) Somar o resultado de X elevado ao quadrado com o resultado de
X multiplicado por 2
(4) Somar o resultado da operação 3 com o valor 10
2) Identifique as etapas, bem como suas instruções, de um algoritmo que calcule
o valor da mensalidade que um aluno deve pagar. Para tanto, o usuário possui
como informações o nome do aluno, número de créditos que ele faz e o valor
unitário do crédito. O algoritmo deverá imprimir o nome do aluno e o valor da
mensalidade que este deve pagar.3) Quais instruções são necessárias para construir um algoritmo que calcule a
média aritmética de um aluno com 5 notas.
4) Identifique as instruções para construir um algoritmo que calcule a média
ponderada de um aluno com 3 notas. A fórmula de cálculo com os respectivos
pesos é a seguinte: média = ( 3*nota1 + 4*nota2 + 2*nota3 ) / 9. O usuário possui
como dados o nome do aluno e suas 3 notas e gostaria de ter como resultado
final o nome e a média final do aluno.
5) O preço de um automóvel é calculado pela soma do preço de fábrica com o
preço dos impostos (45% do preço de fábrica) e com a porcentagem dos
vendedores (28% do preço de fábrica). Identifique as instruções de um algoritmo
que forneça ao usuário o nome do automóvel e seu preço final.
4. Construção de Algoritmos em Pseudocódigo:
4.1 Conceitos e Estruturas básicas:
4.1.1 Estrutura de um algoritmo:
Na especificação de um algoritmo em Pseudocódigo é necessário o
estabelecimento de uma estrutura a fim de organizar o mesmo em seções. Os
algoritmos desenvolvidos em pseudocódigo possuem a seguinte estrutura:
ALGORTIMO <nome do algoritmo>
<área de declarações>
INÍCIO
<área de instruções>
FIM
Dentro desta estrutura tem-se as seguintes definições e espaços para
códigos específicos:
ALGORTIMO: palavra reservada para indicar o início de um algoritmo;
nome do algoritmo: é somente um nome simbólico dado ao algoritmo
com a finalidade de distingui-lo dos demais;
área de declarações: espaço designado para a declaração das
informações (variáveis, constantes, tipos de dados do usuário,
procedimentos e funções) que serão usadas na seqüência lógica de
instruções do algoritmo;
INÍCIO e FIM: palavras reservadas que delimitam o início e o fim da
seqüência lógica de instruções ou do algoritmo; e
área de instruções: espaço designado para a especificação da
seqüência lógica de instruções do algoritmo que será executada para
se atingir seu objetivo.
4.1.2 Tipos de Dados:
O computador, através de um algoritmo, manipula um conjunto de
informações através de uma seqüência lógica de instruções com a finalidade de
atingir um objetivo. Desta forma, pode-se dizer que a matéria prima com a qual o
computador trabalha são as informações que estão na sua memória (local de
armazenamento). Estas informações, por sua vez, podem ser de dois tipos:
Instruções: são aquelas informações que comandam o funcionamento
do computador e determinam como os dados devem ser tratados; e
Dados: são aquelas informações processadas pelas instruções do
computador.
Como exemplo, poderíamos pensar em uma instrução de soma que
opera uma adição sobre dois valores ou dados. Em suma, pode-se dizer então
que um algoritmo nada mais é do que a especificação de uma seqüência lógica
de instruções que manipulam dados a fim de atingir um determinado objetivo.
O formalismo para especificação de lógica de programação chamado
Pseudocódigo, adotado nesta apostila, permite ao computador manipular três
tipos diferentes de dados:
Numéricos: são aqueles dados representados por números e que serão
utilizados pelas instruções do algoritmo para cálculos. Estes, podem ser
divididos em Dados Numéricos Inteiros (armazenam dados que não
possuem componente decimal) e Dados Numéricos Reais (armazenam
dados que possuem componente decimal);
Alfanuméricos: são também conhecidos por dados caracter ou string e
são aqueles dados representados por um conjunto de caracteres
alfanuméricos e/ou especiais. Estes dados possuem um comprimento
dado pelo número de caracteres nele contido e, em algoritmos, são
delimitados por aspas duplas ( “<dado alfanumérico>”); e
Lógicos: são também conhecidos por dados booleanos e podem
representar somente dois tipos de informação: Verdadeiro ou Falso.
Os dados manipulados por um algoritmo em pseudocódigo devem ser
classificados como sendo de um dos tipos definidos acima (ou de outros tipos que
serão explicados posteriormente), sendo tal operação de classificação, feita no
momento da declaração de variáveis (posições de memória que armazenarão os
dados).
4.1.3 Variáveis:
Todos as informações manipuladas pelo computador devem estar em um
local onde o mesmo possa acessá-las. Tal local, utilizado pelo computador para
armezenar tanto instruções a serem executadas quanto dados, é chamado de
memória (mais especificamente memória primária ou RAM – existem outros tipos
de memória que não fazem parte do escopo desta apostila). Para fins únicos de
programação de computadores vamos nos ater também somente ao
armazenamento e manipulação de dados em memória (a manipulação e
tratamento de instruções em memória é um tópico melhor abordado em
disciplinas como Compiladores).
A memória do computador pode ser entendida como um conjunto
ordenado de caixas ou células, todas de igual tamanho e cada uma delas
identificada por um endereço distinto e que, num dado momento, armazenam
algum tipo de dado que poderá ser manipulado pelo computador através da
seqüência lógica de instruções especificadas pelo algoritmo. Por outro lado,
dados diferentes podem ter tamanhos diferentes (um dado numérico real ocupa
mais espaço que um dado numérico inteiro). Desta forma, um dado pode ocupar
mais de uma célula de memória, dependendo do seu tipo. Assim, para que o
computador possa acessar um dado na memória, ele deverá saber o seu
endereço de início (endereço da célula de início) e o seu tamanho, recuperando
assim, a partir do endereço inicial de memória, a quantidade de total células
usadas para armenar aquele dado. Desta forma, seria necessário que, em nossos
programas, especificassemos os endereços iniciais de onde estão armazenados
cada um dos dados que o computador poderia manipular. O endereçamento de
posições de memória através de números hexadecimais é perfeitamente
compreendido pela máquina, sendo entretanto, uma tarefa complicada para os
programadores.
Para evitar a manipulação de endereços em notação hexadecimal,
facilitando assim a manipulação das posições de memória, as linguagens de
programação permitem especificar diferentes nomes a cada conjunto de células
que armazenam um determinado dado. Desta forma, os programadores ficaram
livres de trabalhar com os endereços físicos (números hexadecimais) e passaram
a trabalhar com endereços lógicos, ou seja, os nomes dados por eles próprios a
um conjunto de células que armazenam um dado. À estes endereços lógicos de
memória que irão armazenar dados dá-se o nome variável. Desta forma, uma
variável pode ser entendida como um posição lógica de memória (composta de
uma ou mais células físicas, dependendo do tipo do dado armazenado)
representada por um nome simbólico dado pelo programador que será usado
para acessar e manipular o dado nele contido.
A fim de atender o objetivo para a qual foi proposta, uma variável possui
três atributos:
Nome: é a representação simbólica do conjunto de endereços de
memória, sendo o mesmo, utilizado para se acessar e manipular o dado
nele contido. A especificação de um nome para uma variável deveria
serguir algumas regras lógicas, quais sejam: o nome deverá começar
por uma letra, podendo ser seguido por outras letras e/ou números; não
é permitido o uso de caracteres especiais (exceto o underline “ _”); deve
ter um número limitado de caracteres e, principalmente, o nome deve
estar relacionado com o significado, para o programa, do dado que ele
contém.
Tipo de Dado: uma variável só poderá armazenar informações de um
mesmo tipo e, para tanto, deverá ser definido qual o tipo da informação
uma variável armazena. Desta forma, o tipo de dado associado a uma
variável definirá a natureza da informação nela contida, podendoa
mesma ser numérica (inteira ou rel), alfanumérica ou lógica. Além disso,
a associação de um tipo de dado a uma variável delimitará a
quantidade de células físicas que a mesma ocupará na memória. Por
outro lado, a informação do tipo de dado associado com uma variável
será usada pelo compilador para a verificação semântica do programa.
Informação: é o conteúdo propriamente dito da variável. A associação
de um conteúdo a uma variável deverá obedecer a restrição imposta
pela definição do tipo de dado da variável.
Para fins de desenvolvimento de um algoritmo ou programa de
computador, todas as variáveis usadas por ele devem ser formalmente
explicitadas ao computador, correspondendo, tal ação, à declaração de variáveis.
Assim sendo, a declaração de variáveis é obrigatória para todas as variáveis
usadas por um algoritmo e deve ser especificada, segundo uma sintaxe que difere
de linguagem para linguagem, na <área de declarações> do algoritmo. Mais
especificamente, uma declaração de variável consiste em reservar o espaço de
memória para a mesma, associando a este espaço um nome e um tipo de dado.
No pseudocódigo aqui adotado, a declaração de variáveis segue a
seguinte sintaxe:
ALGORTIMO <nome do algoritmo>
VAR
Nome da variável : Tipo de dado associado
INÍCIO
<área de instruções>
FIM
No caso da existência de várias variáveis de um mesmo tipo, pode-se
fazer uma única associação de tipo às várias variáveis através da separação das
mesmas através de uma vírgula.
4.1.4 Constantes:
As constantes, juntamente com as variáveis, são os elementos básicos
que um programa manipula. Assim como uma variável, uma constante também é
um endereço lógico de memória para se armazenar um determinado dado. A
diferença básica é que um determinado endereço lógico de memória declarado
como constante conterá um valor que não poderá ser alterado durante a
execução do programa. Uma constante também possui os atributos nome, tipo de
dado e informação, da mesma forma que uma variável, e a especificação do seu
nome deverá serguir as mesmas regras usadas na especificação de nomes de
variáveis. Além disso, constantes também devem ser declaradas na <área de
declarações> do algoritmo, da seguinte forma:
ALGORTIMO <nome do algoritmo>
CONST
Nome da constante : Valor inicial
VAR
Nome da variável : Tipo de dado associado
INÍCIO
<área de instruções>
FIM
4.1.5 Expressões:
Uma expressão pode ser entendida como um conjunto de operandos
que, relacionando-se por meio de operadores, compõe uma fórmula que, uma vez
avaliada, resultará num valor. Como exemplo conhecido de uma expressão,
podemos ter uma fórmula matemática. Na confecção de algoritmo e programas,
podemos ter expressões aritméticas ou lógicas que diferem entre sí no tipo de
operandos/operadores e no tipo de dado do valor resultante de sua avaliação.
Expressões Aritméticas e Operadores:
Expressões aritméticas são aquelas que possuem como operandos
variáveis e/ou constantes numéricas combinados através de operadores
aritméticos, resultando, após a sua avaliação, em um valor do tipo numérico
(inteiro ou real). A tabela de operadores aritméticos, com seu grau de prioridade,
é dada abaixo:
Operador Operação Prioridade
** Exponenciação 1
* Multiplicação 2
/ Divisão 2
+ Adição 3
- Subtração 3
Quando da avaliação de uma expressão aritmética, o computador segue
uma ordem de prioridade para os operadores, conforma a tabela acima.
Entretanto, para operadores de mesma prioridade, será avaliado aquele que for
encontrado primeiro, da esquerda para a direita, na avaliação da expressão. A fim
de quebrar esta hierarquia pré-definida de operadores, pode-se fazer uso dos
parênteses, da mesma forma que nas equações matemáticas.
Expressões Lógicas e Operadores:
Expressões lógicas são aquelas que possuem como operandos relações
e/ou variáveis e/ou constantes do tipo lógico combinados através de operadores
lógicos e/ou relacionais, resultando, após a sua avaliação, em um valor do tipo
lógico (verdadeiro ou falso).
Os operadores relacionais são usados para fazer comparações entre
elementos (variáveis e/ou constantes) de um mesmo tipo de dado, retornando um
valor verdadeiro ou falso. Os operadores relacionais, bem como seus
relacionamentos de prioridade, são dados na tabela abaixo:
Operador Operação
= Igual
<> Diferente
> maior que
< menor que
> = maior ou igual a
< = menor ou igual a
Os operadores lógicos são usados para combinar resultados de
expressões, realizando operações de álgebra booleana, implicando em um
resultado final como um valor verdadeiro ou falso. Os operadores lógicos, bem
como seus relacionamentos de prioridade, são dados na tabela abaixo:
Operador Operação Prioridade
NÃO Negação 1
E Conjunção 2
OU Disjunção 3
Por outro lado, o funcionamento dos operadores lógicos é detalhado pela
tabela verdade abaixo:
A B NÃO A NÃO B A E B A OU B
V V F F V V
V F F V F V
F V V F F V
F F V V F F
Em suma, pode-se dizer que uma expressão combinada através do
operador lógico “E” tem como resultado final verdadeira (V) somente se todas as
expressões forem verdadeiras. Por outro lado, uma expressão combinada através
do operador lógico “OU” tem como resultado final verdadeira (V) se, pelo menos,
uma das expressões for verdadeira. Finalmente, o operador lógico “NÃO” inverte
o valor lógica da expressão.
4.1.6 Instruções/Comandos Primitivos:
A manipulação de dados por um algoritmo é feita através da
especificação de instruções que os manipulam. Dentro o conjunto de instrução do
pseudocódigo, ou de uma linguagem de computador, são consideradas instruções
ou comandos primitivos aquelas que efetuam as tarefas essenciais para a
operação dos computadores, como a entrada e saída de dados e a movimentação
dos mesmos para a memória. São eles, os comandos de atribuição e de entrada
e saída de dados.
Comando de Atribuição:
Quando definimos uma variável, para a manipulação por nosso algoritmo,
é natural que queiramos atribuir a ela algum valor. Uma das formas de atribuir um
valor a uma variável e, consequentemente colocar este dado para dentro da
memória do computador, é através de uma atribuição direta do valor desejado
para a variável. Para tanto, utiliza-se o símbolo de atribuição ( ) que indica
que o valor (ou o resultado da avaliação de uma expressão) que está à direita do
símbolo de atribuição será colocado na posição de memória indicada pela variável
que está a esquerda do símbolo, conforme a sintaxe abaixo:
Nome da Variável Valor ou Expressão
Deste momento em diante, o acesso àquele valor se dará através da
invocação do nome da variável. Deve-se ter em mente que, como uma variável
possui um tipo de dado associado, o valor ou resultado da avaliação de uma
expressão a ser atribuido àquela variável deverá ser, obrigatoriamente, do tipo de
dado definido para a variável. Uma exceção a esta restrição é o conceito de
coerção, ou seja, a possibilidade de associação de um valor inteiro a uma variável
do tipo numérico real.
Como exemplo poderíamos ter as seguintes atribuições:
A .V.
Resultado 5 = 3
B 5 + 13/4
Sexo "M"
Dolar 1,98
Nome "JOSE"
Comandos de Entrada e Saída de Dados:
O computador não é uma máquina isolada e precisa interagir com o
mundo exterior, quer seja para receber dados fornecidos por um usuário,
colocando-os na memória, quer seja para fornecer ao usuário os resultados de
seus processamentos. Isto é feito através dos comandos primitivos de entrada e
saída de dados.
Os comandos de saída de dados são a forma pela qual informações
contidasem sua memória são colocadas em um dispositivo de saída (vídeo,
impressora, etc) para que o usuário possa apreciá-las. A sintaxe de um comando
de saída é dada abaixo:
ESCREVA ( variável/constante/expressão/literal )
Este comando gera uma saída no vídeo que poderá ser o valor de uma
variável, uma constante, o resultado da avaliação expressão, um literal (conjunto
de caracteres delimitados por aspas) ou qualquer combinação deste elementos
deste que separados por vírgula.
Por outro lado, os comandos de entrada de dados são a forma pela qual
dados são fornecidos ao computador através de dispositivos de entrada
(inicalmente somente através do teclado) e armazenados em sua memória, nas
variáveis especificadas no comando de entrada. Desta forma, pode ser entendido
como o inverso de um comando de saída de dados. A sintaxe de um comando de
entrada de dados é dada abaixo:
LEIA ( lista de variáveis )
A partir deste ponto, tem o leitor os comandos básicos necessários para
especificar as três fases de um algoritmo (Entrada, Processamento e Saída),
podendo assim desenvolver seus primeiros exercícios.
4.1.7 Exercícios:
6) Sabendo os seguintes valores de variáveis A=3, B=7 e C=4, avalie as
expressões abaixo indicando se seu resultado é verdadeiro ou falso.
Expressões Resultado ( V ou F )
(A + C) > B
B >= (A + 2)
C = (B – A)
(B + A) <= C
(C + A) > B
7) Sabendo os seguintes valores de variáveis A=5, B=4, C=3 e D=6, avalie as
expressões abaixo indicando se seu resultado é verdadeiro ou falso.
Expressões Resultado ( V ou F )
(A > C) AND (C <= D)
(A+B) > 10 OR (A+B) = (C+D)
(A>=C) AND (D >= C)
8)Avalie a seguinte tabela, fornecendo seu resultado final:
A B ( (NÃO A ) E B ) OU ( A E ( NÃO B ))
V V
V F
F V
F F
9) Faça um algoritmo que leia as variáveis das equações abaixo e calcule e
imprima seu resultado final.
a)
X
B A F
A
2 4 2
3 2
3
b)
Y H
X
H H
H
2
45
3
4 3
2
c)
X
a b e f
c d g h
i
j
( ) ( )
( ) ( )
*
10) Faça um algoritmo para calcular a média aritmética de três números
quaisquer.
11) Faça um algoritmo que calcule a média ponderada de um aluno com 3 notas.
A fórmula de cálculo com seus respectivos pesos é a seguinte: média = (3*nota1 +
4*nota2 + 2*nota3) / 9. O algoritmo deve ler o nome do aluno e suas 3 notas e
imprimir o nome e a média final do aluno.
12) Faça um algoritmo para calcular as raízes de uma equação de 2º grau pela
fórmula de Báscara.
13) Faça um algoritmo em Portugol que calcule o valor da mensalidade que um
aluno deverá pagar. O algoritmo deve ler o nome do aluno, número de créditos
que o mesmo está cursando e o valor unitário do crédito. Deverão ser impressos
o nome do aluno e o valor da mensalidade devida pelo mesmo.
14) Faça um algoritmo que leia a base e a altura de um triângulo e calcule a sua
área conforme a fórmula A = ( B * H ) / 2 . Deverão ser impressos a base, altura e
a área do triângulo.
15) O preço de um automóvel é calculado pela soma do preço de fábrica com o
preço pago de impostos (45% do preço de fábrica) e a porcentagem paga de
comissão aos revendedores (28% do preço de fábrica). Faça um algoritmo que leia
o nome e o preço de fábrica do automóvel e imprima o seu nome e o preço final.
16) Suponha que você foi ao supermercado e comprou 2 produtos. Faça um
algoritmo em Portugol que leia e nome e o preço dos produtos comprados e
calcule o preço total da compra sabendo que você obteve um desconto de 20%.
Deverão ser impressos os nomes dos 2 produtos comprados, seus preços
unitários e o valor total da compra com e sem o desconto obtido.
17) Suponha que uma pessoa tenha comprado 3 artigos em uma loja, tendo, para
cada artigo, seu nome, preço e percentual de desconto. Faça um algoritmo em
Portugol que imprima o nome, preço e preço com desconto de cada artigo
comprado, além do total da conta a pagar.
18) Faça um algoritmo que leia o nome, o salário e o número de dependentes de
um funcionário e calcule o IR devido pelo funcionário. O valor a ser pago de IR
corresponde a 25% do salário do funcionário, descontando-se um abatimento de
R$ 0,50 por dependente que o funcionário possua. O algoritmo deverá imprimir o
nome do funcionário, seu salário, número de dependentes e o imposto devido.
19) Considere que uma empresa queira dar um aumento salarial a um
funcionário. Deste funcionário, a empresa possui as seguintes informações: seu
nome, idade e salário base. O procedimento adotado para o cálculo de aumento
do salário é o seguinte: 1) Reajustar o salário base do funcionário em 30%; 2)
Conceder uma gratificação de 20% sobre o salário já reajustado; 3) Efetuar
descontos de 15% sobre o salário já reajustado e sem a concessão da
gratificação. Deverão ser impressos o nome e o novo salário do funcionário na
sua forma bruta ( aumento + gratificação ) e líquida ( aumento + gratificação -
descontos ).
20) Uma empresa tem para um determinado funcionário uma ficha contendo o
nome, número de horas trabalhadas e o número de dependentes de um
funcionário. Considere que: (1) a empresa paga 12 reais por hora e 40 reais por
dependentes e (2) sobre o salário são feito descontos de 8,5% para o INSS e 5%
para IR. Faça um algoritmo para ler o nome, número de horas trabalhadas e
número de dependentes de um funcionário. Após a leitura e o processamento,
escreva qual o nome, salário bruto, os valores descontados para cada tipo de
imposto e finalmente qual o salário líquido do funcionário.
21) Considere que você possua o nome e os preços de uma mercadoria em
01/FEV e 01/MAR. Faça um algoritmo em Portugol que leia estes dados e calcule
a variação percentual ocorrida no preço da mercadoria naquele período. Deverão
ser impressos o nome da mercadoria, seus preços em 01/FEV e 01/MAR e a
variação percentual ocorrida no preço da mesma naquele período.
22) Faça um algoritmo em Portugol que leia três números e jogue-os nas
variáveis num1, num2, num3. Após isto, o algoritmo deverá movimentar os
valores das variáveis da seguinte forma: jogar o valor original da variável num1 na
variável num3; o valor original de da variável num3 na variável num2 e o valor
original da variável num2 na variável num1. Deverão ser impressos os valores das
três variáveis antes e após a movimentação dos valores.
23) Faça um algoritmo que leia dois números inteiros e jogue-os nas variáveis A e
B. O algoritmo deverá então trocar o conteúdo destas variáveis. Deverão ser
impressos os conteúdos das variáveis A e B antes e depois de efetuada a troca.
4.2 Estruturas de Seleção:
Como visto na conceituação de algoritmo, o mesmo é
preponderantemente seqüêncial, ou seja, todas as suas instruções serão
executadas, uma única vez, uma após a outra. Entretanto, a complexidade
inerente aos problemas a serem resolvidos pelo computador implica na
necessidade de estruturas mais complexas para que algoritmos possam ser
projetados para a sua solução.
Durante o desenvolvimento de um algoritmo, frequentemente existe a
necessidade de se tomar decisões e excutar ou não determinadas instruções, de
acordo com o panorama atual de alguns dados. Para tanto foram projetadas as
instruções de seleção ou decisão. Estas permitem definir um conjunto de
instruções que poderão ser executadas ou não, dependendo do resultado de um
teste realizado em cima de alguns dados. Desta forma, algumas instrução serão
ou não executadas durante a execução do programa, interferindo diretamente no
andamento do programa, conduzindo a algoritmos e programas que não são
totalmente sequenciais.
As instruções de seleção ou decisão encontradas no pseudocódigo são
as seguintes:estrutura de seleção simples, estrutura de seleção composta,
estrutura de seleção encadeada e estrutura de seleção de múltipla escolha.
4.2.1 Estrutura de Seleção Simples:
Esta estrutura de seleção permite definir um único conjunto de instruções
ou comandos que será ou não executado em função do resultado da realização
de um teste sobre os dados. Sua sintaxe é dada a seguir:
SE <condição> ENTÃO
<conjunto de instruções>
FIM SE
Nesta estrutura, um teste sobre os dados é executado através da
especificação de uma expressão a ser avaliada. Tal expressão é definida pela
cláusula <condição>. Esta, por sua vez, será avaliada e, em resultando um valor
verdadeiro, o <conjunto de instruções> será executado. Caso o resultado da
avaliação da <condição> não seja verdadeiro, serão executadas as instruções
imediatamente seguintes ao término da estrutura, dada pela palavra reservada
FIM SE.
Com exemplo desta estrutura, poderíamos ter o seguinte trecho de
algoritmo:
SE x > 5 ENTÃO
x x + 1
escreva (“O valor de x é igual a “, x)
FIM SE
4.2.2 Estrutura de Seleção Composta:
Uma estrutura de seleção composta permite definir dois conjuntos de
instruções passíveis de execução. Estes dois conjuntos de instruções, por sua
vez, são excludentes, ou seja, somente um dos dois será executado. A escolha
de qual dos dois conjuntos de instruções será executado dependerá também do
resultado da avaliação de um teste sobre os dados. Desta forma, um deles será
executado quando o resultado da avaliação do teste for verdadeiro, enquanto o
outro somente será executado quando o resultado da avaliação do teste for falso.
Tal instrução possui a seguinte sintaxe:
SE <condição> ENTÃO
<conjunto de instruções1>
SENÃO
<conjunto de instruções2>
FIM SE
Alguns autores consideram a estrutura de seleção composta e a estrutura
de seleção simples como uma estrutura única, tendo a cláusula SENÃO como
opcional. Na estrutura de seleção composta, um teste sobre os dados,
especificado na cláusula <condição> será realizado. Caso o resultado da
avaliação deste teste seja verdadeiro, as instruções constantes no <conjunto de
instruções1> serão executadas sendo, em caso contrário (o resultado da
avaliação do teste é falso) as instruções constantes no <conjunto de instruções2>
serão executadas. Após a execução de um dos dois conjuntos de instruções, o
fluxo de execução do algoritmo segue normalmente com as instruções
imediatamente seguintes ao final da estrutura, dada pela palavra reservada FIM
SE.
Como exemplo, pode-se ter o seguinte trecho de algoritmo:
SE x > 5 ENTÃO
x x + 1
escreva(“O valor de x é igual a “, x)
SENÃO
y y + 1
escreva(“O valor de y é igual a “, y)
FIM SE
4.2.3 Estrutura de Seleção Encadeada:
Uma estrutura de seleção encadeada nada mais é do que uma
combinação entre as estruturas de seleção simples e compostas, possibilitando,
desta forma, a especificação de vários conjuntos de instruções passíveis de
execução. Entretanto, da mesma forma como na estrutura de seleção composta,
somente um dos conjuntos de instruções especificados será executado,
dependendo do resultado de testes sobre os dados.
Um exemplo de sintaxe para este estrutura é dado abaixo:
SE <condição 1> ENTÃO
SE <condição 2> ENTÃO
<conjunto de instruções1>
SENÃO
<conjunto de instruções2>
FIM SE
SENÃO
SE <condição 3> ENTÃO
<conjunto de instruções3>
FIM SE
FIM SE
O exemplo acima combina duas estruturas de seleção composta,
juntamente com uma estrutura de seleção simples, permitindo a especificação de
três conjuntos de instruções. Entretanto, somente um deles deverá ser executado.
A combinação de estrutras de seleção simples e composta é livre, desde que se
observe a hierarquização das mesmas. Um exemplo deste tipo de combinação
pode ser visto abaixo:
SE x > 5 ENTÃO
SE nome = “José” ENTÃO
escreva(“Nome = “, nome)
FIM SE
SENÃO
SE y > 5 ENTÃO
x x + 1
escreva(“O valor de x é igual a “, x)
SENÃO
SE k < 4 ENTÃO
y y + 1
escreva(“O valor de y é igual a “, y)
FIM SE
FIM SE
FIM SE
4.2.4 Estrutura de Seleção de Múltipla Escolha:
Uma estrutura de seleção de múltipla escolha, da mesma forma que uma
estrutura de seleção encadeada, permite a especificação de vários conjuntos de
instruções passíveis de execução. Entretanto, somente um destes conjuntos será
executado, dependendo de um teste em cima do valor de uma variável. Sua
sintaxe pode ser vista abaixo:
CASO <variável a ser testada>
valor1 : <conjunto de instruções1>
valor2 : <conjunto de instruções2>
valor3 : <conjunto de instruções3>
...
SENÃO ( opcional )
<conjunto de instruções n>
FIM CASO
No contexto da estrutura acima, será executado o <conjunto de
instruções?> cujo valor associado valor? corresponda ao valor da <variável a ser
testada>. Um exemplo pode ser visto abaixo:
CASO x
1 : Escreva(“o valor de x é 1”)
2 : Escreva(“o valor de x é 2”)
3 : Escreva(“o valor de x é 3”)
SENÃO
Escreva(“o valor de x é diferente de 1, 2 e 3”)
FIM CASO
4.2.5 Exercícios:
24) Faça um algoritmo em Portugol que leia dois números inteiros e identifique se
os mesmos são iguais ou diferentes. Caso eles sejam iguais imprima uma
mensagem dizendo que eles são iguais. Caso contrário, diga qual dos dois
números é o menor.
25) Faça um algoritmo em Portugol que verifique se um aluno foi aprovado ou
não. O algoritmo deve ler o nome do aluno, suas 3 notas, juntamente com seus 3
pesos e calcular a média ponderada do aluno de acordo com a fórmula abaixo:
321
3*32*21*1
pesopesopeso
notapesonotapesonotapeso
MédiaFinal
Após o cálculo da média final, o algoritmo deverá verificar o conceito final do
aluno e indicar sua aprovação ou não, conforme a tabela abaixo:
Média Final Conceito Resultado
9.00 - 10.00 A Aprovado
7.50 - 8.99 B Aprovado
6.00 - 7.49 C Aprovado
5.00 - 5.99 D Reprovado
0.00 - 4.99 E Reprovado
O algoritmo deverá imprimir o nome do aluno, seu conceito e o resultado final.
26) Faça um algoritmo que leia três número diferentes e imprima o maior número
dentre os três.
27) Suponha que a Universidade possua a seguinte tabela de valores de créditos
por curso :
Curso Valor do Crédito
INFO 12,00
ADM 10,00
CONTAB 15,00
CIÊNCIAS 8,00
Faça um algoritmo em Portugol que leia o nome de um aluno, curso que o mesmo
está matriculado e o número de créditos que o ele está cursando e calcule a
mensalidade a ser paga pelo aluno. Deverão ser impressos o nome do aluno, seu
curso e o valor da mensalidade a pagar.
28) Faça um algoritmo em Portugol que leia o nome, o sexo, a altura e a idade de
uma pessoa e calcule e imprima o seu peso ideal de acordo com as seguintes
características da pessoa:
Sexo Altura Idade Peso Ideal
< = 20 ( 72.7 * h ) - 58
> 20 ( 72.7 * h ) - 45
< = 40 ( 72.7 * h ) - 50
> 40 ( 72.7 * h ) - 58
> 1,50 Independente ( 62,1 * h ) - 44
>= 35 ( 62,1 * h ) - 45
< 35 ( 62,1 * h ) - 49
29) Faça um algoritmo em Portugol que leia o código do departamento em que
um funcionário trabalha (1-secretaria, 2-tesouraria, 3-depto pessoal, 4-almoxarifado),
seu nome, salário base e o tempo de serviço. O algoritmo deverá então calcular e
imprimir o novo salário base do funcionário conforme as condições abaixo:
Departamento Tempo de Serviço % de Aumento
Secretaria ou < 4 anos 50%
Tesouraria > 4 anos 60%
Depto Pessoal Independente 30%
< 2 anos 30%
Almoxarifado > = 2 anos e < = 4
anos
40%
> 4 anos 50%
Deverão ser impressoso nome do funcionário, seu salário antigo e o novo salário.
30) Faça o teste de mesa do algoritmo abaixo diga qual o conteúdo das variáveis
A, B e AUX após o término da sua execução:
Inicio
a 10
b 20
aux 10
a b
b a
soma a + b
Se soma >= a + aux Então
Se a = b Então
aux a + b
a 10
b 20
Fim Se
Senão
aux b - a
a aux - 10
b aux + 10
Fim Se
Fim
Masculino
Feminino
> 1,70
< = 1,70
< = 1,50
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
31) Faça o teste de mesa do algoritmo abaixo diga qual o conteúdo das variáveis
A, B e AUX após o término da sua execução:
Inicio
a 10
b 20
aux 10
a b + aux
b a + aux
aux a + b
total aux - ( aux - a - b )
se aux = total então
se b > a então
a b - a
b aux - b - a
aux total - 2*b - 2*a
fimse
senão
a a - b
b aux - b
aux total - a
fimse
Fim
32) Suponha que uma empresa deseja fazer uma seleção ente os funcionários
para o aumento salarial. Só participará deste aumento o funcionário que possuir
mais de 4 anos de serviço, mais de 3 dependentes e salário atual abaixo de R$
500,00. Faça um algoritmo em Portugol que leia estes dados de um funcionário e
imprima uma mensagem dizendo se ele tem direito ao aumento ou não. Caso ele
tenha este direito, calcule o novo salário deste funcionário em função de uma taxa
de aumento de 48%. Deverão ser impressos o nome do funcionário, seu salário
antigo e o novo salário.
33) Sabendo que o preço final de um automóvel é dado pelo soma do preço de
fábrica com o valor pago de impostos e o percentual pagos aos revendedores (
5% do preço de fábrica ), faça um algoritmo em Portugol que use a tabela abaixo
e calcule e imprima o nome e o modelo do automóvel e o seu preço final de
venda.
Marca Modelo % de Impostos
GOL 1000
CL
12
15
UNO
MILLE
ELX
1.6 R
8
15
18
CORSA GL 23
34) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo da variável
TOTAL ao término da sua execução.
Inicio
abono 10
filhos 3
aluno ‘ZÉ’
curso ‘TPD’
cred 20
Se ( curso = ‘ADM’ ) ou ( curso = ‘CONTAB’ ) Então
mensal cred * 7,00
Senão
mensal cred * 8,00
Fim Se
Se mensal < = 150,00 Então
Se filhos = 3 Então
abono 50
Fim Se
Fim Se
total ( mensal - abono ) / 100
Fim
35) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo da variável
TOTAL ao término da sua execução.
Início
curso “TPD”
filhos 0
ncred 20
perc 0
vlcred 3,45
se curso = “ADM” então
vlcred 3,47
senão
se curso = “CONTAB” então
vlcred 4,17
senão
se curso = “CIÊNCIAS” então
vlcred 5,17
fimse
fimse
fimse
se filhos >= 3 então
perc 10
senão
se filhos >= 1 então
perc 5
senão
perc 3
fimse
fimse
mensal vlcred * ncred
desc mensal * perc/100
total mensal - desc
Fim
36) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo das
variáveis NOME, SALANT e SALNOVO ao término da sua execução.
Início
nome "JOSE"
depto 3
filhos 4
salant 500
se depto < 2 então
perc 50
senão
se depto < 4 então
perc 60
senão
perc 70
fimse
fimse
se filhos < = 1 então
abono 100
senão
se filhos < 3 então
abono 150
senão
abono 200
fimse
fimse
salnovo salant + salant*perc/100 + abono
Fim
37) Suponha que você esteja fazendo um concurso público. Cada candidato ao
cargo terá direito a uma pontuação em função da sua titulação, anos de
experiência e idade. Baseado na tabela abaixo, faça um algoritmo em Portugol
que leia o nome do candidato, sua titulação, tempo de experiência e idade. O
algoritmo deverá então calcular e imprimir o nome do candidato e sua pontuação
final.
Titulação Anos Experiência Pontos
2° Grau Independente 50
Graduação Até 4 anos 70
Acima de 4 anos 90
Até 4 anos 100
Pós-Graduação De 4 a 6 anos 120
Mais de 6 anos 150
Além disso, se o candidato possuir menos de 40 anos de idade, terá direito a mais
100 pontos. Caso contrário, perderá 50 pontos.
4.3 Estruturas de Repetição:
Como citado anteriormente, o desenvolvimento de algoritmos mais
complexos implica na necessidade de outras estruturas de controle além da
estrutura sequencial inerente do algoritmo. Desta forma, foram introduzidas as
estruturas de seleção ou decisão, permitindo a execução condicional de
instruções dependendo de uma visão dos dados naquele momento. Outra
estrutura básica fornecida pelo pseudocódigo (e também pelas linguagens de
programação) para o desenvolvimento de algoritmos são as estruturas de
repetição. Estas estruturas nos permitem executar um determinado conjunto de
instruções mais de uma vez, possibilitando assim que um determinado
processamento seja executado várias vezes.
As estruturas de repetição fornecidas pelo pseudocódigo são as
seguintes: estrutura de repetição com variável de controle, estrutura de repetição
com teste no início e estrutura de repetição com teste no final.
4.3.1 Estrutura de Repetição com Variável de Controle:
Este tipo de estrutura de repetição permite que um conjunto de instruções
seja executado um número fixo e determinado de vezes. Este número de vezes
que o conjunto de instruções será executado é determinado por uma variável de
controle. Tal estrutura possui a seguinte sintaxe:
PARA <variável de controle> = <valorinicial>, <valorfinal>, <passo> FAÇA
<conjunto de instruções>
FIM PARA
Nesta estrutura uma variável de controle é especificada através da
cláusula <variável de controle>. Durante a execução desta estrutura, a variável de
controle será incrementada ou decrementada de um valor definido em <passo>
desde um valor inicial, definido em <valorinicial> até um valor final especificado na
cláusula <valorfinal>. Esta diferença entre o valor inicial e o valor final da variável
de controle em unidades definidas pelo passo, indicará o número de vezes que o
conjunto de instruções será executado.
Semanticamente, uma estrutura de repetição com variável de controle
pode ser entendida da seguinte forma: “no início da execução da estrutura a
variável de controle será inicializada com o valor constante na cláusula
<valorinicial>. Um teste será feito para verificar se o seu valor é menor ou igual ao
valor da cláusula <valorfinal>. Caso o resultado deste teste seja verdadeiro, o
conjunto de instruções será executado e, ao encontrar o final da estrutura, dado
pela palavra reservada FIM PARA, o fluxo de execução retornará para o início da
estrutura, dado pela palavra reservada PARA, sendo a variável de controle
incrementada automaticamente. Este funcionamento se repetirá até que o
resultado do teste “<valorinicial> <= <valorfinal>” seja falso. Neste caso então, o
ciclo de execução deste conjunto de instruções é terminado, sendo executada a
instrução imediatamente seguinte ao término da estrutura (primeira instrução logo
após a palavra reservada FIM PARA)”. Este procedimento também é válido para o
decremento da variável de controle, respeitando-se a inversão do teste e o
decremento em vez do incremento da variável de controle.
Como exemplo poderíamos ter o trecho de algoritmo abaixo que lê o
nome e três notas de um conjunto de 50 alunos e, para cada um deles, calcula
sua média e escreve o nome do aluno e sua média final:
PARA contador = 1,50 FAÇA
LEIA (nome, nota1, nota2, nota3 )
media ( nota1 + nota2 + nota3 ) / 3
ESCREVA ( nome, media )
FIM PARA
4.3.2 Estruturade Repetição com Teste no Início:
Esta estrutura de repetição permite a execução de um conjunto de
instruções um número indeterminado de vezes, ou seja, enquanto uma
determinada condição seja satisfeita. Desta forma, uma condição (normalmente
um teste sobre os dados) é examinada antes da execução do conjunto de
instruções e, caso seu resultado seja verdadeiro, o conjunto de instruções é
executado. Tal estrutura de repetição possui a seguinte sintaxe:
ENQUANTO <condição> FAÇA
<conjunto de instruções>
FIM ENQUANTO
Na estrutura acima, <condição> é uma expressão que será avaliada,
retornando um valor verdadeiro ou falso. Caso o resultado da avaliação desta
expressão seja verdadeiro, o conjunto de instruções será executado. Após a
execução do conjunto de instruções, o final da estrutura, dado pela palavra
reservada FIM ENQUANTO, é encontrado fazendo o fluxo de execução retornar
para o início da estrutura, dado pela palavra reservada ENQUANTO. Neste caso,
o teste especificado em <condição> é executado novamente e, se resultar em um
valor verdadeiro, a execução do conjunto de instruções se dará novamente. O
fluxo de execução do algoritmo ficará neste loop até que a inspeção da
<condição> resulte em um valor falso. Neste caso, serão executadas as
instruções imediatamente seguintes ao final da estrutura.
Um exemplo desta estrutura pode ser visto no trecho de algoritmo abaixo
que lê o nome e o número de créditos que um aluno faz, juntamente com o valor
unitário do crédito e calcula e imprime o nome e a mensalidade que cada aluno
tem a pagar, bem como o total de mensalidades a ser recebido pela instituição de
ensino:
total 0
LEIA (nome)
ENQUANTO nome <> “nenhum” FAÇA
LEIA ( vlcred, numcred )
mensal vlcred * numcred
ESCREVA ( nome, mensal )
total total + mensal
LEIA (nome)
FIM ENQUANTO
ESCREVA ( total )
4.3.3 Estrutura de Repetição com Teste no Final:
Uma estrutura de repetição com teste no final também permite a
execução de um conjunto de instruções um número indeterminado de vezes, até
que uma determinada condição seja satisfeita. Entretanto, uma condição
(normalmente um teste sobre os dados) é examinada após a execução do
conjunto de instruções. Desta forma, o conjunto de instruções associado à
estrutura de repetição será executado pelo menos uma vez e as outras execução
do conjunto de instruções dependerão do resultado da inspeção da condição.
Esta é a diferença básica entre as estruturas de repetição com teste no início e
teste no final. Tal estrutura possui como sintaxe:
REPITA
<conjunto de instruções>
ATÉ <condição>
Nesta estrutura, inicialmente o conjunto de instruções será executado.
Após isto, uma condição será testada. Caso a inspeção desta condição resulte
em um valor verdadeiro, o fluxo da execução é desviado para o início da
estrutura, dado pela palavra reservada REPITA e o conjunto de instruções é
executado novamente. Este ciclo de execução se repete até que a inspeção da
condição resulte em um valor falso. Neste caso, serão executadas as instruções
imediatamente seguintes ao final da estrutura de repetição, dada pela palavra
reservada ATÉ.
4.3.4. Exercícios:
38) Faça um algoritmo em Portugol que imprima todos os números inteiros de 1 a
25.
39) Dada uma série de 20 registros de dados de entrada, cada registro contendo
um valor real, escreva um algoritmo em Portugol que imprima os valores
negativos e calcule e imprima a média dos valores não negativos.
40) Faça um algoritmo em Portugol que imprima os números ímpares
compreendidos entre 10 e 20.
41) Faça um algoritmo que leia uma lista de letras terminada com a letra "Z". Ao
final, o algoritmo deve imprimir a quantidade lida de cada vogal.
42) Foi feita uma pesquisa na Lanchonete da Universidade do Contestado
envolvendo N alunos. Foi pergunta para cada aluno o seu nome, sua idade, o
lanche que ele fez e seu curso em que está matriculado.
Lanche Custo
X Salada 3,40
Misto Quente 1,50
X Burger 2,80
Pizza 0,90
Total da Conta % de desconto
< 8,00 5
< = 8,00 e < = 10,00 7
> 10,00 10
Faça um algoritmo em Portugol que, levando em conta as tabelas acima de custo
dos lanches e descontos, calcule e imprima:
valor total arrecadado pela lanchonete no período em que foi feita a
pesquisa;
nome do lanche mais vendido;
média de gasto dos alunos do curso de Processamento de Dados;
43) O DER deseja fazer um levantamento estatístico da utilização de uma
determinada rodovia de Santa Catarina. Em um ponto de pedágio levantou-se os
seguintes dados de um número desconhecido de condutores de veículos:
estado de origem;
número de pessoas viajando;
marca e ano de fabricação do veículo;
característica da viagem ( 1-Férias / 2-Trabalho ).
Faça um algoritmo em Portugol que calcule e imprima:
número de automóveis que passaram por aquele ponto de pedágio;
média de pessoas por automóvel
número de automóveis que não são do Estado de Santa Catarina;
número de automóveis da marca FUSCA fabricados entre os anos de
1970 e 1980;
percentagem de automóveis que estavam em viagem de Férias.
44) Foi feita uma pesquisa visando identificar as características físicas da
população de uma certa região. Foram coletados os seguintes dados dos seus
habitantes: sexo (masculino ou feminino); cor dos olhos (azuis, verdes ou
castanhos); cor dos cabelos (louros, castanhos ou pretos) e idade.
Faça um algoritmo em Portugol que leia os dados acima de um conjunto
desconhecido de habitantes e calcule e imprima:
menor idade dos homens pesquisados;
número de pessoas entrevistadas;
idade média das mulheres;
percentagem de habitantes de cabelos louros e olhos azuis.
45) Faça um algoritmo em Portugol para calcular o fatorial de um número N
qualquer fornecido pelo usuário.
46) Suponha que a empresa TELESC deseje informatizar o processo de controle
das contas telefônicas seus assinantes. A cobrança de seus serviços é feita
obedecendo os seguintes critérios:
Tarifas Básicas /Assinatura
Residencial Comercial
13,59 25,78
Serviços adicionais cobrados
Serviço Local 0,54 por pulso excedente
( acima de 90 pulsos )
Serviço Interurbano 0,98 por pulso excedente
( acima de 45 pulsos )
Despertador Automático 8,50 por serviço
Telegrama Fonado 12,34 por serviço
Faça um algoritmo em Portugol que leia os seguintes dados de um número
desconhecido de usuários:
número do telefone ( usado como critério de parada );
tipo da linha ( 1-residencial, 2-comercial );
número de pulsos registrados para chamadas locais;
número de pulsos registrados para chamadas interurbanas;
número de telegramas passados;
número de utilizações do serviço de despertador.
O Algoritmo deverá calcular e imprimir:
valor da maior conta e o número do telefone do assinante que a pagou;
número de chamadas ao serviço de telegrama fonado;
total arrecadado pela TELESC em relação a cada um dos serviços
prestados;
total geral arrecadado pela TELESC;
47) Um cinema deseja fazer um levantamento estatístico quanto à sua utilização.
Cada usuário preencheu um formulário com os seguintes dados: horário da
sessão (14:30 hs ou 20:30 hs); um código indicando se ele pagou meia entrada
ou inteira (1-meia ou 2-inteira); sexo; idade e filme assistido.
Faça um algoritmo em Portugol que leia estes dados para um conjunto de 500
usuários e calcule e imprima:
horário da sessão de maior lotação;
número de pessoas maiores de 18 anos que pagaram meia entrada;
quantidade de mulheres assistiram ao filme "GHOST";
número de pessoas maiores de 30 anos que assistiram ao filme "
DANÇA COM LOBOS" na sessãodas 14:30 hs.
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
48) Supunha que uma Universidade tenha os seguintes dados dos seus
alunos: Número de Matrícula; Nome; Curso (TPD, ADM, CONT) e Número de
créditos devidos. Sabendo-se que os valores dos créditos são de R$ 9,30
para o curso de TPD e R$ 7,57 para os cursos de ADM e CONT, faça um
algoritmo em Portugol que leia um conjunto de 500 registros com estes dados e
calcule e imprima:
total de créditos devidos pelos alunos;
valor médio, em R$, devido pelo curso de TPD;
nome dos alunos de ADM que devem mais de 30 créditos.
49) Faça um algoritmo em Portugol que leia um número desconhecido de
registros de dados de entrada contendo o nome de um candidato a
emprego, sua idade, o código de sua maior escolaridade (1=1° Grau, 2=2°
Grau ou 3=3° Grau ) e o cargo de sua preferência. O algoritmo deverá
calcular e imprimir:
nome e cargo pretendido pelo candidato mais novo;
percentagem de candidatos que possuem o terceiro grau;
número de candidatos ao cargo de Analista de Sistemas;
idade média dos candidatos que possuem o segundo grau
como maior titulação.
50) Suponha que você trabalha em uma agência de aviação e deseja
fazer uma avaliação sobre o atraso e a média de lotação dos vôos da
companhia. Faça um algoritmo em Portugol que leia um número
desconhecido de registros contendo os seguintes dados: número do vôo;
número de lugares do avião; número de lugares ocupados; horário
previsto para chegada do vôo e horário real da chegada do vôo.
Faça um algoritmo que calcule e imprima:
atraso médio dos vôos;
número do vôo que decolou com o menor número de
passageiros;
quantidade de vôos que chegaram atrasado ;
número do vôo que teve a maior quantidade de lugares vazios.
51) Suponha que para cada aluno da UnC existam as seguintes
informações: nome do aluno, curso, idade e renda familiar. Faça um
algoritmo em Portugol que leia um conjunto de 500 registros contendo os
dados dos alunos e calcule e imprima:
nome e curso do aluno mais novo da UnC;
quantidade de alunos de PD com idade entre 20 e 35 anos;
renda média familiar dos alunos da Administração.
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
52) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo das
variáveis A, B, AUX e X ao término da sua execução.
Inicio
fim 3
x 0
cont 1
a 10
b 20
aux 10
a b + aux
b a + aux
aux a + b
total aux - ( aux - a - b )
se a < b então
a b - a
b aux - b - a
aux total - 2*b - 2*a
enquanto cont <= fim faça
x x + a
cont cont + 1
fim enquanto
senão
para cont=1,fim faça
x x + 2
fim para
fimse
Fim
53) Suponha que o governo do Estado esteja iniciando um programa de
concessão de bolsas de estudo. Cada aluno preencheu uma ficha com os
seguintes dados: nome; curso que está freqüentando e tipo de vínculo
empregatício com o Estado ( 1A, 1B, 1C ou 1D). Suponha ainda a seguinte tabela
de valores de créditos por curso:
Curso Valor do Crédito
PEDAGOGIA 10,00
LETRAS 15,00
CIÊNCIAS 8,00
Faça um algoritmo que leia os dados de um número desconhecido de alunos e
calcule e imprima:
número total de alunos para cada um dos quatro tipos de vínculo;
nome do aluno, tipo de vínculo, número de créditos, valor da
mensalidade a pagar, curso e o valor da bolsa recebida sabendo-se que
a mesma é calculada segundo um percentual definido pelo tipo de
vínculo do aluno:
Tipo de Vïnculo % de bolsa
1A 80 % da mensalidade
1B 60 % da mensalidade
1C 40 % da mensalidade
1D 20 % da mensalidade
Este último relatório deverá possuir o seguinte formato:
Nome Curso Vínculo Créditos Mensalidade Bolsa
xxxxxx xxx xxx xxxx xxxxx xxxxx
xxxxxx xxx xxx xxxx xxxxx xxxxx
54) Escreva um algoritmo em Portugol que leia um conjunto de 50 registros
contendo cada um a altura e o código do sexo da pessoa (1=Masc ou 2=Fem).
Este algoritmo deverá calcular e imprimir:
maior e a menor altura do conjunto de pessoas;
altura média das mulheres;
altura média da turma.
55) Suponha que existam dois candidatos a uma vaga no senado. Feita a eleição,
os votos são registrados da seguinte maneira:
Código do Voto Descrição
1 Voto para o candidato 1
2 Voto para o candidato 2
3 Voto branco
4 Voto nulo
Faça um algoritmo em Portugol que leia um conjunto indefinido de registros de
código de votos e calcule e imprima:
número de votos de cada candidato;
candidato vencedor;
número de votos nulos;
número de votos brancos;
número de eleitores que compareceram às urnas.
56) Escreva um algoritmo em Portugol que faça o levantamento em uma adega
da seguinte maneira: leia um conjunto de 300 registros cada um contendo o nome
do vinho, ano da safra e o código indicando o tipo do vinho (1=branco, 2=tinto ou
3=rose). O algoritmo deverá calcular e imprimir:
quantidade de cada tipo de vinho;
safra e o nome do vinho mais velho;
quantidade total de garrafas de vinho;
porcentagem de garrafas de vinho rose.
57) Faça um algoritmo que imprima os números pares compreendidos entre
14 e 30 ( inclusive ).
58) Faça um algoritmo em Portugol que leia um valor X e calcule e imprima os
20 primeiros termos da série:
...........
3
1
2
1
1
1
XXX
S
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
59) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros
com os seguintes dados de vendedores de uma empresa: nome, salário fixo e
total de vendas efetuadas. Cada vendedor recebe uma comissão proporcional
às vendas por ele efetuadas, sendo de 5% para o total de vendas de até R$
15.000,00 e 7% para vendas acima deste valor. Faça um algoritmo que calcule
e imprima:
nome, salário fixo e valor recebido de comissão para cada vendedor;
quantidade de vendedores que tem salário fixo abaixo de R$ 500,00
e que receberam mais de R$ 1.000,00 de comissão;
total geral pago pela empresa somando-se o total de salário fixo e de
comissão;
número total de vendedores da empresa.
60) Faça um algoritmo em Portugol que leia um par de valores inteiros e jogue-
os nas variáveis A e B. O algoritmo deverá então calcular o produtório de todos
os números compreendidos entre A e B ( inclusive ).
61) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros
contendo os seguintes dados de um automóvel: marca, fabricante ( Volks, Ford,
Fiat ), capacidade do tanque de combustível e preço de fábrica. O algoritmo
deverá então calcular e imprimir:
a marca, fabricante e preço final de cada automóvel sabendo que o
preço final é calculado da seguinte maneira: PF + comissão das
revendas ( 15% do PF ) + transporte ( R$ 150,00 );
a capacidade média do tanque de combustível dos veículos;
qual dos três fabricantes produziu mais veículos;
qual a marca e o fabricante do carro mais caro.
62) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros
cada um contendo os seguintes dados de um livro: autor, título, data e local de
publicação e preço. O algoritmo deverá então calcular e imprimir:
quantidade de livros escritos por José de Alencar que foram publicados
em São Paulo;custo médio dos livros escritos por Rui Barbosa;
nome do autor do livro “As Orquídeas”.
63) Faça um algoritmo em Portugol que leia um conjunto de 50 registros, cada um
contendo os seguintes dados de um aluno: nome, nota1, nota2, nota3, idade e
curso que freqüenta. O algoritmo deverá calcular e imprimir:
nome e a média final de todos os alunos ( média aritmética );
nome do aluno do curso de TPD que obteve a maior média;
idade média dos alunos;
quantidade de alunos com média acima de 7,0.
64) Faça um algoritmo em Portugol que leia um conjunto de 36 registros cada um
contendo os seguintes dados dos times de futebol do campeonato brasileiro:
nome do time, estado a que ele pertence, total de pontos feitos no campeonato,
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
número de gols marcados e número de gols sofridos no campeonato. O algoritmo
deverá calcular e imprimir:
nome de cada time e o seu saldo de gols ( gols marcados menos gols
sofridos );
a soma de pontos dos times do Rio Grande do Sul;
nome dos times cuja pontuação foi superior a 50 pontos no
campeonato.
65) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros
de vendas dos vendedores de uma imobiliária. Cada registro contém os seguintes
dados: código do vendedor, valor da venda, percentual de comissão a ser
recebido pelo vendedor e tipo do imóvel vendido ( APTO, CASA, TERRENO ).
O algoritmo deverá então calcular e imprimir:
código e a comissão recebida por cada vendedor;
código do vendedor que recebeu o maior valor de comissão;
quantidade de apartamentos vendidos;
valor médio de vendas da imobiliária.
66) Faça um algoritmo em Portugol que leia um conjunto de 365 registros, cada
um contendo a temperatura de um dia do ano ( os registros estão ordenados por
dia ). O algoritmo deverá calcular e imprimir:
temperatura média do ano;
maior temperatura ocorrida no primeiro semestre daquele ano;
menor temperatura ocorrida no segundo semestre daquele ano;
número de dias do ano em que a temperatura foi superior a trinta graus.
67) Faça um algoritmo que leia um conjunto indefinido de registros de candidatos
ao vestibular, cada um contendo os seguintes dados: nome, curso pretendido (
TPD, ADM, CONTAB ), língua escolhida ( ING, ESP ), sexo e idade. O algoritmo
deverá então calcular e imprimir:
curso de maior procura no vestibular;
idade média das candidatas mulheres;
percentual de candidatos que optaram pela lingua inglesa ( ING );
nome e o curso pretendido por cada candidato.
68) Faça um algoritmo que leia os valores das variáveis X e A e calcule o valor
de S dado por:
2032
1
*
19
2018
*
2
319
*
1
220
*
1
XAXAXAXA
S
69) Faça um algoritmo para executar uma operação de multiplicação através de
somas sucessivas. O algoritmo deverá ler o valor do multiplicando e do
multiplicador e calcular e imprimir o resultado da multiplicação.
70) Faça um algoritmo em Portugol que gere e imprima a tabuada dos números
de 1 a 10.
71) A conversão de graus Fahrenheit para centígrados é obtida pela fórmula:
9
32*5 F
C
Escreva um algoritmo em Portugol que calcule e imprima uma tabela de graus
centígrados em função de graus Fahrenheit que variam de 50 a 150 graus. A
tabela deverá ter o seguinte formato:
Fahrenheit Centígrados
50 ?
51 ?
: :
150 ?
72) A Série de Fibonacci é formada pela seguinte sequência de números: 1, 1, 2,
3, 5, 8, 13, 21, 34, 55, ... . Escreva um algoritmo em Portugol que gere e imprima
esta série até o vigésimo termo.
73) Faça um algoritmo que leia o valor da variável A e calcule e imprima o valor
de S dado por:
A
AAA
S
2
3
1
21
74) Suponha que a UnC seja dividida em departamentos e que para cada um
deles exista um código, conforme a tabela abaixo:
Departamento Código
Secretaria 1
Tesouraria 2
Biblioteca 3
NPD 4
Faça um algoritmo em Portugol que leia 250 registros de funcionários da UnC
contendo, cada um, o código do departamento do funcionário, seu nome e salário.
O algoritmo deverá calcular e imprimir:
nome do funcionário com maior salário da UnC;
salário médio por departamento;
salário médio da instituição.
75) Faça um algoritmo em Portugol que leia um conjunto de 7000 registros de
assinantes das revistas da Editora Abril, cada um contendo os seguintes dados:
nome da revista ( EXAME, VEJA, INFO ), valor pago pela assinatura, idade e
sexo do assinante. O algoritmo deverá calcular e imprimir:
nome da revista possui maior quantidade de assinantes;
idade média dos assinantes da revista INFO;
quantidade de homens que assinam a revista VEJA;
maior valor de assinatura pago pelas mulheres.
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
76) Dado o conjunto de dados e o algoritmo abaixo, faça o teste de mesa do
mesmo e responda qual o conteúdo das variáveis Aux1, Aux2 e Aux3 ao final da
execução do algoritmo.
Início
Aux3 0
Maior 0
Sal1, Sal2, Sal3 0
Num1, Num2, Num3 0
Para cont = 1,6 faça
Leia ( nome, idade, depto, sal )
Se depto = “A” então
Sal1 Sal1 + sal
Num1 Num1 + 1
Senão
Se depto = “B” então
Sal2 Sal2 + sal
Num2 Num2 + 1
Senão
Sal3 Sal3 + sal
Num3 Num3 + 1
Fimse
Fimse
sal sal * 1,10
Se sal > maior então
Maior sal
Aux2 idade
Fimse
Aux3 Aux3 + sal
Fim para
Aux1 Sal3/Num3
Fim
Dados do Algoritmo:
Resultados do Algoritmo:
Aux1 Aux2 Aux3
LUIZ, 25, C, 800
JOÃO, 51, B, 500
CLEUSA, 35, C, 1500
MARIA, 20, A, 200
PEDRO, 32, D, 500
ZÉ, 28, A, 1800
77) Dado o conjunto de dados e o algoritmo abaixo, faça o teste de mesa do
mesmo e responda qual o conteúdo das variáveis Aux1, Aux2 e Aux3 ao final da
execução do algoritmo.
Início
Aux3 0
Menor 999999
Total, Veic 0
ContF, ContG 0
Para cont = 1,6 faça
Leia ( Fab, Mod, Preço, AnoFab )
Se Fab = “FIAT" então
ContF ContF + 1
Senão
Se Fab = “GM” então
ContG ContG + 1
Aux3 Aux3 + Preço*1,10
Senão
Se AnoFab < Menor Então
Menor AnoFab
Aux2 Mod
Fimse
Fimse
Fimse
Veic Veic + 1
Total Total + Preço
Fim para
Aux1 Total / Veic
Fim
Dados do Algoritmo:
Resultados do Algoritmo:
Aux1 Aux2 Aux3
GM, MONZA, 13000, 1991
VOLKS,SANTANA,12500,1995
GM, CORSA, 9000, 1994
GM, VECTRA, 27000, 1998
FIAT, PÁLIO, 10500, 1996
VOLKS, GOL, 12000, 1997