Você está na página 1de 8

1 - Conceitos Básicos

Paulo Sérgio Custódio e Simone Fernandes Gonçalves Siqueira

Introdução
Nesta unidade temática, iremos aprender os conceitos fundamentais de algoritmos e programação estruturada.
Você sabia que todo software moderno contém uma coleção de algoritmos ligados entre si que transformam
dados de entrada em dados de saída?
Neste tema, definiremos o que é um algoritmo, suas diversas formas de representação e sua relação com as
linguagens de programação. Em seguida, indicaremos uma ferramenta muito importante para a escrita de
algoritmos em uma pseudolinguagem (Portugol), usando os programas Portugol Studio e PortugolIDE.

Algoritmo
Segundo Forbellone (2000, p. 3), algoritmo pode ser definido como uma sequência de passos que visam atingir
um objetivo bem definido. Entendemos isso como uma definição informal. Por exemplo: se você deseja fritar um
ovo, existe uma sequência lógica e natural de passos para realizar a tarefa.
No entanto, como nossa disciplina está relacionada ao uso de algoritmos na ciência da computação, vamos
utilizar outra definição.
Assim, a definição formal de Algoritmo seria: um algoritmo é uma sequência finita de instruções cujo objetivo
é transformar uma entrada de dados em uma saída de dados, resolvendo-se um problema computacional
não ambíguo.
1) O objetivo de um algoritmo é a solução de um problema computacional, ou seja, qualquer problema que
pode ser executado por um computador.
2) Essa solução deve terminar em um tempo finito, ou seja, deve envolver um número de passos finito, daí que a
sequência de instruções deve ser finita.
3) Ele transforma uma entrada de dados em uma saída de dados.
4) A saída de dados, em si, deve ser interpretável, de modo que possamos testar se o algoritmo de fato resolveu o
nosso problema.
5) O problema computacional a ser resolvido deve ser não ambíguo, ou seja, deve estabelecer algo que possa ser
de fato executado por um computador. Por exemplo: você não pode pedir para fritar um ovo.

-1-
FIQUE ATENTO
A execução de um programa não quer dizer necessariamente que resolveu adequadamente o
problema computacional. Um algoritmo é considerado correto quando mapeia corretamente o
conjunto de dados de entrada nos dados de saída.

Exemplificando: digamos que você desenvolveu um algoritmo para calcular se um número é par. Você insere o
valor 2 e ele devolve: “2 é par”. Depois, você insere outro número: 3, e ele devolve: “3 é par”.
Esse programa funciona em tempo finito, mas por meio do teste descobrimos que ele está considerando todo
número como par. Por trás desse problema temos um algoritmo incorreto, por isso precisamos estudar para
descobrir onde está o erro e corrigi-lo.

FIQUE ATENTO
Não existe uma correspondência 1:1 entre um problema e um algoritmo para resolvê-lo. Isso
significa que, dado um problema computacional, existe um grande número de algoritmos
diferentes para resolvê-lo. Cabe ao programador realizar a melhor escolha entre os
algoritmos disponíveis ou adaptá-los, criando outros.

Diante disso, no próximo tópico, vamos entender como representar um algoritmo de forma eficaz.

Formas de representar um algoritmo


Temos duas formas de se representar um algoritmo:
· UML, Linguagem de Modelagem Unificada;
· Pseudolinguagem ou portugol.
A representação de um algoritmo usando UML é baseada em um desenho, ou seja, uma representação pictórica
na qual são apresentados símbolos e setas. As setas indicam o fluxo dos dados e os símbolos são caixas que
representam instruções elementares como um desvio condicional, impressão em tela, repetição etc. Sobre isso,
observe a figura a seguir:

-2-
Figura 1 - Fluxograma para a escrita em tela.
Fonte: Elaborada pelo autor, 2018.

O pseudocódigo ou portugol é uma representação escrita para as instruções, mas ela não é padronizada. Os
algoritmos podem ser simples ou detalhados. Essa forma abre duas possibilidades de criação:
1) Você escreve o pseudocódigo em papel;
2) Você escreve o pseudocódigo em um programa próprio para recebê-lo e executá-lo.
Nesse último caso, deve-se observar uma sintaxe mínima para a execução do algoritmo. A seguir, iremos entrar
em contato com essa sintaxe aos poucos, ao analisar os exemplos.
Os softwares utilizados para a representação são o Portugol Studio e PortugolIDE. A figura que segue, utiliza o
mesmo algoritmo da figura anterior, porém está representado em UML e pseudocódigo.

-3-
Figura 2 - Instrução em pseudocódigo.
Fonte: Elaborada pelo autor, 2018.

No próximo tópico estudaremos os dados de entrada e saída e as instruções.

Dados de entrada, dados de saída e instruções


Para entendermos adequadamente o que é um algoritmo, vamos agora explicar melhor o que significam os
dados de entrada.
Os dados de entrada constituem o material sobre o qual o algoritmo deve operar transformando-os e gerando
novos dados, que são os dados de saída. Existem diversos tipos de dados: caracteres, palavras, números,
arquivos de texto, arquivos binários etc.
Assim sendo, considere o seguinte problema computacional:
Escreva um programa que define se um número digitado no teclado é maior ou não do que 10 e informe o
resultado na tela do computador.
Vamos supor que o nosso objetivo seja inserir esse número via teclado. Ao digitar e pressionar ENTER, terá
informado um dado de entrada.

Esse número será armazenado na memória RAM do computador. Quando o algoritmo for executado pelo

-4-
Esse número será armazenado na memória RAM do computador. Quando o algoritmo for executado pelo
programa que o implementa, ele irá ler a memória do computador e captar esse valor numérico. Note que esse
número ocupa apenas uma pequena célula em um endereço da memória RAM.
Em seguida, o algoritmo executa uma instrução elementar, que é a comparação do número digitado com o
número 10, usando o operador matemático >. Observe o exemplo na figura a seguir.

Figura 3 - Algoritmo que define se um número é maior do que 10.


Fonte: Elaborada pelo autor, 2018.

Como esse algoritmo funciona?


1) Na linha 6, definimos uma região na memória do computador para guardar o número que será digitado pelo
usuário. Para isso, essa região deve ser nomeada, nesse caso, chama-se numero.
2) Na linha 8, usamos a instrução: escreva("Informe número"), que irá informar ao usuário do programa o que
ele deverá fazer.
3) Na linha 9, temos um comando de leitura: leia(numero) que irá atribuir um número digitado no teclado
relacionado à variável numero.
4) A linha 11 possui uma condicional SE, que funciona da seguinte forma: se a condição “número maior do que
10” é verdadeira, o programa escreve a primeira frase na tela; caso contrário, escreve a segunda frase.
Nas próximas aulas, estudaremos esse código mais a fundo. Por enquanto, baixe o Portugol Studio e tente
reproduzir o algoritmo do exemplo!
A seguir, explicaremos porque guardamos dados na memória do computador.

-5-
Algoritmos, Linguagens e o Computador
A programação estruturada leva esse nome devido à existência de estruturas que controlam o fluxo dos dados
no programa, que são:
1) Estruturas de condição;
2) Laços de repetição, que serão detalhados em outras aulas.
Dentro dessas estruturas devemos escrever instruções elementares, as quais serão detalhadas nas próximas
aulas, mediante exemplos.
Segundo Tanenbaum (2007), as instruções vão sendo executadas sucessivamente e a partir de endereços
consecutivos na memória, em caso de ausência de desvios e de chamadas a procedimentos.
A Figura a seguir é o fluxograma ou diagrama UML do pseudocódigo da figura anterior. Assim, vamos analisar
cada etapa:

Figura 4 - Diagrama UML do pseudocódigo.


Fonte: Elaborada pelo autor, 2018.

Nela, vemos um bloco rosa que marca o Início do programa. Em seguida, temos um bloco verde que indica que
uma área da memória RAM do computador irá ter o nome numero. Isso indica uma variável, ou seja, um
endereço na memória do computador.
Agora, é relevante entender o conceito mais importante: toda vez que você cria uma variável, está reservando
um espaço na memória para guardar dados.
Prosseguindo a análise da Figura, o losango rosado indica uma operação de leitura dos dados. O número foi
digitado via teclado e, portanto, esse valor será armazenado na posição de memória chamada numero.

Em seguida, aparece outro polígono roxo, onde se lê: numero > 10. Ele representa o desvio condicional SE ...

-6-
Em seguida, aparece outro polígono roxo, onde se lê: numero > 10. Ele representa o desvio condicional SE ...
SENAO.
Dentro dele, temos o operador relacional >, que faz um teste: caso numero > 10 seja verdadeiro (por exemplo,
foi digitado 12), o teste é verdadeiro (SIM) e o algoritmo escreve a frase à direita: numero é maior que dez. Em
seguida, encerra-se o programa (FIM).
Se o número digitado foi, digamos, 6, ele percebe que o resultado é falso (NÃO), e escreve a frase à esquerda: 6 é
menor que dez. Então, encerra-se o programa.
Perceba que não existe possibilidade de escrever as duas frases, pois a estrutura SE ... SENAO é o desvio
condicional da linguagem estruturada.
Por isso é dado esse nome, afinal o desvio acontece para um lado ou para outro, de acordo com a checagem de
uma condição ser verdadeira ou não.

SAIBA MAIS
Quer aprofundar seus conhecimentos sobre as características principais das linguagens
estruturadas?
Acesse o link: <http://www.devmedia.com.br/introducao-a-programacao-estruturada/24951
>.

Lembre-se de que todas as linguagens de programação apresentam estruturas, inclusive as linguagens


orientadas a objetos, que é um paradigma que se refere a outros conceitos.

EXEMPLO
Um programador deseja construir um algoritmo que calcula o valor futuro de uma aplicação
financeira com taxa de juros de 1% ao mês, para um número de meses e um valor presente
arbitrários. Quantas variáveis são necessárias?
Solução: Como a fórmula é: , ele precisará definir três variáveis na memória do computador.

Dessa forma, finalizamos o conteúdo sobre conceitos básicos de programação estruturada.

Fechamento
Neste tema, trouxemos pontos básicos, mas muito importantes sobre programação estruturada. Vimos que um
algoritmo é uma sequência finita de instruções que devem ser realizadas por um computador para obtermos a
solução de um problema. Também aprendemos que algoritmos podem ser representados por diagramas ou
pseudocódigo.

Entendemos que um programa é composto por muitos algoritmos. Os dados que entram em um programa são

-7-
Entendemos que um programa é composto por muitos algoritmos. Os dados que entram em um programa são
armazenados na memória e chamados de variáveis. O algoritmo opera sobre esses dados e realiza uma
sequência de instruções, cujo fluxo é organizado pelas estruturas da linguagem (desvios, repetições etc.). Ao
final, o algoritmo devolve outros dados que deverão ser interpretados, indicando se o algoritmo precisa ser
corrigido ou não.

Referências
DEVMEDIA. Introdução à programação estruturada. Rio de Janeiro: DEVMEDIA, 2012. Disponível em: <
http://www.devmedia.com.br/introducao-a-programacao-estruturada/24951.>. Acesso em: 7 jan. 2019.
FORBELLONE, André L. V. Lógica de programação: a construção de algoritmos e estruturas de dados. 3. ed. São
Paulo: Prentice Hall, 2005.
TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. São Paulo: Pearson Prentice Hall,
2007.

-8-