Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila de Lógica de Programação (Algoritmos)
Apostila de Lógica de Programação (Algoritmos)
Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computao e Automao
Maio / 2004
-1-
-2-
Captulo 1
Introduo
1. Conceito de Algoritmo
A automao o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por mquinas, sejam estes dispositivos mecnicos, eletrnicos (como os computadores) ou de natureza mista. Para que a automao de uma tarefa seja bem-sucedida necessrio que a mquina que passar a realiz-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficincia, de modo a garantir a repetibilidade do mesmo. Assim, necessrio que seja especificado com clareza e exatido o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqncia em que estas fases devem ser realizadas. especificao da seqncia ordenada de passos que deve ser seguida para a realizao de uma tarefa, garantindo a sua repetibilidade, d-se o nome de algoritmo. Ao contrrio do que se pode pensar, o conceito de algoritmo no foi criado para satisfazer s necessidades da computao. Pelo contrrio, a programao de computadores apenas um dos campos de aplicao dos algoritmos. Na verdade, h inmeros casos que podem exemplificar o uso (involuntrio ou no) de algoritmos para a padronizao do exerccio de tarefas rotineiras (vide exemplos da Seo 2.1). No entanto, daqui adiante a ateno desta apostila estar voltada automao de tarefas utilizando computadores. Para que um computador possa desempenhar uma tarefa necessrio que esta seja detalhada passo-a-passo, numa forma compreensvel pela mquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais que um algoritmo escrito numa forma compreensvel pelo computador (linguagem de programao).
-3-
Captulo 2
Formas de Representao de Algoritmos
Existem diversas formas de representao de algoritmos, mas no h um consenso com relao melhor delas. O critrio usado para classificar hierarquicamente estas formas est diretamente ligado ao nvel de detalhe ou, inversamente, ao grau de abstrao oferecido. Algumas formas de representao de algoritmos tratam os problemas apenas em nvel lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma linguagem de programao especfica. Por outro lado existem formas de representao de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as idias principais do algoritmo, dificultando seu entendimento. Dentre as formas de representao de algoritmos mais conhecidas podemos citar: Descrio Narrativa; Fluxograma Convencional; Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol.
-4-
Operao de atribuio
Deciso
-4-
N1, N2
.V.
MEDIA >= 7
.F.
"Aprovado"
"Reprovado"
Fim
Figura 2.2
2.3 Pseudocdigo
Esta forma de representao de algoritmos rica em detalhes, como a definio dos tipos das variveis usadas no algoritmo. Por assemelhar-se bastante forma em que os programas so escritos, encontra muita aceitao. Na verdade, esta representao suficientemente geral para permitir a traduo de um algoritmo nela representado para uma linguagem de programao especfica seja praticamente direta. A forma geral da representao de um algoritmo na forma de pseudocdigo a seguinte:
-5-
2.4 Sntese
H diversas formas de representao de algoritmos que diferem entre si pela quantidade de detalhes de implementao que fornecem ou, inversamente, pelo grau de abstrao que possibilitam com relao implementao do algoritmo em termos de uma linguagem de programao especfica. Dentre as principais formas de representao de algoritmos destacam-se: a descrio narrativa, o fluxograma convencional e o pseudocdigo (ou linguagem estruturada).
-6-
Captulo 3
Tipos de Dados
Todo o trabalho realizado por um computador baseado na manipulao das informaes contidas em sua memria. Grosso modo, estas informaes podem ser classificadas em dois tipos: As instrues, que comandam o funcionamento da mquina e determinam a maneira como devem ser tratados os dados. As instrues so especficas para cada modelo de computador, pois so funes do tipo particular de processador utilizado em sua implementao. Os dados propriamente ditos, que correspondem poro das informaes a serem processadas pelo computador.
A maior parte das pessoas no ligadas rea de informtica ignora o potencial dos computadores e imagina que eles so capazes de tratar apenas com dados numricos. Na realidade, a capacidade dos mesmos se estende a outros tipos de dados. O objetivo deste captulo justamente o de classificar os dados de acordo com o tipo de informao contida neles. A classificao apresentada no se aplica a nenhuma linguagem de programao especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria das linguagens.
-7-
-8-
Usualmente, os dados literais so representados nos algoritmos pela coleo de caracteres, delimitada em seu incio e trmino com o caractere aspas ("). Diz-se que o dado do tipo literal possui um comprimento dado pelo nmero de caracteres nele contido. Exemplos de dados do tipo literal: "QUAL ?" - literal de comprimento 6 " " - literal de comprimento 1 "qUaL ?!$" - literal de comprimento 8 " AbCdefGHi" - literal de comprimento 9 "1-2+3=" - literal de comprimento 6 0 - literal de comprimento 1 Note que, por exemplo, "1.2" representa um dado do tipo literal de comprimento 3, constitudo pelos caracteres "1", "." e "2", diferindo de 1.2 que um dado do tipo real.
3.4 Sntese
Os dados numricos dividem-se em duas classes: inteiros, que no possuem parte fracionria e podem ser positivos ou negativos; reais, que podem possuir parte fracionria e podem ser positivos ou negativos.
Os dados do tipo literal podem conter seqncias de letras, dgitos ou smbolos especiais, delimitados por aspas ("). Seu comprimento dado pelo nmero de caracteres em string.
-9-
Figura 3.2
- 10 -
Captulo 4
Variveis
A todo momento durante a execuo de qualquer tipo de programa os computadores esto manipulando informaes representadas pelos diferentes tipos de dados descritos no captulo anterior. Para que no se "esquea" das informaes, o computador precisa guardlas em sua memria. Este captulo destinado ao estudo da forma como os computadores armazenam e acessam informaes contidas em sua memria.
- 11 -
Endereo 0 1 2 3 4 5
4.2.2 Armazenamento de Dados do Tipo Lgico Uma informao do tipo lgico s possui dois valores possveis: .V. ou .F.. Assim, a princpio, um nico bit seria suficiente para armazenar uma informao deste tipo. Contudo, deve-se lembrar que a menor poro de memria que se pode acessar o byte. Portanto, uma informao do tipo lgico armazenada em um byte de memria. De certa forma, se por um lado isto pode ser como um "desperdcio" de memria, por outro simplifica bastante a arquitetura de memria dos computadores (por motivos que fogem ao contexto desta apostila). Alm do mais, isto no to relevante, uma vez que na prtica o nmero de ocorrncias de dados do tipo lgico bastante inferior ao de ocorrncias de dados do tipo literal ou numrico. 4.2.3 Armazenamento de Dados do Tipo Inteiro O conjunto dos nmeros inteiros (Z) contm um nmero infinito de elementos: Z = { -, ..., -3, -2, -1, 0, 1, 2, 3, ..., +} Obviamente invivel o armazenamento de todos os nmeros deste conjunto num computador. Faz-se necessrio realizar um estudo para que se limite o nmero de elementos representveis deste conjunto. Se apenas um byte fosse utilizado para armazenar os dados do tipo inteiro, existiriam apenas 256 nmeros diferentes neste conjunto: {-127, -126, ..., -2, -1, 0, 1, 2, ..., 127, 128) Esta restrio bastante forte, uma vez que boa parte das aplicaes prticas necessitam de nmeros inteiros maiores que estes. Se forem utilizados dois bytes para armazenar um nmero inteiro, o universo de nmeros representveis cresce para 28 x 28 = 216 = 65.536 possibilidades: {-32767, -32766, ..., -2, -1, 0, 1, 2, ..., 32767, 32768} Este conjunto satisfaz grande maioria das necessidades prticas. Assim, em geral utilizam-se dois bytes para representar os nmeros inteiros em computadores. Contudo, restam algumas aplicaes muito especficas em que se precisa de um conjunto ainda maior. Para
- 12 -
Tipo de dado
Toda varivel possui um nome que tem a funo de diferenci-la das demais. Cada linguagem de programao estabelece suas prprias regras de formao de nomes de variveis. Adotaremos nesta apostila as seguintes regras: um nome de varivel deve necessariamente comear com uma letra; um nome de varivel no deve conter nenhum smbolo especial exceto a sublinha (_).
Exemplos:
- 13 -
= = = = = = =
correto errado (no comeou com uma letra) correto errado (contm o caractere espao em branco) errado (contm o caractere "/) correto errado (no comeou com uma letra)
A forma de utilizao deste comando ficar mais clara quando da utilizao da representao de algoritmos em linguagem estruturada (pseudocdigo). Esta conveno vlida para a representao de algoritmos na forma de pseudocdigo. Em termos de fluxograma, no usual adotar-se qualquer forma de definio de variveis. Exemplo de definio de variveis: VAR NOME IDADE SALARIO TEM_FILHOS : : : : literal[10] inteiro real lgico
No exemplo acima foram declaradas quatro variveis: a varivel NOME, capaz de armazenar dados literais de comprimento 10 (dez caracteres); a varivel IDADE, capaz de armazenar um nmero inteiro; a varivel SALARIO, capaz de armazenar um nmero real; a varivel TEM_FILHOS, capaz de armazenar uma informao lgica.
- 14 -
2. Supondo que as variveis NB, NA, NMAT e SX sejam utilizadas para armazenar a nota do aluno, o nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente, associando o tipo adequado ao dado que ser armazenado.
- 15 -
Captulo 5
Expresses
5.1 Conceito
O conceito de expresso em termos computacionais est intimamente ligado ao conceito de expresso (ou frmula) matemtica, onde um conjunto de variveis e constantes numricas relacionam-se por meio de operadores aritmticos compondo uma frmula que, uma vez avaliada, resulta num valor.
Figura 5.1
Por exemplo, a frmula de clculo da rea do tringulo da Figura 5.1 dada por: AREA = 0.5 x B x H Esta frmula utiliza trs variveis: B e H, que contm as dimenses do tringulo, e AREA, onde guardado o valor calculado (resultado da avaliao da expresso). H, tambm, uma constante (0.5) e o operador de multiplicao (x), que aparece duas vezes na expresso. O conceito de expresso aplicado computao assume uma conotao mais ampla: uma expresso uma combinao de variveis, constantes e operadores, e que, uma vez avaliada, resulta num valor.
5.2 Operadores
Operadores so elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expresso 3 + 2 relaciona dois operandos (os nmeros 3 e 2) por meio do operador (+) que representa a operao de adio. De acordo com o nmero de operandos sobre os quais os operadores atuam, os ltimos podem ser classificados em: binrios, quando atuam sobre dois operandos. Ex.: os operadores das operaes aritmticas bsicas (soma, subtrao, multiplicao e diviso);
- 24 -