Apostila de Algoritmo

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 19

O uso de algoritmos é quase tão antigo quanto a matemática.

Com o passar do tempo,


entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas
de calcular e mais tarde os computadores, o uso de algoritmos ressurgiu com grande
vigor, como uma forma de indicar o caminho para a solução dos mais variados
problemas. Algoritmo não é a solução do problema, pois, se assim fosse, cada
problema teria um único algoritmo. Algoritmo é o caminho para a solução de um
problema, e em geral, os caminhos que levam a uma solução são muitos. Ao longo
dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando
linguagens semelhantes às linguagens de programação e outras utilizando formas
gráficas. O aprendizado de algoritmos não se consegue a não ser através de muitos
exercícios.
Conceito de algoritmo

A automação é o processo em que uma tarefa deixa de ser desempenhada pelo


homem e passa a ser realizada por máquinas, sejam estes dispositivos mecânicos
(como as máquinas industriais), eletrônicos (como os computadores), ou de natureza
mista (como os robôs). Para que a automação de uma tarefa seja bem-sucedida é
necessário que a máquina que passará a realizá-la seja capaz de desempenhar cada
uma das etapas constituintes do processo a ser automatizado com eficiência, de modo
a garantir a repetibilidade do mesmo. Assim, é necessário que seja especificado com
clareza e exatidão o que deve ser realizado em cada uma das fases do processo a
ser automatizado, bem como a sequência em que estas fases devem ser realizadas.
À especificação da sequência ordenada de passos que deve ser seguida para a
realização de uma tarefa, garantindo a sua repetibilidade, dá se o nome de algoritmo.
Embora esta definição de algoritmo seja correta, podemos definir algoritmo, de
maneira informal e completa como: Algoritmo é um conjunto finito de regras, bem
definidas, para a solução de um problema em um tempo finito e com um número finito
de passos.
Um algoritmo é qualquer procedimento computacional bem definido que toma algum
valor ou conjunto de valores como entrada e produz algum valor ou conjunto de
valores como saída. Um algoritmo deve sempre possuir pelo menos um resultado,
normalmente chamado de saída, e satisfazer a propriedade da efetividade, isto é,
todas as operações especificadas no algoritmo devem ser suficientemente básicas
para que possam ser executadas de maneira exata e num tempo finito.

Representação de algoritmos

Existem diversas formas de representação de algoritmos, mas não há um consenso


com relação à melhor delas.

 A Descrição Narrativa
 O Fluxograma Convencional
 O Diagrama de Chapin
 Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol.
Descrição Narrativa
Nesta forma de representação os algoritmos são expressos diretamente em
linguagem natural. Como por exemplo:

Troca de um pneu furado:

1ª Afrouxar ligeiramente as porcas


2ª Suspender o carro
3ª Retirar as porcas e o pneu
4ª Colocar o pneu reserva
5ª Apertar as porcas
6ª Abaixar o carro
7ª Dar o aperto final nas porcas

Esta representação é pouco usada na prática porque o uso de linguagem natural


muitas vezes dá oportunidade a más interpretações, ambiguidades e imprecisões. Por
exemplo, a instrução “afrouxar ligeiramente as porcas” no algoritmo da troca de pneus
está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais
precisa seria: “afrouxar a porca, girando-a de 30º no sentido anti-horário”.

Fluxograma
É uma representação gráfica de algoritmos onde formas geométricas diferentes
implicam ações (instruções, comandos) distintos. Tal propriedade facilita o
entendimento das ideias contidas nos algoritmos.

SÍMBOLOS USADOS EM FLUXOGRAMAS

Terminal: O ponto de início, término ou interrupção de um programa


.
Direção do fluxo: A direção do fluxo de dados ou de processamento.

Conexão: Uma entrada ou uma saída de ou para uma função de processamento do


programa.
Processamento: Um grupo de instruções que executam uma função de
processamento do programa.

Cartão perfurado: Todas as variedades de cartão perfurado. Função generalizada


neste texto para indicar entrada de dados.

Documento: documentos e relatórios de todas as variedades. Função generalizada


neste texto para indicar saída de dados.

Decisão: indica a possibilidade de desvios para diversos outros pontos do


fluxograma, de acordo com situações variáveis.

Fita magnética

Teclado de linha: Informação fornecida ou recebida de ou por um computador


utilizando um dispositivo.

Entrada/saída: Qualquer função de um dispositivo de entrada/saída, fornecendo


informações para processamento, gravação, posicionamento fita, etc.

Entrada/saída: Qualquer tipo de documentos ou dados.

Fita perfurada: Fita de papel ou plástico.

Acesso arbitrário de disco ou de tambor.

Exibição: informações exibidas por dispositivos visuais.

A imagem a seguir mostra a representação do algoritmo de cálculo da média de um


aluno sob a forma de um fluxograma.
Diagrama de Chapin

O diagrama de Chapin é uma representação gráfica de algoritmos que apresenta uma


visão hierárquica e estruturada da lógica de programa. A vantagem de usar este tipo
de diagrama é a representação das estruturas que tem um ponto de entrada e um
ponto de saída e são compostas pelas estruturas básicas de controle de sequência,
seleção e repetição.
Diagrama de Chapin para o algoritmo do cálculo da média de um aluno

Pseudocódigo

Esta forma de representação de algoritmos, também conhecida como português


estruturado ou portugol, é bastante rica em detalhes e, por assemelhar-se bastante à
forma em que os programas são escritos, encontra muita aceitação, sendo, portanto,
a forma de representação de algoritmos que será adotada nesta disciplina. Na
verdade, está representação é suficientemente geral para permitir que a tradução de
um algoritmo nela representado para uma linguagem de programação específica seja
praticamente direta.

Algoritmo <nome do algoritmo>


<declaração_de_variáveis>
<subalgoritmos>
Início
<corpo do algoritmo>
Fim.

Onde:
 Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma
de pseudocódigo.
 <nome do algoritmo> é um nome simbólico dado ao algoritmo com a finalidade
de distingui-lo dos demais.

 <declaração_de_variáveis> consiste em uma porção opcional onde são


declaradas as variáveis globais usadas no algoritmo principal e, eventualmente,
nos subalgoritmos.

 <subalgoritmos> consiste de uma porção opcional do pseudocódigo onde são


definidos os subalgoritmos.

 Início e Fim são respectivamente as palavras que delimitam o início e o término


do conjunto de instruções do corpo do algoritmo.

Tipos de dados

 Tipos inteiros

São caracterizados como tipos inteiros, os dados numéricos positivos ou negativos.


Excluindo-se desde qualquer número fracionário. Como exemplo deste tipo de dado,
tem-se os valores: 35, 0, -56, 1024 entre outros.

 Tipos Reais

São caracterizados como tipos reais, os dados numéricos positivos e negativos e


números fracionários. Como exemplo deste tipo de dado, tem-se os valores: 35, 0, -
56, 1.2, -45.987 entre outros.

 Tipos caracteres
São caracterizados como tipos caracteres, as sequências contendo letras, números e
símbolos especiais. Uma sequência de caracteres deve ser indicada entre aspas (“”).
Este tipo de dado também é conhecido como alfanumérico, string, literal ou cadeia.
Como exemplo deste tipo de dado, tem-se os valores: “Programação”, “Rua Alfa, 52
Apto 1”, “Fone 574-9988”, “04387- 030”, “ ”, “7” entre outros.

 Tipo lógico
São caracterizados como tipos lógicos os dados com valor verdadeiro e falso, sendo
que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado
por alguns de tipo booleano, devido à contribuição do filósofo e matemático inglês
George Boole na área da lógica matemática.

Variáveis e constantes

Armazenamento de Dados na Memoria

Para armazenar os dados na memória, imagine que a memória de um computador é


um grande arquivo com várias gavetas, onde cada gaveta pode armazenar apenas
um único valor (seja ele numérico, caractere ou lógico). Se é um grande arquivo com
várias gavetas, é necessário identificar com um nome a gaveta que se pretende
utilizar. Desta forma o valor armazenado pode ser utilizado a qualquer momento.

Conceito e utilidade de Variável

Têm-se como definição de variável tudo aquilo que é sujeito a variações, que é incerto,
instável ou inconstante. E quando se fala de computadores, temos que ter em mente
que o volume de informações a serem tratadas é grande e diversificado. Desta forma,
os dados a serem processados serão bastante variáveis.

Adotaremos para os algoritmos, as seguintes regras:


 Um nome de variável deve necessariamente começar com uma letra;
 Um nome de variável não deve conter nenhum símbolo especial, exceto a sublinha
(_ ) e nenhum espaço em branco;
 Um nome de variável não poderá ser uma palavra reservada a uma instrução de
programa.
Exemplos de nomes de variáveis:
 Salário – correto
 1ANO – errado (não começou uma letra)
 ANO1 – correto
 A casa – errado (contém o caractere branco)
 SAL/HORA – errado (contém o caractere “/”)
 SAL_HORA – correto
 _DESCONTO – errado (não começou com uma letra)

Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem


utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço
na memória para as mesmas.
A palavra-chave VAR deverá estar presente sempre e será utilizada uma única vez
na definição de um conjunto de uma ou mais variáveis; numa mesma linha poderão
ser definidas uma ou mais variáveis do mesmo tipo; para tal, deve-se separar os
nomes das mesmas por vírgulas;
Variáveis de tipos diferentes devem ser declaradas em linhas diferentes. Exemplos
de definição de variáveis:
VAR nome: caracter[30]
idade: inteiro
salário: real
tem_filhos: lógico
 A variável nome, é capaz de armazenar dados caractere de comprimento 35 (35
caracteres);
 A variável idade, capaz de armazenar um número inteiro;
 A variável salário, capaz de armazenar um número real;
 A variável tem_filhos, capaz de armazenar uma informação lógica.

Operadores

Operadores são elementos fundamentais que atuam sobre operandos e produzem um


determinado resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os
números 3 e 2, por meio do operador (+) que representa a operação de adição. De
acordo com o número de operandos sobre os quais os operadores atuam, os últimos
podem ser classificados em:
 Binários, quando atuam sobre dois operandos. Esta operação é chamada diádica.
Exemplo: os operadores das operações aritméticas básicas (soma, subtração,
multiplicação e divisão).
 Unários, quando atuam sobre um único operando. Esta operação é chamada
monádica.
Exemplo: o sinal de (-) na frente de um número

Exercícios

1) Escreva um algoritmo que calcule o índice de massa corporal a partir de sua


estrutura e de seu peso
p
Formula: 2
h
inicio // imc
real: imc, p, a
escreva (“digite seu peso”)
leia (p)
escreva (“digite sua altura”)
leia (a)
imc = p/(h x h)
escreva (seu imc é imc)
fim
2) Escreva um algoritmo que leia um nome qualquer com 10 caracteres

Inicio // nome
caracter [10]
escreva (digite um palavra com 10 letras)
leia nome
escreva (a palavra é tecnologia)
leia tecnologia
fim
3) Escreva um algoritmo que some 3 números inteiros
inicio// some 3 números inteiros
inteiro (a, b, c, resp)
escreva (digite um numero inteiro
leia (a)
escreva (digite o numero inteiro)
leia (b)
escreva (digite o numero inteiro)
leia (c)
resp (a+b+c)
escreva (o resultado é )
fim
4) Escreva um algoritmo que calcule a média de 4 notas bimestrais
inicio //media
real n1, n2, n3,n4, media
escreva (“digite a primeira nota”)
leia (n1)
escreva (“digite a segunda nota”)
leia (n2)
escreva (“digite a terceira nota”)
leia (n3)
escreva (“digite a quarta nota”)
leia (n4)
media (n1 + n2 + n3 + n4) / 4
escreva (media é igual media)
fim
5) Escreva um algoritmo que leia um número e multiplique por 2
inicio // algoritmo
real: a, resp
escreva (“digite o numero”)
leia (a)
resp: a x 2
escreva (“o resultado é resp
fim

6) Elaborar um algoritmo em pseudocódigo que efetue a leitura de um número


inteiro e apresentar uma mensagem informando se o número é par ou ímpar.

algoritmo "Par ou Ímpar"


var
n: inteiro
inicio
escreva ("Insira um número inteiro: ")
leia (n)
se (n mod 2 = 0) entao
escreva ("O número: ",n," é par")
senao
escreva ("O número: ",n," é impar")
fim se
fimalgoritmo

7) Elaborar um algoritmo em pseudocódigo que efetue a leitura de um valor que


esteja entre a faixa de 1 a 9. Após a leitura do valor fornecido pelo usuário, o
programa deverá indicar uma de duas mensagens: “O valor está na faixa
permitida”, caso o usuário forneça o valor nesta faixa, ou a mensagem “O valor
está fora da faixa permitida”, caso o usuário forneça valores menores que 1 ou
maiores que 9.

algoritmo "Faixa Permitida"


var
n :real
inicio
escreva ("Digite um valor: ")
leia (n)
se (n >= 1) e (n <= 9) entao
escreva ("O valor está na faixa permitida")
senao
escreva ("O valor não está na faixa permitida")
fim se
fimalgoritmo

8) Elaborar um algoritmo em pseudocódigo que efetue a leitura do nome e do sexo


de uma pessoa, apresentando como saída uma das seguintes mensagens: “Ilmo.
Sr.”, para o sexo informado como masculino, ou a mensagem “Ilma. Sra.”, para o
sexo informado como feminino. Apresente na sequência da mensagem impressa
o nome da pessoa.
algoritmo "Sexo da pessoa"
var
nome, sexo :literal
inicio
escreva ("Digite o seu nome: ")
leia (nome)
escreva ("Digite o seu sexo: ")
leia (sexo)
se (sexo = "Masculino") entao
escreva ("Ilmo Sr. ",nome)
senao
se (sexo = "Feminino") entao
escreva ("Ilmo Sra. ",nome)
senao
escreva ("Digite um sexo válido")
fim se
fim se
fimalgoritmo

9) Fazer um algoritmo para ler quatro valores referentes a quatro notas escolares de
um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor
da média escolar for maior ou igual a 5. Se o aluno não foi aprovado, indicar uma
mensagem informando esta condição. Apresentar junto com uma das mensagens
o valor da média do aluno para qualquer condição.

algoritmo "Situação com média"


var
n1, n2, n3, n4, media :real
inicio
escreva ("Digite a 1ª nota :")
leia (n1)
escreva ("Digite a 2ª nota :")
leia (n2)
escreva ("Digite a 3ª nota :")
leia (n3)
escreva ("Digite a 4ª nota :")
leia (n4)
media<- (n1 + n2 + n3 + n4) / 4
se (media >= 5) entao
escreva ("O aluno foi aprovado com média: ",media)
senao
escreva ("O aluno não foi aprovado com média: ",media)
fim se
fimalgoritmo

10) Fazer um algoritmo em pseudocódigo para ler o ano de nascimento de uma


pessoa, calcular mostrar sua idade e, também, verificar e mostrar se ela já tem
idade para votar (16 anos ou mais) e para conseguir a Carteira de Habilitação (18
anos ou mais).

algoritmo "Maior Idade"


var
ano, idade: inteiro
inicio
escreva ("digite seu ano de nascimento: ")
leia (ano)
idade<- 2013 - ano
escreva ("Sua idade é: ",idade)
se (idade >= 18) entao
escreva ("Ja tem idade para votar")
escreva ("Já tem idade para ter habilitação")
senao
se (idade >= 16 ) entao
escreva ("Já tem idade npara votar")
senao
escreva ("Não pode votar e nem ter habilitação")
fim se
fim se
fimalgoritmo

11) Fazer um algoritmo que leia o código de um determinado produto e mostrar a sua
classificação. Utilize a seguinte tabela como referência:

algoritmo "pesquisa por codigo"


var
codigo, outro :inteiro
cla: literal
inicio
escreva ("Digite o código da pesquisa: ")
leia (codigo)
escolha codigo
caso 1
escreva ("Alimento não perecível")
caso 2, 3, 4
escreva ("Alimento perecível")
caso 5, 6
escreva ("Vestuário")
caso 7
escreva ("Higiene pessoal")
caso 8, 9, 10, 11, 12, 13, 14, 15
escreva ("Limpeza e utensílios domesticos")
outro caso
leia (outro)
escreva ("Inválido")
fim escolha
fimalgoritmo

12) Escrever um algoritmo para ler três valores inteiros e escrever na tela o maior e o
menor deles. Considere que todos os valores são diferentes.

algoritmo "Maior e Menor Valor"


var
v1, v2, v3: inteiro
inicio
escreva ("Digite o primeiro valor: ")
leia (v1)
escreva ("Digite o segundo valor: ")
leia (v2)
escreva ("Digite o terceiro valor: ")
leia (v3)
se (v1 > v2) e (v1 > v3) e (v2 > v3) entao
escreva ("O maior valor é: ",v1," e o menor é: ",v3)
senao
se (v1 > v2) e (v1 > v3) e (v3 > v2) entao
escreva ("O maior valor é: ",v1," e o menor é: ",v2)
senao
se (v2 > v1) e (v2 > v3) e (v1 > v3) entao
escreva ("O maior valor é: ",v2," e o menor é: ",v3)
senao
se (v2 > v1) e (v2 > v3) e (v3 > v1) entao
escreva ("O maior valor é: ",v2," e o menor é: ",v1)
senao
se (v3 > v1) e (v3 > v2) e (v1 > v2) entao
escreva ("O maior valor é: ",v3," e o menor é: ",v2)
senao
se (v3 > v1) e (v3 > v2) e (v2 > v1) entao
escreva ("O maior valor é: ",v3," e o menor é: ",v1)
fim se
fim se
fim se
fim se
fim se
fim se
fimalgoritmo

13) Escreva um algoritmo que lê três valores para os lados de um triângulo. O


algoritmo deve verificar se o triângulo é equilátero (todos lados iguais), isósceles
(dois lados iguais) ou escaleno (todos lados diferentes).

algoritmo "Tipo de triangulo"


var
l1, l2, l3: real
inicio
escreva ("Digite o lado 1 do triângulo: ")
leia(l1)
escreva ("Digite o lado 1 do triângulo: ")
leia (l2)
escreva ("Digite o lado 1 do triângulo: ")
leia (l3)
se (l1 = l2) e (l2 = l3) entao
escreva ("O triângulo é equilatero")
senao
se (l1 <> l2) e (l1 <> l3) e (l2 <> l3) entao
escreva ("O triângulo é escaleno")
senao
se (l1 = l2) ou (l1 = l3) ou (l2 = l3) entao
escreva ("O triângulo é isósceles")
fim se
fim se
fim se
fimalgoritmo

14) Um homem precisa atravessar um rio com um barco que possui capacidade de
transportar apenas ele mesmo e mais uma de suas três cargas, que são: um
lobo, um bode e uma caixa. Indique as ações necessárias para que o homem
consiga atravessar o rio sem perder suas cargas.

 O lobo não pode ficar sozinho com o bode, senão ele o come;
 O bode não pode ficar sozinho com a caixa de alfafa, senão a come;

Resposta:

Informações: um barco, um homem, um lobo, um bode e uma caixa.


Ação: atravessar o rio sem perder as cargas.

Resultado: todas as cargas na outra margem do rio.

Algoritmo

início

atravessar homem e bode

voltar homem

atravessar homem e lobo

voltar homem e bode

atravessar homem e a caixa

voltar homem

atravessar homem e bode

fim

15) Um programa que calcule a área do triângulo.

algoritmo “area_triangulo”
var
base, altura, area: real
inicio
escreva (“Digite o valor da base:”)
leia (base)
escreva (“Digite o valor da altura”)
leia (altura)
area <-(base*altura)/2
escreval (“A area do triangulo é”, area)
fimalgoritmo

16) Faça um programa que receba o saldo de uma aplicação e imprima o valor
aplicado e valor com rendimento de 5%.
algoritmo “saldo”
var
saldo, valor_total: real
inicio
escreval(“Digite o saldo:”)
leia(saldo)
valor_total<-saldo+(saldo*5)/100
escreval(“O saldo mais o rendimento em 5% é”, valor_total)
fimalgoritmo
17) Ler dois valores para as variáveis A e B, e efetuar as trocas dos valores de forma
que a variável A passe a possuir o valor da variável B e a variável B passe a possuir
o valor da variável A. Apresentar os valores trocados.

inicio
variavel real A, B, C, D
escrever ” Digite o Valor A”
ler A //10
escrever ” Digite o Valor B”
ler B //25
D<-B
C<-A
escrever “A variavel A tinha valor: “, A, ” Agora está com
valor “, D
escrever “\n A variavel B tinha valor: “, B, ” Agora está
com valor de A “, C
fim

18) Ler uma temperatura em graus Celsius e apresentá-la convertida em graus


Fahrenheit. A fórmula de conversão é: F= (9*C+160)/5, sendo F a temperatura em
Fahrenheit e C a temperatura em Celsius.

inicio
variavel real: TempC, x, f
escrever “Digite a temperatura em Graus Celsius \n”
ler TempC
x<-9*TempC+160
f<-x / 5
escrever “A temperatura em graus Fahrenheit: “, f
fim

19) Elaborar um algoritmo que efetue a apresentação do valor da conversão em real


(R$) de um valor lido em dólar (US$). O algoritmo deverá solicitar o valor da
cotação do dólar e também a quantidade de dólares disponíveis com o usuário.

inicio
variavel real: CotacaoDolar, QtdeDeDolares, ValorConvertido
escrever “Digite o valor da cotação do dólar: “
ler CotacaoDolar
escrever “Quantos dolares voce tem? “
ler QtdeDeDolares
ValorConvertido<-CotacaoDolar*QtdeDeDolares
escrever “Voce tem: “,
ValorConvertido, ” reais. \n”
Fim

20) Faça um algoritmo que receba um número e mostre uma mensagem caso este
número seja maior que 10.

inicio
variavel real: NumeroDigitado
escrever “Informe um número e lhe mostro se é maior do que 10”
ler NumeroDigitado
se NumeroDigitado > 10 entao
escrever “Este número é maior do 10”
senao
escrever “Este número NÃO é maior do 10”
fimse
fim

Você também pode gostar