Escolar Documentos
Profissional Documentos
Cultura Documentos
Existem muitas formas de se representar algoritmos, utilizando-se linguagens de programao, linguagem formal, formas geomtricas, diagramas, e muitas outras. Algumas destas formas se tornaram especiais pela eficcia de sua representao nas diversas reas do conhecimento. Neste texto de maneira sucinta so apresentadas trs destas formas, porm dando-se mais nfase a duas delas. importante salientar que o estudo de algoritmos exige do estudante um esforo quanto realizao de exerccios, de modo que no se pode aprend-lo apenas lendo textos. Sendo assim, procurem realizar os exerccios que so passados em sala de aula.
Conceito de Algoritmo
- Algoritmo a especificao de uma sequncia ordenada de passos que deve ser seguida com o intuito de realizar uma tarefa, garantindo a sua repetibilidade. Obs.: repetibilidade permite que esta sequncia possa ser repetida toda vez que a tarefa tiver que ser realizada. - Algoritmo um conjunto finito de regras bem definidas para a soluo de um problema, em um tempo finito, e com um nmero finito de passos. 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.
Formas de Algoritmos
Existem diversas formas possveis de se representar um algoritmo. Para a Informtica, algumas das formas mais conhecidas so: - Descrio Narrativa - Fluxograma - Pseudocdigo
>> Pseudocdigo:
Esta forma de representao de algoritmos, tambm conhecida como Portugus Estruturado ou Portugol, bastante rica em detalhes e, por assemelhar-se bastante forma em que os programas so escritos, ser juntamente com o Fluxograma, a forma de representao de algoritmos a ser adotada nesta disciplina. Estrutura de Um Algoritmo na Forma de Pseudocdigo Algoritmo <nome_do_algoritmo> Var <declarao_de_variveis> Incio <corpo_do_algoritmo> Fim. "Algoritmo" uma palavra que indica o incio da definio do algoritmo em forma de pseudocdigo. "<nome_do_algoritmo>" no lugar deste, deve ser colocado o nome simblico do algoritmo, o que ir distingui-lo dos demais. "<declarao_de_variveis>" parte do algoritmo onde devem ser declaradas as variveis utilizadas no algoritmo. Esta parte ser detalhada mais adiante. "Incio" e "Fim." so respectivamente as palavras que delimitam o incio e o trmino do conjunto de instrues do corpo do algoritmo.
Exemplo de um Algoritmo que calcula a mdia de duas notas, que devem ser digitados pelo Usurio ao executar o programa, e ao final mostra se houve aprovao ou no, segundo um critrio estabelecido. Algoritmo Media Var N1, N2, Media: Real; Incio Leia (N1, N2); Media = (N1+N2)/2; Se Media >= 7 Ento Escreva ("Aprovado"); Seno Escreva ("Reprovado"); Fim_se Fim.
Tipos de Dados
Todo o trabalho realizado por um computador baseado na manipulao das informaes contidas em sua memria. 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. Os dados propriamente ditos, que correspondem poro das informaes a serem processadas pelo computador. Para que sejam manipulados pelo processador, os dados devem ser declarados no incio do programa, a fim de que o compilador conhea os tipos e os nomes das variveis que contemplaro estes dados.
Adotaremos para os algoritmos, as seguintes regras para nome de varivel: - deve necessariamente comear com uma letra; - no deve conter nenhum smbolo especial, exceto o "underline" (_); - no deve conter nenhum espao em branco; - no deve ser uma palavra acentuada; - no poder ser uma palavra reservada a uma instruo de programa. Obviamente interessante adotar nomes relacionados s funes que sero exercidas pela varivel dentro de um programa. Outro atributo caracterstico de uma varivel o "tipo" do dado que ela pode armazenar. Este atributo define a natureza das informaes contidas na varivel. Por ltimo h o atributo "valor", que nada mais do que a informao til contida na varivel. Uma vez definidos os atributos "nome" e "tipo de dado" de uma varivel, estes no podem ser alterados, e assim permanecem durante toda a sua existncia no programa. Por outro lado, o atributo "valor" est constantemente sujeito a mudanas de acordo com o fluxo de execuo do programa (por ser uma "varivel"). Em resumo, o conceito de varivel foi criado para facilitar a vida dos programadores, permitindo acessar informaes na memria dos computadores por meio de um nome, em vez do endereo de uma clula de memria.
Operadores
Operadores so elementos fundamentais 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. Pode-se classificar os operadores levando-se em considerao o tipo de dado de seus operandos, e do valor resultante de sua avaliao. Sendo assim, dividem-se em Operadores "de Atribuio", "Aritmticos", "Relacionais", "Lgicos" e "Literais".
A expresso localizada no lado direito do sinal de igual avaliada, e seu valor resultante armazenado na varivel que est esquerda.
"O nome da varivel que recebe o valor deve aparecer sempre sozinho, no lado esquerdo do sinal de igual deste comando."
Exemplos: a = 3; nota1 = 8.5; media = (nota1 + nota2) / 2; v = v0 + a * t; salFinal = sal * perc / 100;
Obs.: A prioridade (ou hierarquia) entre operadores define a ordem em que os mesmos sero avaliados (e executados) dentro de uma mesma expresso.
Estes valores so somente usados quando se deseja efetuar comparaes. Comparaes s podem ser feitas entre objetos de mesma natureza, isto , variveis do mesmo tipo de dado. Por exemplo, digamos que a varivel inteira "num" contenha o valor 7(sete). Assim as expresses a seguir fornecem cada uma, um valor lgico, sendo falso a primeira, e verdadeiro a segunda: num <= 5 num > 5 Operaes que utilizam operadores relacionais so como perguntas, cuja resposta ser sempre "No" ou "Sim"; "Falso" ou "Verdadeiro"; "0" ou "1". Ex.: se num for igual a 7(sete), ento: num <= 5 ? ... No (Falso) num > 5 ? ... Sim (Verdadeiro)
Operador OU E NO Fornecendo dois valores ou expresses lgicas, representadas por expresso1 e expresso2, podemos descrever as quatro operaes lgicas a seguir: expresso1 E expresso2 verdadeiro somente se ambas, expresso1 e expresso2, forem verdadeiras. Se uma for falsa, ou se ambas forem falsas, a operao "E"como um todo tambm ser falsa. expresso1 OU expresso2 verdadeiro se tanto a expresso1 como a expresso2 forem verdadeiras. As operaes "OU" s resultam em valores falsos se ambas, expresso1 e expresso2, forem falsas. NO expresso1 verdadeiro se expresso1 for falsa; de modo contrrio, a expresso "NO expresso1" resultar em falso, se expresso1 for verdadeira. Ou seja, a expresso NO expresso1 resulta na negao da expresso1. Tabela Verdade: A 0U B AEB NO A V V F V F F V F V F F V
A V V F F
B V F V F
NO
F V F V
Funes Matemticas
Abaixo, esto enumeradas algumas Funes Matemticas que podero ser abordadas e utilizadas em exerccios neste curso: ABS (x) SEN (x) COS (x) TAN (x) EXP (x) LN (x) PI Retorna Retorna Retorna Retorna Retorna Retorna Retorna o o o o o o o valor absoluto (positivo) de uma expresso valor do seno valor do cosseno valor da tangente valor exponencial (ex - sendo "e" o no de Euler) logaritmo natural (logaritmo neperiano) valor de PI (3.1415...)
Exemplos de expresses que utilizam estas funes matemticas: val1 = SEN (4*x); val2 = ABS (val1); val3 = PI * SEN (x + 1); val4 = 2 * a * EXP (x + TAN (y)); val5 = LN (x ** 2) + 3 * COS (x 2);
Expresses
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 relacionase por meio de operadores aritmticos compondo uma frmula que, uma vez avaliada, resulta num valor. Expresses aritmticas so aquelas cujo resultado da avaliao do tipo numrico, seja ele inteiro ou real. Somente o uso de funes, operadores aritmticos, variveis numricas e parnteses permitido em expresses deste tipo.
"Toda expresso aritmtica deve estar linearizada, ou seja, representada inteiramente em apenas uma linha."
As seguintes regras so essenciais para a correta avaliao de expresses: 1. Deve-se observar a prioridade dos operadores, conforme mostrado nas tabelas de operadores: (obs.: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relao precedncia, ento a avaliao se faz da esquerda para a direita). 2. Os parnteses usados em expresses tem o poder de "roubar" a prioridade dos demais operadores, forando a avaliao da subexpresso em seu interior, independente de qual seja. 3. Entre os quatro principais grupos de operadores existentes, a saber, aritmtico, lgico, literal e relacional, h uma certa prioridade de avaliao: os aritmticos e literais devem ser avaliados primeiro; a seguir, so avaliadas as sub-expresses com operadores relacionais e, por ltimo so avaliados os operadores lgicos.
OU
OU Uma <lista_de_variveis> um conjunto de nomes de variveis separados por vrgulas. Um literal simplesmente um dado do tipo literal (string ou cadeia de caracteres) delimitado por aspas. H ainda a possibilidade de se misturar nomes de variveis com literais na lista de um mesmo comando. O efeito obtido bastante til e interessante: a lista lida da esquerda para a direita e cada elemento da mesma tratado separadamente; se um nome de varivel for encontrado, ento o valor da mesma colocado no dispositivo de sada; no caso de um literal, o mesmo escrito diretamente no dispositivo de sada (na tela). Exemplo: algoritmo que calcula o preo total de acordo com a quantidade de produto comprada. Algoritmo exemplo_comando_de_entrada_de_dados Var preco_unit, preco_tot : Real; quant : Inteiro; Incio Leia (preco_unit, quant); preco_tot = preco_unit * quant; Escreva (preco_tot); Fim.
Estruturas Condicionais:
(Comandos de Deciso) Neste tipo de estrutura o fluxo de instrues a ser seguido escolhido em funo do resultado da avaliao de uma ou mais condies. Uma condio uma expresso lgica. A classificao das estruturas de deciso feita de acordo com o nmero de condies que devem ser testadas para que se decida qual o caminho a ser seguido. Segundo esta classificao, tm-se 3 tipos de estruturas de deciso: - Estrutura de Deciso Simples (Se..ento..fim_se) - Estrutura de Deciso Composta (Se..ento..seno..fim_se) - Estrutura de Deciso Mltipla (Se..ento..seno se..ento ... fim_se) Uma Estrutura de deciso inicia-se na palavra reservada "SE" (inicial), e termina na palavra reservada "FIM_SE".
FALSA CONDIO
VERDADEIRA
INSTRUES
Sintaxe em Portugus Estruturado de uma estrutura de deciso simples: SE <condio> ENTO <instrues>; FIM_SE A semntica desta construo a seguinte: a condio avaliada: Se ela for verdadeira, ento o conjunto de instrues delimitado pelas palavras-reservadas "ENTO" e "FIM_SE" ser executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando aps a palavra-reservada "FIM_SE". No caso da condio ser falsa, o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando APS a palavra-reservada "FIM_SE", sem executar o conjunto de instrues entre as palavras-reservadas "ENTO" e "FIM_SE".
Exemplo de algoritmo que l um nmero e escreve se o mesmo maior que 10: Algoritmo exemplo_estrutura_de_deciso_simples Var X : Inteiro; Incio Escreva ("Digite um valor"); Leia (X); Se X > 10 Ento Escreva ("X maior que 10"); Fim_se Fim.
FALSA CONDIO
VERDADEIRA
INSTRUES_2
INSTRUES_1
Sintaxe em Portugus Estruturado de uma estrutura de deciso composta: SE <condio> ENTO <instrues_1>; SENO <instrues_2>; FIM_SE A semntica desta construo a seguinte: a condio avaliada: Se ela for verdadeira, ento o conjunto de "instrues_1" delimitado pelas palavras-reservadas "ENTO" e "SENO" ser executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando aps a palavra-reservada "FIM_SE". No caso da condio ser falsa, ento o conjunto de "instrues_2" delimitado pelas palavrasreservadas "SENO" e "FIM_SE" ser executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando aps a palavrareservada "FIM_SE".
Exemplo de algoritmo que l um nmero e escreve se o mesmo , ou no, maior que 100: Algoritmo exemplo_estrutura_de_deciso_composta Var X : Inteiro; Incio Leia (X); Se X > 100 Ento Escreva ("X maior que 100"); Seno Escreva ("X no maior que 100"); Fim_se Fim.
VERDADEIRA CONDIO_1 INSTRUES_1 FALSA VERDADEIRA nome, INSTRUES_2 nome, VERDADEIRA nome, FALSA INSTRUES_3 nome,
CONDIO_2 FALSA
INSTRUES_N nome,
Sintaxe em Portugus Estruturado de uma estrutura de deciso mltipla: SE <condio_1> ENTO <instrues_1>; SENO SE <condio_2> ENTO <instrues_2>; SENO SE <condio_3> ENTO <instrues_3>; ... SENO <instrues_N>; FIM_SE
A semntica desta construo a seguinte: a 1a condio avaliada. Se ela for verdadeira, ento o conjunto de "instrues_1" ser executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando aps a palavra-reservada "FIM_SE". No caso da 1a condio ser falsa, ento a 2a condio avaliada. Se ela for verdadeira, ento o conjunto de "instrues_2" ser executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando aps a palavra-reservada "FIM_SE". No caso desta condio ser falsa, ento as seguintes condies so avaliadas em sequncia, at encontrar alguma "verdadeira". Se nenhuma das condies existentes for "verdadeira", o conjunto de "instrues_N" delimitado pelas palavras-reservadas "SENO" e "FIM_SE" ser executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte construo, ou seja, o primeiro comando aps a palavra-reservada "FIM_SE". OBS.: No obrigatria a existncia do conjunto de "instrues_N" delimitado pelas palavrasreservadas "SENO" e "FIM_SE". Exemplo de algoritmo que l um nmero e escreve se o mesmo menor que: 10, 20, 30, ou 40: Algoritmo exemplo_estrutura_de_deciso_multipla Var X : Inteiro; Incio Leia (X); Se X < 10 Ento Escreva ("X menor que 10"); Seno Se X < 20 Ento Escreva ("X menor que 20"); Seno Se X < 30 Ento Escreva ("X menor que 30"); Seno Se X < 40 Ento Escreva ("X menor que 40"); Seno Escreva ("X maior ou igual a 40"); Fim_se Fim.