Você está na página 1de 7

Conceitos Básicos

Introdução

Um computador possui duas partes diferentes que trabalham juntas: o hardware, composto pelas partes físicas (hard = parte palpável; soft = parte abstrata; ware = do gênero), e o software, composto pelos programas. Quando queremos criar ou desenvolver um software para realizar determinado tipo de processamento de dados, devemos escrever um programa ou vários programas interligados. No entanto, para que o computador compreenda e execute esse programa, devemos escrevê-lo usando uma linguagem que tanto o computador quanto o criador de software entendam. Essa linguagem é chamada de linguagem de programação.

As etapas para o desenvolvimento de um programa são:

Análise – nesta etapa estuda-se o enunciado do problema para definir os dados de entrada, o processamento e os dados de saída (informação).

Algoritmo – ferramentas do tipo descrição narrativa, fluxograma ou português estruturado são utilizadas para descrever o problema com suas soluções.

Codificação – o algoritmo é transformado em códigos da linguagem de programação escolhida para que o programa seja executado por um computador. Assim, concluímos que um programa é a codificação de um algoritmo em uma linguagem de programação.

Conceito de Algoritmo

A seguir, alguns conceitos de algoritmos, de acordo com várias bibliografias conhecidas.

“Algoritmo é uma seqüência de passos que visa atingir um objetivo bem definido.” (FORBELLONE, 1999) “Algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a realização de uma tarefa.” (ASCENCIO, 1999) “Algoritmo é uma seqüência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância.” (SALVETTI, 1999) “Algoritmo são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas.” (MANZANO, 1997) “Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Portanto, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.” (FARRER, 1999)

Analisando essas definições de algoritmo, podemos concluir que diariamente executamos uma série de algoritmos, como por exemplo, somar números, ir para a Uni-Anhangüera, trocar uma lâmpada, sacar dinheiro em um caixa 24 horas, etc. Veja um algoritmo exemplo:

Algoritmo – Trocar uma lâmpada

Pegar uma lâmpada nova Pegar uma escada Posicionar a escada embaixo da lâmpada queimada Subir na escada com a lâmpada nova na mão Retirar a lâmpada queimada Colocar a lâmpada nova Descer da escada Testar o interruptor Guardar a escada Jogar a lâmpada queimada no lixo.

Notoriamente, você poderia executar as ações do algoritmo acima de uma maneira diferente. Esse pensamento está correto, pois às vezes um problema pode ser resolvido de diversas maneiras, porém, todos produzindo uma mesma resposta, ou seja, podem existir vários algoritmos diferentes para a solução de um problema, desde que todos atinjam o mesmo objetivo.

Método para a Construção de Algoritmos

Página 1 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc

Sempre que você tiver que elaborar um algoritmo, procure seguir os seguintes passos:

Identifique o problema a ser resolvido, destacando os principais pontos e os objetos que o compõem.

Defina os dados de entrada, ou seja, quais dados serão fornecidos ao algoritmo e quais objetos fazem parte desse problema.

Defina o processamento, ou seja, quais cálculos serão realizados e quais as restrições para esses cálculos.

Defina os dados de saída, ou seja, quais informações serão geradas pelo processamento.

Elabore o algoritmo usando um dos tipos descritos no próximo tópico (Tipos de Algoritmos).

Teste o algoritmo através de simulações (teste-de-mesa = trace).

Tipos de Algoritmos

Os três tipos mais usados são:

Descrição Narrativa – consiste em analisar o enunciado do problema e escrever, usando uma linguagem natural (a língua portuguesa), os passos a serem seguidos para a sua solução. Uma vantagem deste tipo de algoritmo é que não exige o aprendizado de nenhuma regra ou conceito, já que a língua utilizada é natural, onde você descreve os passos de forma natural, sem regras. Porém, este tipo de algoritmo abre margem para várias interpretações, dificultando a conversão do algoritmo para um programa em uma linguagem de programação.

Fluxograma – consiste em analisar o problema e escrever, usando símbolos gráficos específicos, os passos a serem seguidos para a solução do problema. Possui como vantagem a facilidade natural das pessoas em compreenderem elementos gráficos. Porém, exige estudo da simbologia dos fluxogramas, que apesar de não ser muito difícil, pode apresentar muitos detalhes e algumas regras, o que também pode dificultar a conversão para um programa.

Portugol – consiste em analisar o problema e escrever, por meio de muitas regras predefinidas, os passos a serem seguidos para sua solução. Oferece a grande vantagem de estar muito mais próxima de qualquer linguagem de programação, fazendo com que a conversão seja quase que imediata. Porém, exige estudo detalhado e demorado das várias regras de pseudo-código, que serão estudadas neste semestre letivo.

Este documento objetiva apresentar os principais conceitos sobre a elaboração de algoritmos usando o Portugol. Portanto, para você compreender melhor cada um dos três tipos de algoritmos acima descritos, vamos a um exemplo que ilustre todos os três, para um mesmo algoritmo.

Exercício resolvido:

Faça um algoritmo que calcule e mostre o resultado da divisão entre dois números.

1ª solução: usando descrição narrativa

Passo 1 – Obter os dois números que serão divididos. Passo 2 – Se o segundo número for igual a zero, não fazer a divisão, pois não existe divisão por zero. Caso contrário, dividir os números. Passo 3 – Mostrar o resultado.

2ª solução: usando fluxograma

Página 2 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc

inicio

N1, N2
N1, N2
N2 = 0 sim
N2 = 0
sim

não

inicio N1, N2 N2 = 0 sim não R = N1 / N2 Impossível dividir R

R = N1 / N2

inicio N1, N2 N2 = 0 sim não R = N1 / N2 Impossível dividir R
Impossível dividir
Impossível
dividir
R
R

fim

3ª solução: usando portugol (pseudo-código)

Algoritmo declare N1, N2, R numérico escreva "Digite um número" leia N1 escreva "Digite outro número" leia N2 se N2 = 0 então escreva "Impossível dividir" senão R N1 / N2 escreva "Divisão = ", R

fim-se

fim-algoritmo

Como você pode notar, a primeira solução (descrição narrativa) é formada por passos descritos livremente, utilizando a língua portuguesa sem quaisquer regras. No fluxograma, temos algumas regras e na terceira solução (Portugol) muito mais regras, algumas bem mais complexas e que exigem maior estudo. À medida em que vamos avançando em nossos estudos, aprenderemos todas as regras da criação de algoritmos usando o Portugol.

Conceito de Variável

Uma variável representa uma posição de memória em que podemos guardar um valor de um determinado tipo. Toda variável de memória possui um nome e um tipo. O valor de uma variável pode variar ao longo do tempo, durante a execução de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante.

Fazendo uma comparação com o mundo real, imagine que a sua sala de aula seja toda a memória principal do computador (memória RAM) e que cada cadeira (carteira) seja uma posição dessa memória. Cada cadeira seria uma variável. Deste modo, cada cadeira teria um nome e nela poderíamos guardar um valor, por exemplo, um número, uma letra ou uma palavra ou frase. Portanto, o valor armazenado na cadeira deve possuir um tipo de dado, ou seja, se é numérico ou caractere, por exemplo. Como mencionado no final do parágrafo anterior, cada cadeira só pode guardar um valor por vez, ou seja, se colocarmos o número 20 em uma cadeira chamada CADEIRAX, para colocarmos outro número nessa mesma cadeira, o número 20 será substituído pelo novo número.

Página 3 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc

Tipos de Dados

Os tipos de dados mais usados são:

Numéricos – os dados numéricos são divididos em dois grupos: inteiros e reais. Os números inteiros podem ser positivos ou negativos e não possuem parte fracionária. Já os números reais podem ser positivos ou negativos e possuem parte fracionária. Os números reais dos exemplos seguintes estão expressos usando vírgula como separador da parte fracionária. Porém, a notação usada em programas, inclusive em algoritmos, deve ser um ponto.

Exemplos de inteiros:

-23

65

0

-325

45

2

Exemplos de reais:

25,5

285,9

0,0

-75,0

Lógicos – os tipos lógicos são chamados também de booleanos (álgebra de Boole). Uma variável do tipo lógico só pode assumir o valor verdadeiro ou o valor falso. Como exemplo, imagine uma variável que deva conter um valor que indique se está ou não chovendo. O nome da variável seria, por exemplo, CHOVENDO. Se estiver chovendo no momento, esta variável deve conter o valor verdadeiro, caso contrário, deve conter o valor falso. A utilidade deste tipo de dado será discutida e apresentada em vários exemplos ao longo de nossa disciplina e você compreenderá facilmente a sua utilização prática na elaboração de programas.

Literais – os tipos literais são também chamados de caracteres. Correspondem aos dados formados por um único caractere ou por uma cadeia de caracteres (por exemplo, uma frase). Esses caracteres podem ser letras maiúsculas, minúsculas, números e os caracteres especiais (por exemplo, @, $, +, /, ?, etc.). Note que os dados do tipo literal que possuem números não podem ser utilizados em cálculos.

Exemplos de dados literais:

“aluno”

“12345”

“sandrotc@anhanguera.edu.br” “15 + 50”

“14,98”

Formação de Identificadores para Variáveis

Identificadores são os nomes das variáveis. Podem ser também nomes de programas, de sub-rotinas, etc. Para criarmos uma variável devemos dar um nome para ela e é preciso entender algumas regras para a criação desses nomes. Portanto, as regras básicas para a formação dos identificadores, que servem não só para variáveis, mas para todos os identificadores possíveis, são:

Usar somente os seguintes caracteres: números, letras maiúsculas, letras minúsculas e o caractere sublinhado.

O primeiro caractere deve ser sempre uma letra ou o sublinhado.

Não são permitidos espaços em branco.

Não são permitidos caracteres especiais.

Não podemos usar as palavras reservadas nos identificadores, ou seja, palavras que pertençam a uma linguagem de programação. Palavras reservadas são palavras da linguagem de programação que permitem-nos implementar os comandos. Você pode notar na terceira solução do exercício

Página 4 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc

resolvido da página 3, que muitas palavras estão sublinhadas. Essas são as palavras reservadas da linguagem denominada Portugol. Desta forma, não podemos criar uma variável chamada, por exemplo, declare, no Portugol.

Estrutura Seqüencial

Para criarmos um algoritmo na linguagem Portugol, devemos seguir uma seqüencia chamada de Estrutura Seqüencial. Isto significa que a seqüencia em que os passos (instruções) de nosso programa serão executados pelo computador na seqüencia em que estão colocados, ou seja, de cima para baixo. Uma terminologia para esta estrutura é chamada de “top-down”, ou seja, de cima para baixo.

Algoritmo declare bloco de comandos de seu programa fim-algoritmo

Declaração de Variáveis

As variáveis devem ser declaradas (criadas) sempre após a palavra reservada declare. Outra regra, as variáveis devem ser declaradas sempre no início do programa, nunca durante a execução de um programa, ou seja, no meio de um programa. Para declarar uma variável obedeça a sintaxe seguinte:

declare nome-da-variável tipo-de-dado-da-variável

Exemplos:

declare nome_cliente literal declare idade_cliente inteiro declare saldo_cliente real declare cliente_adimplente lógico

Comando de Atribuição

O comando de atribuição é usado quando queremos colocar um valor em uma variável. Este comando é

representado pelo símbolo (seta para esquerda). Obviamente, para atribuirmos um valor a uma variável, esta deve estar previamente declarada. Veja alguns exemplos relacionados às variáveis declaradas no exemplo acima:

nome_cliente "Sandro Teixeira de Carvalho" idade_cliente 36 saldo_cliente 150.00 cliente_adimplente falso

Algumas observações podem ser feitas sobre os exemplos acima. Note que, para atribuir um só caractere ou uma frase (cadeia de caracteres) a uma variável do tipo literal você deve usar aspas no dado a ser atribuído. Já para atribuir um valor de outro tipo qualquer não usamos aspas. Note a atribuição do terceiro exemplo, em que devemos usar um ponto para separar as casas decimais. Uma última observação é referente ao último exemplo, em que atribuímos falso para a variável cliente_adimplente usando sublinhado. Isto ocorre por que tanto verdadeiro quanto falso são palavras reservadas na linguagem Portugol.

Comando de Entrada de Dados

O comando de entrada de dados é usado para permitir receber dados digitados pelo usuário, geralmente

através do teclado do computador. Esses dados digitados pelo usuário serão armazenados na variável que participar do comando. Este comando é representado, no Portugol, pela palavra reservada leia, sublinhada.

Exemplos:

leia nome_cliente

Página 5 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc

leia idade_cliente leia saldo_cliente

Você pode notar que não temos um comando para ler a variável cliente_adimplente, que é do tipo de dado lógico. As variáveis lógicas não são lidas, mas sim utilizadas com outra finalidade que você compreenderá mais adiante em nossa disciplina.

Uma observação importante diz respeito ao modo como este comando costuma ser utilizado. Assim que o computador executa um comando leia, ele faz aparecer o cursor na tela do computador e fica aguardando pela digitação de alguma coisa pelo usuário. Enquanto o usuário não digita algo e tecla enter, o computador fica parado neste comando leia. Quando o usuário finalmente digita alguma coisa e tecla enter, o dado digitado é atribuído automaticamente para a variável que faz parte do comando leia.

Agora, imagine a seguinte cena: o computador executa o comando leia e fica parado aguardando pela digitação. O usuário olha para a tela e vê apenas um cursor piscando. O usuário sabe o que deve ser digitado? Provavelmente, não. Desta forma, sempre que colocamos um comando leia em nosso algoritmo, costumamos colocar também um comando para escrever na tela um texto que informe ao usuário o que ele deve digitar.

Exemplo:

escreva "Digite o seu nome:" leia nome_cliente

Acabamos de melhorar nosso trecho de programa com o exemplo acima. Agora, assim que esse programa for executado, o computador escreverá a frase “Digite o seu nome:” antes de aguardar pela entrada do usuário. Assim, o usuário compreenderá o que deverá ser digitado. É importante salientar que essa idéia nem sempre é implementada em algoritmos do tipo Portugol, mas sempre quando implementamos um programa em uma linguagem de programação. De qualquer forma, facilita a lógica do algoritmo, tornando-o um pouco mais entendível por parte de quem fará a transcrição deste para uma linguagem real.

Comando de Saída de Dados

O comando de saída é utilizado para mostrar dados na tela ou na impressora. Esse comando é representado

pela palavra reservada escreva, sublinhada. Os dados a serem escritos podem ser conteúdos de variáveis ou textos quaisquer.

Exemplos:

escreva "Digite o seu nome:" escreva "Digite um número:" escreva "O conteúdo da variável x é igual a ", x escreva nome_cliente

Como você pode notar, o terceiro exemplo acima ilustra como mostrar o valor de uma variável seguido de uma frase. Sempre que fazemos, por exemplo escreva x, o computador escreve o conteúdo da variável x. Agora, se fizermos, por exemplo, escreva “x” , o computador escreverá a letra x na tela.

Comentários

É importante escrevermos comentários em nossos algoritmos. Um comentário consiste de uma frase

qualquer que explique algum trecho de código ou alguma parte de nosso programa, para facilitar o entendimento do

programa no futuro, quando fizermos uma manutenção (correção) em nosso programa.

Uma das formas mais comuns de se incluir comentários em um programa consiste em explicar para que serve cada uma das variáveis na declaração. Veja o algoritmo exemplo a seguir:

Algoritmo declare N1 numérico { N1 serve para obter o primeiro número }

Página 6 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc

declare N2 numérico { N2 serve para obter o segundo número }

declare R numérico

escreva "Digite um número" leia N1 escreva "Digite outro número" leia N2 se N2 = 0 então escreva "Impossível dividir" senão

{ R serve para conter o resultado da divisão }

R N1 / N2 escreva "Divisão = ", R

fim-se

fim-algoritmo

O algoritmo acima corresponde ao mesmo da página 3 deste documento. Note que as três variáveis usadas no programa foram declaradas em linhas separadas para permitir a inserção dos comentários em cada uma delas, explicando para que servem.

Os comentários são extremamente úteis e necessários em várias partes de nossos programas, facilitando possíveis manutenções nos mesmos. Cuidado para não inserir comentários em demasia para não correr o risco de poluir demais o código do programa. A maioria dos programadores não inserem comentários, o que torna um programa de difícil manutenção, principalmente para um programador que venha a modificar um programa feito por outra pessoa.

Os comentários devem ser inseridos entre os caracteres “{“ e “}” (chaves) e podem estar presentes em qualquer parte do algoritmo.

Página 7 de 7

E-mail professor: profgiocastro@gmail.com Arquivo: AEDI01 Conceitos basicos.doc