Você está na página 1de 26

ALGORITMO

ETAPA 1
INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO
CENTRO UNIVERSITÁRIO
LEONARDO DA VINCI
Rodovia BR 470, Km 71, nº 1.040, Bairro Benedito
89130-000 - INDAIAL/SC
www.uniasselvi.com.br

Curso sobre Algoritmo


Centro Universitário Leonardo da Vinci

Organização
Greisse Moser Badalotti

Autor
Márcio Poffo

Reitor da UNIASSELVI
Prof. Hermínio Kloch

Pró-Reitoria de Ensino de Graduação a Distância


Prof.ª Francieli Stano Torres

Pró-Reitor Operacional de Ensino de Graduação a Distância


Prof. Hermínio Kloch

Diagramação e Capa
Renan Willian Pacheco

Revisão
Harry Wiese
ALGORITMO 3

O estudo das técnicas para a resolução de problemas e, consequentemente, a


automatização de tarefas é essencial para a formação de um bom desenvolvedor de
software. O aprendizado da lógica de programação serve de base para o aprendizado
de todas as linguagens de programação existentes atualmente, permitindo que você
desenvolva um raciocínio rápido e conciso.

Para desenvolver um programa de computador, é necessário, primeiramente,


investigar e entender o problema e, uma vez compreendido, é possível buscar ou propor
uma solução para tal – um algoritmo.

Nesta etapa, você estudará os conceitos básicos relacionados à resolução de


problemas por intermédio de algoritmos, além das formas ou métodos de representação
de algoritmos, como, por exemplo, textual, pseudolinguagem e fluxograma. Além disso,
será apresentada uma técnica essencial para a validação e o entendimento de como
determinado algoritmo funciona e como ele se comporta ao longo de sua execução,
conhecida como teste de mesa.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


4 ALGORITMO
1. RESOLUÇÃO DE PROBLEMAS

Neste curso, iniciaremos nossos estudos sobre algoritmos. Mas antes de


começarmos, seria útil uma reflexão sobre o significado da palavra “lógica”, bem como
da aplicabilidade de tal conceito no âmbito computacional. Então, o que é lógica? A
palavra lógica está normalmente vinculada à coerência e à racionalidade. Para Forbellone
e Eberspächer (2005, p. 1), a lógica pode ser associada com a “correção do pensamento”,
preocupando-se em determinar quais ações são válidas e quais não são, analisando as
formas e leis do pensamento.

Frequentemente, o conceito de lógica aplica-se apenas ao contexto da matemática,


conforme exemplos de lógica proposicional ilustrados nas Figuras 1.1(a) e 1.1(b). Porém,
a lógica nos acompanha no dia a dia, quando escrevemos, falamos ou pensamos. As
Figuras 1.1(c) e 1.1(d) demonstram alguns exemplos de pensamentos lógicos em nosso
cotidiano.

Figura 1.1 – Exemplos de encadeamento lógico aplicado em diferentes contextos. (a) e (b) silogismos
da lógica proposicional. (c) e (d) sequência lógica aplicada em atividades do cotidiano.
Todo ser humano é um mamífero. O Mercosul é composto por países da América do Sul.
Pedro é um ser humano. O Brasil compõe o Mercosul.
Logo, Pedro é um mamífero. Logo, o Brasil está localizado na América do Sul.
(a) (b)
José é mais velho que Paola. O lápis está dentro da gaveta.
Paola é mais velha que Thiago. A gaveta está fechada.
Logo, José é mais velho que Thiago. Precisamos primeiro abrir a gaveta para depois pegar
o lápis.
(c) (d)
Fonte: O autor

O raciocínio lógico nos permite utilizar corretamente as leis do pensamento e


dos processos de cognição, objetivando a racionalidade e o desenvolvimento de técnicas
para a produção de soluções logicamente válidas e coerentes. Imagine se, no exemplo
exposto na Figura 1.2, o disjuntor principal não fosse desligado? Ou se não houvesse
uma escada disponível? Como trocaríamos a lâmpada queimada?

Figura 1.2 – Sequência lógica dos passos para se trocar uma lâmpada queimada

Fonte: O autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 5

Manzano e Oliveira (2016) ressaltam a importância do raciocínio lógico quando


aplicado pelos profissionais da área de tecnologia da informação envolvidos com o
desenvolvimento de sistemas e programas computacionais, pois estes têm como funções
o desenvolvimento de soluções para os mais diversos problemas com eficiência e eficácia.

A lógica de programação permite definir a sequência lógica (sequência de passos/


instruções) para o desenvolvimento. É uma técnica de encadear pensamentos para atingir
um determinado objetivo ou solucionar um problema. De uma maneira geral, instruções
referem-se a um conjunto de regras ou nomes definidos para a realização ou emprego
de algo. No âmbito computacional, uma instrução é o que indica ao computador uma
ação elementar a executar.

É importante ressaltar que uma instrução, tomada de forma isolada, não tem
muito sentido. Deve-se colocar em prática o conjunto de todas as instruções, na
ordem correta, para se obter o resultado desejado (como exposto na Figura 1.2). E, ao
organizarmos as instruções de maneira lógica e concisa, elaboramos um algoritmo!
Mas o que é um algoritmo?

Formalmente, um algoritmo é uma sequência finita de passos (instruções)


que levam à execução de uma tarefa ou à solução de um determinado problema.
Considerando que, ao longo do desenvolvimento de um algoritmo estamos definindo
uma “norma de execução dos passos/instruções”, é necessário obedecermos a algumas
premissas básicas no momento de sua construção, como a definição de passos/instruções
simples e sem ambiguidade, e a organização dos passos/instruções de forma ordenada;

O conceito de algoritmo é geral, podendo ser aplicado a qualquer circunstância,


não estando limitado apenas ao contexto computacional. Perceba que uma receita de
bolo é um exemplo de algoritmo, contendo os passos, ingredientes, quantidades e a
sequência necessária para a conclusão de uma tarefa: a preparação de um bolo (Figura
1.3).

Figura 1.3 – Uma receita de bolo é um algoritmo

Fonte: o autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


6 ALGORITMO
Um algoritmo determina um padrão de comportamento a ser seguido, e não deve
ser confundido com a solução do problema. Ele determina um dos inúmeros caminhos
(entre outras palavras, o conjunto de passos) que levam à solução para um determinado
problema. Além disso, um algoritmo garante, sempre que executado sob as mesmas
condições, o mesmo resultado.

Todo problema a ser solucionado por intermédio de um algoritmo precisa ser


claro e bem definido. Devemos extrair todas as informações a respeito do problema
e relacioná-las com o conhecimento atual que se tem do assunto, a fim de descrever
os passos para se chegar à sua solução. O Algoritmo 1.1 é um exemplo simples e bem
definido de um algoritmo (sem estruturas mais complexas como seleção e repetição)
para se resolver o jogo das Torres de Hanói (Figura 1.4). Por definição, temos que:

A Torre de Hanói consiste de uma base com três pinos e um certo número N de
discos de diâmetros diferentes, colocados um sobre o outro em um dos pinos, em
ordem decrescente de seus diâmetros, de baixo para cima [...]. O jogo consiste
em transferir a torre de discos para um dos outros dois pinos, movimentando
um disco de cada vez, utilizando-se um dos pinos livres como auxiliar e nunca
colocando um disco sobre outro de diâmetro menor. (DEPARTAMENTO DE
MÁTEMATICA – UFOP, 2017, p. 1).

Tabela 1.1 – Algoritmo para resolver o problema das Torres de Hanói


Início
1. Mover um disco da haste A para a haste B.
2. Mover um disco da haste A para a haste C.
3. Mover um disco da haste B para a haste C.
4. Mover um disco da haste A para a haste B.
5. Mover um disco da haste C para a haste A.
6. Mover um disco da haste C para a haste B.
7. Mover um disco da haste A para a haste B.
Fim
Fonte: O autor

Figura 1.4 – O problema das Torres de Hanói com três discos de diâmetros diferentes (em ordem
decrescente por diâmetro) e três hastes: A, B e C. Tendo como objetivo final a transferência
de todos os discos da haste A (situação inicial) para a haste B (situação final), utilizando a
haste C como haste auxiliar.

Fonte: O autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 7

A Figura 1.5 ilustra a execução do algoritmo da Tabela 1.1, proposto anteriormente.


Perceba que para um mesmo problema, podem existir diversos algoritmos que
solucionem o problema (poderíamos começar movendo o disco menor para a haste C,
no passo 1). No entanto, deve-se observar qual dentre os possíveis algoritmos é o mais
eficiente para se economizar horas de processamento.

Figura 1.5 – Ilustração passo a passo de cada uma das etapas descritas no algoritmo da tabela 1.1

Fonte: O autor

Até o momento estudamos algoritmos para resolver problemas das mais diversas
áreas (veja o exemplo do algoritmo da Tabela 1.2). Isso é possível porque essa estruturação
sequencial dos passos para se desenvolver um algoritmo não está vinculada apenas ao
âmbito computacional. O fluxo de execução, independentemente do contexto em que
o algoritmo está inserido, é linear, de cima para baixo, assim como é a sequência pela
qual lemos este livro, do início ao fim.

Tabela 1.2 – Algoritmo para ligar o ar-condicionado de uma sala de aula


Início
1. Colocar as pilhas no controle do ar-condicionado.
2. Se deslocar próximo ao ar-condicionado.
3. Ligar o aparelho.
4. Selecionar a temperatura desejada.
Fim
Fonte: O autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


8 ALGORITMO
1.1. ETAPAS DE UM ALGORITMO
Um algoritmo, quando programado em um computador, é constituído por três
partes principais: entrada, processamento e saída (Figura 1.6). Isto significa que, para
resolver qualquer problema computacionalmente, teremos dados que servirão como
entrada para o algoritmo, procedimentos que irão tratar os dados de entrada (sendo
estes fornecidos no momento em que o programa está em execução ou podem estar
embutidos dentro do mesmo), e uma saída – fruto da etapa de processamento.

Figura 1.6 – Etapas básicas de um algoritmo

Fonte: O autor

A etapa de entrada de dados é a parte em que o computador recebe as informações


necessárias para que o algoritmo possa ser executado com sucesso. Estas informações
podem ser armazenadas na memória principal de um computador ou na memória
secundária para algum uso futuro (caso você tenha alguma dúvida sobre a diferença
entre ambas as memórias, consulte a Figura 1.8, que apresenta a organização das
estruturas básicas que compõe um computador).

Na etapa de processamento, o computador, por meio de um programa executado


em sua memória primária, avalia todas as expressões lógicas, relacionais e algébricas,
assim como todas as estruturas de seleção e repetição presentes no algoritmo. Nesta
etapa, também é feito a transformação dos dados de entrada, realizando todos os
procedimentos para se chegar no resultado final.

Por fim, na etapa de saída, todos os resultados da etapa anterior (ou parte
deles) são enviados para o mundo externo por intermédio dos dispositivos de saída
do computador, como: monitor, impressora, fax, caixa de som. Estes resultados podem
servir como entrada para outro algoritmo, ou serem usados como fonte de informação
para o usuário do computador, e assim facilitar suas tomadas de decisões.

Vamos analisar um problema computacional prático, a fim de compreender


melhor estas três etapas fundamentais de um algoritmo.

Marcelo foi contratado para desenvolver um algoritmo que calcule o Índice de


Massa Corporal (IMC) de uma pessoa. Tal índice indica se um ser humano adulto está
acima do peso, obeso ou em seu peso ideal. A fórmula para se calcular o IMC é a seguinte:
. Como Marcelo deve proceder para desenvolver o algoritmo requerido?
Quais são os passos e/ou ações que ele deve tomar? Lembre-se de que um algoritmo

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 9

especifica com clareza e de forma correta as instruções que um software deverá conter
para que, ao ser executado, forneça os resultados esperados.

Num primeiro momento, Marcelo deve compreender bem qual é o problema a ser
resolvido pelo algoritmo (Figura 1.7). Feito isto, podem-se extrair todas as informações a
respeito desse problema (dados e operações), relacioná-las com o conhecimento atual (ou
disponível) que se tem do assunto – cálculo do IMC. Finalmente, uma vez compreendido
como resolver o problema, resta descrever claramente os passos (ou instruções) para se
chegar à solução do problema.

Figura 1.7 – A tarefa de especificar um algoritmo

Fonte: EBAH (2017).

Quais são as instruções, então, necessárias para que Marcelo desenvolva o


algoritmo para o qual fora contratado? Como o objetivo do algoritmo é calcular o IMC
de uma pessoa adulta (envolvendo a informação de peso e altura dessa mesma pessoa),
devemos saber quais são os valores a serem considerados na fórmula.

Assim, essas informações devem ser consideradas para a etapa de entrada do


algoritmo. Sendo que, ao longo do processamento, o peso e a altura serão utilizados
para efetuar o cálculo necessário da fórmula referida. Portanto, as primeiras instruções
poderiam ser: “Informe o peso da pessoa” e “Informe a altura da pessoa”.

Munido de todas as informações necessárias para se calcular o IMC, Marcelo


pode agora se preocupar com a etapa de processamento, a qual irá, de fato, realizar
a aritmética necessária para se obter o valor do IMC, dividindo o valor do peso pelo
quadrado da altura. Depois de obtido e armazenado o resultado, Marcelo deve ainda se
preocupar com a última etapa, a etapa de saída, exibindo o resultado em um monitor
ou qualquer outro dispositivo de saída do computador.

Viu só? Nem é tão complicado quanto parecia! Veja como ficou o algoritmo
desenvolvido por Marcelo (algoritmo da Tabela 1.3), descrito em uma linguagem bem

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


10 ALGORITMO
simples. Antes de começarmos a estudar quais as diversas maneiras para formalizarmos
um algoritmo, é preciso esclarecer alguns outros aspectos, como a diferença de um
algoritmo para um programa, e também alguns outros conceitos sobre dados e instruções.

Tabela 1.3 – Algoritmo para efetuar o cálculo do Índice de Massa Corporal (IMC)
Início
1. Solicitar e armazenar o peso da pessoa para a qual se deseja calcular o IMC.
2. Solicitar e armazenar a altura da pessoa para a qual se deseja calcular o IMC.

3. Calcular e armazenar o resultado da fórmula matemática:


4. Exibir o resultado em um dispositivo de saída, como, por exemplo, o monitor.
Fim
Fonte: O autor

Figura 1.8 – Organização dos blocos funcionais de um computador. A memória primária é


acessada diretamente pela Unidade Lógica e Aritmética (ULA) do microprocessador,
podendo ser de leitura e escrita (RAM, do inglês Random Access Memory) ou apenas
de leitura (ROM, do inglês Read Only Memory). Já a memória secundária não é
acessada diretamente pela ULA, mas sim por meio de controladores, ocasionando
uma performance/velocidade de acesso e escrita inferior quando comparado à
memória principal.

Fonte: Wikipédia (2017)

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 11
2. ALGORITMOS VS. PROGRAMAS
Algoritmos são um conjunto de etapas para realizar a execução de uma tarefa
(CORMEN, 2014). Neste sentido, um algoritmo é um procedimento. Na seção anterior
foi apresentado um exemplo de algoritmo para executar a tarefa de calcular o IMC de
uma pessoa.

Um algoritmo é transformado em programa após ser convertido para uma


linguagem de programação aceita por um computador real (CORMEN, 2014).

Neste sentido, um programa utiliza representações e estruturas mais específicas


que dependem de um computador real, que após compilado, pode ser executado por um
computador real (JUNIOR et al., 2012). Para o aprendizado, é importante desenvolver
um algoritmo para uma solução, para então depois convertê-lo para uma linguagem
de programação real.

Analise o simples algoritmo apresentado na tabela a seguir, que trata de realizar


a multiplicação entre dois números informados.

Tabela 2.1 – Algoritmo para calcular a multiplicação de números positivos


Início
1. Solicitar o primeiro número a ser multiplicado.
2. Solicitar o segundo número, que será utilizado como multiplicador.
3. Calcular a multiplicação seguindo a fórmula matemática:

4. Exibir o resultado em um dispositivo de saída, como, por exemplo, o monitor.


Fim
Fonte: O autor

Agora, para demonstrar a diferença entre algoritmo e programa, vamos antecipar


um pouco nosso conteúdo, transformando o algoritmo da Tabela 2.1 em pseudocódigo,
apresentando a seguir a conversão dele para duas linguagens de programação
interpretadas por computador, Delphi e Java.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


12 ALGORITMO

Tabela 2.2 – Algoritmo da tabela 2.1 convertido em pseudocódigo


Algoritmo Multiplicao positivos
Declaração de variáveis
numero1,
numero2,
resultado,
contador: Inteiro;
Inicio
Escreva(“Escreva o primeiro numero”);
Leia(numero1);
Escreva(“Escreva o segundo numero”);
Leia (numero2);
resultado ← 0;
contador ← 0;
Enquanto contador < numero2 Faça
resultado ← resultado + numero1;
contador ← contador + 1;
Fim-Enquanto
Escreva(resultado);
Fim
Fonte: O autor

Agora observe a tabela a seguir, que apresenta o algoritmo acima convertido


na linguagem Delphi, muito utilizada no desenvolvimento de software. Note que a
lógica permaneceu a mesma, assim como as estruturas de variáveis. Porém, a sintaxe
do comando for (loop), que você conhecerá mais adiante, é bem diferente, embora a
lógica seja a mesma.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 13

Tabela 2.3 – Algoritmo da tabela 2.1 convertido para a linguagem Delphi


procedure TForm1.multiplicacaoPositivos;
var
numero1,
numero2,
resultado,
contador :Integer;
begin
numero1 := StrToInt(Edit1.Text);
numero2 := StrToInt(Edit2.Text);
contador := 0;
resultado := 0;
for contador := 0 to numero2-1 do
begin
resultado := resultado + numero1;
end;
ShowMessage(IntToStr(resultado)); // apresenta uma mensagem
end;
Fonte: O autor

Na tabela a seguir, apresenta-se o mesmo algoritmo convertido para a linguagem


Java, também muito utilizada no desenvolvimento de software. Novamente, a sintaxe do
comando for (loop), é um pouco diferente do algoritmo, embora a lógica seja a mesma.

Tabela 2.4 – Algoritmo da tabela 2.1 convertido para a linguagem Java


private void multiplicacaoPositivos(){
int numero1 = 0;
int numero2 = 0;
int resultado = 0;
int contador = 0;

Scanner s = new Scanner(System.in);
System.out.println("Digite o primeiro número");
numero1 = s.nextInt();
System.out.println("Digite o segundo número");
numero2 = s.nextInt();
for (contador = 0; contador <= numero2-1; contador++){
resultado = resultado + numero1;
}
System.out.println(resultado);
}
Fonte: O autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


14 ALGORITMO
Os programas de computador possuem procedimentos, também chamados por
funções ou métodos, conforme pode ser analisado nos algoritmos 1.5 e 1.6, que possuem
o método “multiplicacaoPositivos” que realiza a tarefa do cálculo, o qual é chamado de
algum ponto do programa (CORMEN, 2014).

3. DADOS E INSTRUÇÕES

Inicialmente, vamos entender a diferença entre dados e informações. Os dados


representam pequenos significados ou registros não tratados, que isoladamente não
podem transmitir uma mensagem ou informação. Neste contexto, informação pode ser
entendida por dados tratados, isto é, o resultado de processamento de dados, dos quais
podem serem tomadas decisões. Neste caso, a saída de um algoritmo é uma informação,
isto é, um dado tratado.

Uma instrução, ou ação, comanda o funcionamento da máquina e determina como


os dados devem ser tratados. Neste sentido, um programa é um conjunto de instruções
que tratam dados, e estes são transformados em informações (TEIXEIRA, 2011).

As instruções de algoritmos, assim como das linguagens de programação,


referem-se diretamente aos dados que serão tratados, diferentemente das instruções da
linguagem de máquina que referem-se à localização física dos dados (TEIXEIRA, 2011).
Por isso que a programação em linguagens de alto nível torna-se mais fácil e legível.

As instruções primitivas são os comandos que efetuam as tarefas essenciais para
a operação de um computador, como a entrada e saída de dados, assim como a sua
movimentação na memória da máquina. Estas instruções estão inseridas na maioria das
linguagens de programação, para que destas se consiga desenvolver um programa que
realize alguma tarefa necessária. Como e de onde estas instruções recebem os dados
para processar?

• Dispositivos de entrada: É o meio pelo qual são transferidos os dados do usuário


ou de dispositivos de memória secundários para a memória do computador. São
exemplos destes dispositivos: teclado, mouse, discos, pen drives etc.
•Dispositivos de saída: É o meio pelo qual os dados tratados são transferidos do
computador para o usuário ou aos dispositivos de memória secundários. São
exemplos destes: monitor de vídeo, impressora, pen drives etc.

A instrução primitiva de atribuição, ou simplesmente conhecida por atribuição,


é o principal meio para transferir dado para uma variável de memória. Segue na tabela
a seguir um exemplo de atribuição em pseudocódigo.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 15

Tabela 3.1 – Exemplo de atribuição de valor para uma variável em memória


variavel1 ← 100
Fonte: O autor

4. MÉTODOS PARA REPRESENTAÇÃO DE ALGORITMOS

Os algoritmos computacionais podem ser descritos como um roteiro para a


solução de problemas do mundo real, independentemente da plataforma tecnológica
ou ainda da linguagem de programação (TEIXEIRA, 2011). Isso quer dizer que não
importa qual tecnologia será utilizada para solucionar um determinado problema, pois
a lógica independe disso. O que importa são os procedimentos, isto é, as instruções a
serem seguidas pelo algoritmo estarem corretas, pois é desta forma que os dados gerados
estarão corretos. Neste sentido, imagine a necessidade de desenvolver um programa
que calcule o desconto dos produtos vendidos em uma loja de roupas. Se o cálculo não
estiver correto, serão cobrados os produtos incorretamente.

Para representar os roteiros a serem seguidos pelo computador, foram originadas


diversas formas de representar os algoritmos, principalmente por pseudocódigos e
também por fluxogramas (TEIXEIRA, 2011).

4.1 PSEUDOCÓDIGO

O uso da linguagem natural pode provocar alguns problemas durante a


interpretação do algoritmo, se este estiver em um grau de complexidade elevado. Este
é um dos motivos do surgimento do pseudocódigo.

O pseudocódigo representa um algoritmo de forma independente das linguagens


de programação, utilizando um subconjunto da linguagem falada e que não possua
ambiguidades, possibilitando assim o desenvolvimento de algoritmos mais legíveis
(GARCIA, 2007).

Um algoritmo deve iniciar pelo seu cabeçalho, que é a primeira linha que apresenta
a sua identificação, conforme apresentado na primeira linha da Tabela 4.1, cuja linha
deve apresentar o nome do algoritmo, o qual deve estar relacionado com a tarefa a ser
executada (EDELWEISS; LIVI, 2014). Logo após, devem ser escritas as declarações, isto
é, a lista de variáveis a serem utilizadas no algoritmo, cujos nomes devem indicar qual
sua utilidade no programa, como por exemplo, uma variável que receberá um cálculo, a
qual pode ser chamada de “resultado” (EDELWEISS; LIVI, 2014). Após a declaração das
variáveis, entre as palavras reservadas “Inicio” e “Fim”, devem ser escritas as instruções
do algoritmo. Observe a Tabela 4.1, que exemplifica o formato geral de um algoritmo.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


16 ALGORITMO

Tabela 4.1 – Formato geral de um pseudocódigo


Algoritmo <identificador>
Lista de Variáveis
Inicio
<Intruções a serem executadas>
Fim
Fonte: O autor

Neste sentido, podemos dizer que um computador é basicamente uma máquina


que recebe dados, os processa e então os libera de forma tratada. Em um pseudocódigo,
como em linguagens de programação, as instruções são incluídas uma em cada
linha, representando a sua ordem de serem executadas. Além disso, a boa prática de
programação menciona que se deve utilizar a endentação, que é a tabulação na frente
das linhas, o que torna a leitura do algoritmo mais legível e fácil de compreender. Os
dados são o local onde os valores são armazenados e as instruções são a manipulação
destes dados. Durante o desenvolvimento de instruções, aparecem a necessidade de
utilização de operadores, variáveis e funções, os quais serão estudados mais adiante.

Agora que entendemos os conceitos de algoritmos e pseudocódigo, vamos propor


um algoritmo e depois transformá-lo em um pseudocódigo. Tomemos os problemas a
seguir para serem solucionados por algoritmos.

a) Desenvolver um algoritmo que efetue a soma de dois números inteiros informados


pelo usuário cujo resultado seja escrito em um dispositivo de saída.

Tabela 4.2 – Algoritmo desenvolvido para o problema atual


Início
1. Solicitar o primeiro número ao usuário e então armazená-lo em uma variável.
2. Solicitar o segundo número ao usuário e então armazená-lo em uma outra variável.
3. Somar os dois números e armazenar o resultado da fórmula matemática em outra
variável.
4. Exibir o resultado em um dispositivo de saída, como, por exemplo, o monitor.
Fim
Fonte: O autor

Agora convertemos o algoritmo atual, escrito na Tabela 4.2, para a linguagem


pseudocódigo. Observe como o código-fonte é simples e também compreensível.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 17

Tabela 4.3 – Pseudocódigo desenvolvido para o problema atual


Algoritmo Soma positivos
Declaração de variáveis
numero1,
numero2,
resultado: Inteiro;
Inicio
Escreva(“Escreva o primeiro numero”);
Leia(numero1);
Escreva(“Escreva o segundo numero”);
Leia(numero2);
resultado ← numero1 + numero2;
Escreva(resultado);
Fim
Fonte: O autor

Basicamente seguiu-se as instruções do algoritmo para implementar o


pseudocódigo. Por exemplo: para solicitar ao usuário o primeiro número, criou-se a
variável “numero1” e incluiu-se o comando “ler(numero1)” para o usuário digitar o
número e atribuir o valor a esta variável. O mesmo foi feito para as demais instruções
de nosso algoritmo.

b) Desenvolver um algoritmo que efetue o cálculo da média de um aluno, informado


pelo usuário. Neste caso, o usuário deve informar o nome do aluno, a nota 1 e a nota
2, e o programa deve calcular a média da nota e então exibir o resultado em um
dispositivo de saída com o nome do aluno e a sua média.

Tabela 4.4 – Algoritmo desenvolvido para o problema atual


Início
1. Solicitar o nome do aluno e armazená-lo em uma variável.
2. Solicitar a primeira nota do aluno e então armazená-la em uma outra variável.
3. Solicitar a segunda nota do aluno e então armazená-la em uma terceira variável.
4. Calcular a média das notas utilizando a fórmula matemática: .
5. Exibir o resultado em um dispositivo de saída, como, por exemplo, o monitor.
Fim
Fonte: O autor

Agora convertemos o algoritmo atual, escrito na Tabela 4.4, para a linguagem


pseudocódigo. Para isso, seguimos o mesmo procedimento: lemos cada instrução e a
convertemos em código.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


18 ALGORITMO

Tabela 4.5 – Pseudocódigo desenvolvido para o problema atual


Algoritmo Soma positivos
Declaração de variáveis
nome :String;
nota1,
nota2,
media: Real;
Inicio
Escreva(“Escreva o nome do aluno”);
Leia(nome);
Escreva(“Escreva a nota 1”);
Leia(nota1);
Escreva(“Escreva a nota 2”);
Leia(nota2);
media ← (nota1 + nota2)/2;
Escreva(“O aluno ”, nome, “possui a média ”, media);
Fim
Fonte: O autor

4.2 FLUXOGRAMA

O pseudocódigo, conforme já mencionado, é uma das formas de representar


um algoritmo de maneira que não fique ambíguo e seja independente das linguagens
de programação. Porém, podemos também representar um algoritmo através de um
fluxograma, também conhecido por diagrama de blocos. A utilização de fluxograma
é outra forma de representar a solução para um problema. Fluxograma é uma forma
de representação gráfica que auxilia no processo de início do desenvolvimento de um
programa, facilitando o entendimento de seus passos e de seu processo (OKUYAMA;
MILETTO; NICOLAO, 2014).

Fluxograma é um instrumento gráfico bastante utilizado para a organização e


metodologias de processos, pois facilita o entendimento (VERGUEIRO, 2002). O termo
fluxograma pode ser ainda entendido como a representação gráfica de um fluxo de
trabalho, desenvolvido geralmente por recursos de figuras geométricas normalizadas,
assim como setas que as unem (VERGUEIRO, 2002). Além disso, fluxograma tem por
finalidade apresentar de forma rápida e mais compreensível o fluxo de informações e
as ações da sequência operacional de algum processo.

Um exemplo de um processo é um serviço de uma biblioteca que possui um certo


método, em que as pessoas (bibliotecários, funcionários, estudantes) realizam tarefas,
como empréstimo de livros e devoluções, por exemplo, o que pode ser implantado em

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 19
um sistema de informação. Para isso, é necessário desenvolver um fluxograma para
compreender todo o processo, e depois implementá-lo em linguagens de programação
(VERGUEIRO, 2002).

Neste sentido, um fluxograma preocupa-se com todos os detalhes existentes


em um algoritmo, utilizando as figuras geométricas para representar as ações a serem
executadas, assim como a entrada e saída de dados, as unidades de armazenamento, o
fluxo dos dados e também tomadas de decisões (RITA, 2009).

De forma geral, o fluxograma pode ser entendido como uma representação


esquemática de um processo, desenvolvido através de gráficos, que ilustra a sequência
de passos de forma descomplicada (JUNIOR et al., 2012). Em um fluxograma, cada
passo é representado por um desenho (forma geométrica), representando o problema
de forma geral (JUNIOR et al., 2012). Os principais elementos de um fluxograma são
apresentados na figura a seguir.

Figura 4.2.1 – Elementos mais utilizados de um fluxograma

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


20 ALGORITMO

Fonte: Rita (2009, p. 18-19).

Agora que entendemos a conceituação de fluxograma, vamos desenvolver um


fluxograma para o algoritmo descrito na Tabela 2.1 deste caderno de estudos? Apenas
para relembrar, o problema a ser resolvido é: desenvolver um algoritmo que realize a
multiplicação entre dois números informados.

Vamos desenvolver este fluxograma passo a passo:


a. Inicialize nosso algoritmo com a figura geométrica elipse, figura que demarca
o início e fim do algoritmo.
b. Logo após, crie um paralelogramo inserindo como texto as variáveis que
receberão a entrada de dados, que neste caso são “numero1” e “numero2”.
c. Aplique a seta da elipse de início para o paralelogramo (dados).
d. Em seguida, crie um retângulo, e neste escreva o cálculo da multiplicação,
utilizando a variável “resultado” recebendo o resultado do cálculo.
e. Aplique a seta do paralelogramo (dados) para o retângulo.
f. Crie um outro paralelogramo, cuja descrição será a variável “resultado”.
g. Crie uma elipse, com a descrição “Fim”.
h. Inclua as setas nas últimas figuras criadas.

Veja na figura a seguir como deve ficar nosso fluxograma.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 21
Figura 4.2.2 – Fluxograma para algoritmo da tabela 2.1 deste caderno de estudos

Fonte: O autor

Conforme se pode analisar na figura acima, temos um fácil entendimento do


processo que foi desenvolvido como solução do problema. A utilização de fluxograma
também garante que diferentes pessoas que entrarem para trabalhar em um projeto
compreendam os processos mais facilmente.

Vejamos outro exemplo de fluxograma, um pouco mais complexo por ter uma
condição (if). Vamos desenvolver o fluxograma para a devolução de uma obra para
uma biblioteca.

Figura 4.2.3 – Fluxograma para o processo de devolução de obras de uma biblioteca

Fonte: O autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


22 ALGORITMO
5. TESTE DE MESA

Teste de mesa é um meio de validar um algoritmo. Através do teste de mesa


podemos analisar o que ocorre com as variáveis e regras de um algoritmo durante o
fluxo de um programa (MELO, 2013). O teste de mesa, também chamado de teste de
bancada, é uma das ferramentas mais utilizadas para verificar se um algoritmo está
sendo executado corretamente (LEITE, 2006). O teste de mesa aponta para o programador
exatamente o que o programa está processando no momento.

Além disso, podemos descrever um teste de mesa como a tarefa de verificar se


cada um dos passos programados no algoritmo, após o desenvolvimento do mesmo,
está correto. Para fazer um teste de mesa, deve ser lida cada uma das instruções do
algoritmo e ir anotando em um papel, ou em uma tabela, o resultado de cada um dos
passos, o que facilita perceber se existe algum erro ou ainda algum outro meio melhor
para a solução do problema.

Na tabela a seguir, descrevem-se os procedimentos para executar um teste de


mesa simples:

Tabela 5.1 – Procedimentos para executar um teste de mesa simples


1. Desenvolver uma tabela em que cada coluna se refere a uma variável utilizada no
programa.
2. Executar as instruções previstas no algoritmo.
3. Verificar se os resultados estão corretos.
4. Concluir os testes após um número razoável de resultados corretos.
Fonte: O autor

Agora que aprendemos o conceito e como funciona um teste de mesa, que tal
aprendermos na prática? Então vamos rever o algoritmo da Tabela 2.1 deste caderno, e
desenvolveremos o teste de mesa. Analise os dados da figura a seguir que apresenta o
passo a passo, e logo depois a explicação de cada uma das linhas do nosso teste de mesa.

Figura 4.2.4 – Teste de mesa para o algoritmo da tabela 2.1 deste caderno

Fonte: O autor

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 23
Vamos agora analisar o teste de mesa realizado: No passo “Início”, as variáveis
ainda estavam com valor zero, pois o programa ainda não havia iniciado, apenas a
declaração das variáveis. No passo 1, foi solicitado um número para o usuário, o qual
foi atribuído para a variável “numero1”. No passo 2, o segundo número foi solicitado
ao usuário, o qual foi atribuído para a variável “numero2’. No passo 3, foi realizado o
cálculo e atribuído o resultado para a variável “resultado”, que no passo 4 foi exibido
o resultado na tela.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


24 ALGORITMO
REFERÊNCIAS

CORMEN, T. H. Desmistificando algoritmos. Rio de Janeiro: Elsevier, 2014.

DEPARTAMENTO DE MATEMÁTICA – UFOP. Disponível em: <http://www.iceb.


ufop.br/demat/perfil/arquivos/0.091292001363381611.pdf>. Acesso em: 20 mar.
2017.

EBAH. Disponível em: <http://www.ebah.com.br/content/ABAAAAFywAF/


algoritmos-logica-programacao?part=2>. Acesso em: 20 mar. 2017.

EDELWEISS, N.; LIVI, M. A. C. Algoritmos e programação: com exemplos em Pascal


e C. Porto Alegre: Bookman, 2014.

FORBELLONE, I. V.; EBERSPACHER, H. F. Lógica de programação: a construção de


algoritmos e estruturas de dados. São Paulo: Prentice Hall, 2005.

GARCIA, N. Linguagem de programação de computadores. E-book, 2007.

JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. M; BIANCHI, F. Algoritmos e


programação de computadores. Rio de Janeiro: Elsevier, 2012.

LEITE, M. Técnicas de programação: uma abordagem moderna. Rio de Janeiro:


Brasport, 2006.

MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento


de programação de computadores. São Paulo: Saraiva, 2016.

MELO, D.T. Lógica de programação com VisualG: uma abordagem prática. Mococa-
SP: Ed. do Autor, 2013.

OKUYAMA, F. Y.; MILETTO, E. M.; NICOLAO, M. Desenvolvimento de software:


conceitos básicos. Porto Alegre: Bookman, 2014.

RITA, S. Treinamento em lógica de programação. São Paulo: Digerati, 2009.

TEIXEIRA, C. Construção de algoritmos no século XXI. Independentes, 2011.

VERGUEIRO, W. Qualidade em serviços de informação. São Paulo: Arte & Ciência,


2002.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


ALGORITMO 25
WIKIPÉDIA. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo
enciclopédico. Disponível em: <https://pt.wikipedia.org/wiki/Computador>. Acesso
em: 20 mar. 2017.

Copyright © UNIASSELVI 2016. Todos os direitos reservados.


Centro Universitário Leonardo da Vinci
Rodovia BR 470, km 71, n° 1.040, Bairro Benedito
Caixa postal n° 191 - CEP: 89.130-000 - lndaial-SC
Home-page: www.uniasselvi.com.br

Você também pode gostar