Professional Documents
Culture Documents
No se aprende algoritmos copiando algoritmos e estudando algoritmos. S se aprende algoritmos construindo algoritmos e testando algoritmos.
A automao o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por mquinas, sejam estas dispositivos mecnicos (como as mquinas industriais), eletrnicos (como os computadores), ou de natureza mista (como os robs). Para que a automao de uma tarefa seja bem-sucedida necessrio que a mquina que passa a realiz-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficincia e de modo a garantir a sua repetibilidade. O algoritmo a estratgia utilizada para especificar com clareza e exatido o que deve ser realizado em cada uma das fases do processo a ser automatizado e a seqncia em que estas fases devem ser realizadas.
Algoritmo a especificao da seqncia ordenada de passos que deve ser seguida para a realizao de uma tarefa, garantindo a sua repetibilidade. um conjunto finito de regras bem definidas e conhecidas para a soluo de um problema com um nmero finito de passos.
Podemos compreender um algoritmo como qualquer procedimento computacional bem definido que toma algum conjunto de valores como entrada e produz algum conjunto de valores como sada. Todo algoritmo deve sempre possuir um resultado, normalmente chamado de sada, e satisfazer a propriedade da efetividade, isto , todas as operaes especificadas no algoritmo devem ser suficientemente bsicas para que possam ser executadas de maneira exata e num tempo finito. O algoritmo uma ferramenta de grande valor na estruturao do raciocnio lgico j que exige a definio exata da sequncia de passos necessrios resoluo de um dado problema. Por esta caracterstica, apresentam ampla utilizao em diversas reas de conhecimento. A matemtica emprega algoritmos na definio de mtodos de clculo e operaes eliminando a possibilidade de ambiguidades. A engenharia utiliza-os para a automao industrial e o desenvolvimento de tecnologias modernas. A administrao emprega algoritmos na definio de procedimentos de operao nas organizaes e a cincia da computao utiliza-os na modelagem e desenvolvimento de sistemas de software. Um programa de computador (software) simplesmente um algoritmo escrito num formato que a mquina compreende. Durante sua concepo trabalhamos com algoritmos. Aps o projeto finalizado, realizamos a traduo do algoritmo para alguma linguagem de programao, de acordo com os requisitos tcnicos do software.
Ao lado apresentamos o primeiro algoritmo deste texto. Trata-se da modelagem de um fluxo para solicitao de compras de materiais de uma organizao hipottica. De acordo com este fluxo, a solicitao de compras de materiais tem incio com o preenchimento do formulrio de compras. Aps preenchido, o formulrio deve ser encaminhado ao gestor do solicitante. O gestor pode aprovar ou reprovar a solicitao. Caso o gestor reprove, o fluxo encerrado e nenhuma compra realizada. Caso o gestor aprove, a solicitao encaminhada ao setor financeiro para avaliao da disponibilidade oramentria. Caso o financeiro reprove, o fluxo encerrado e nenhuma compra realizada. Caso o financeiro aprove, a compra ser processada e o fluxo de solicitao termina.
Aprovado?
sim
Encaminha ao financeiro
Aprovado?
no
sim
Processa compra
fim
Todo algoritmo sempre comea no estado incio e sempre termina no estado fim. Deve existir apenas um nico incio e fim para cada algoritmo. O algoritmo de solicitao de compras cita quatro outros processos, a saber: Preenche formulrio de compras; Encaminha ao gestor; Encaminha ao financeiro; Processa compra.
1
Cada um destes processos deve ser especificado de forma a garantir que qualquer indivduo seja capaz de ler e executar o algoritmo sem qualquer dvida, podendo inclusive dar origem a novos algoritmos. Abaixo apresentamos o mesmo algoritmo, desta vez representado sobre a forma de portugus estruturado ou pseudocdigo.
Para a soluo de um dado problema podemos propor diversos algoritmos. Isto possvel pois algoritmo o caminho que leva a soluo do problema. E raros so os problemas que possuem apenas uma nica soluo. Na prtica no importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais importante de um algoritmo a sua corretude, isto , ele deve resolver adequadamente o problema proposto.
Como principais maneiras de se representar um algoritmo temos a linguagem natural, pseudocdigo e fluxograma2.
Linguagem Natural
A representao de algoritmos atravs da linguagem natural a forma mais espontnea. As aes (passos) so descritas utilizando nosso linguajar cotidiano de forma similar a um texto tpico. Suponha o seguinte problema: Calcular a mdia de todos os alunos que cursaram uma disciplina X, a partir da leitura das notas da 1a e 2 prova. Aps a mdia calculada devemos anunciar se aluno foi aprovado ou reprovado. Somente sero aprovados alunos com mdia maior ou igual a 5,0.
Existe tambm o diagrama de Chapin que no ser apresentado por ser raramente utilizado. Sua construo muito similar a um fluxograma com smbolos distintos.
Fluxograma
uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes (instrues, comandos) distintas. Essa propriedade facilita o entendimento das idias contidas nos algoritmos. De modo geral, o fluxograma se resume a um nico smbolo inicial, por onde a execuo do algoritmo comea, e um ou mais smbolos finais, que so pontos onde a execuo do algoritmo se encerra. Partindo do smbolo inicial, h sempre um nico caminho orientado a ser seguido, representando a existncia de uma nica seqncia de execuo das instrues. Apesar de vrios caminhos poderem convergir para uma mesma figura do diagrama, h sempre um nico caminho saindo desta figura. Excees a esta regra so os smbolos finais, dos quais no h nenhum fluxo saindo, e os smbolos de deciso, de onde pode haver mais de um caminho de sada (normalmente dois caminhos), representando uma bifurcao no fluxo. Abaixo apresentam-se os principais smbolos usados na representao de fluxogramas (ateno pois existem variaes na simbologia empregada).
Como A, B, C e D so parmetros de entrada, o algoritmo inicia sua execuo realizando a leitura destes valores. Ou seja, o algoritmo foi projetado para operar de forma independente dos valores A, B, C e D. Para quaisquer valores destas variveis, o algoritmo deve ser capaz de atingir o estado de fim oferecendo valores corretos como resposta. Em seguida, o algoritmo atribui para a varivel F o valor referente soma de B e D. Pode ocorrer desta soma gerar um resultado maior ou igual a 10. Neste caso, deve ocorrer o chamado vai um, ou seja, devemos transbordar uma dezena para o valor final de E e atribuir para F somente o valor referente ao algarismo da unidade. A ltima instruo do algoritmo a impresso do resultado da soma.
3.2 - Pseudocdigo.
INCIO F = B + D; SE F >= 10 ENTO INCIO F = F 10; VaiUm = 1; FIM SENO INCIO VaiUm = 0; FIM E = A + C + VaiUm; Imprima Resultado: EF; FIM
F = B+D
F >= 10?
sim
F = F - 10 VaiUm = 1
no
VaiUm = 0
E = A + C + VaiUm
Resultado: EF
fim
Para verificar o funcionamento do algoritmo, basta execut-lo com papel e lpis e escohendo um valor aleatrio para cada letra (A, B, C e D). Suponhamos: A=1 B=2 C=4 D=9 Neste caso o algoritmo realizar a soma de 12 (AB) com 49 (CD). Ao final da execuo temos a impresso de Resultado: 61 e as variveis com os seguintes valores: E=6 F=1 VaiUm = 1
Estrutura Sequencial
Imagine a seguinte situao: precisamos elaborar um algoritmo para trocar uma lmpada. Uma estrutura sequencial caracteriza-se por possuir uma nica seqncia de aes, que executada apenas uma vez.
Estrutura de Repetio
Vamos utilizar a estrutura de repetio para verificar se a nova lmpada instalada realmente acende aps a instalao.
Variveis e Constantes
Variveis e constantes so conceitos fundamentais para a construo de algoritmos e programas de computadores, pois so atravs deles que um algoritmo guarda os dados do problema. Todo dado que tem a possibilidade de ser alterado (portanto, sofrer variao) no decorrer do tempo, dever ser tratado como uma varivel do problema, e portanto dever ser definido como tal no algoritmo a ser desenvolvido. Quando um dado no tem nenhuma possibilidade de variar com o decorrer do tempo, ele dever ser tratado como uma constante, e dessa forma definido e tratado como tal no algoritmo. Por exemplo, considere o desenvolvimento de um algoritmo para o seguinte problema: calcular as reas de cinco tringulos com medidas diferentes. Sabemos que a frmula para o clculo da rea de um tringulo bxh/2, onde b o valor da base e h o valor da altura do tringulo. Sendo assim, b e h so dados que iro variar no decorrer do tempo de execuo do algoritmo, portanto devero ser tratados como variveis. J o nmero 2 da frmula um dado constante e no sofrer variao no decorrer do tempo de execuo do algoritmo, portanto deve ser tratado como uma constante. Para manipularmos adequadamente os dados do problema no algoritmo, temos que identific-los corretamente dentro deste. Para isso, devemos atribuir nomes a eles. Estes nomes so chamados de identificadores. Seguiremos as seguintes regras para a formao de identificadores: Devem comear por um caractere alfabtico; Podem ser seguidos por mais caracteres alfabticos e/ou numricos; No permitido o uso de caracteres especiais, como: @, #, &, *, +, ? etc.
1.1
Comandos de Atribuio
Um comando (ou instruo) pode ser definido como sendo uma ao a ser executada num dado momento pelo algoritmo. O comando de atribuio permite-nos atribuir um valor para uma certa varivel onde o tipo do dado atribudo para a varivel deve ser compatvel com o tipo declarado para a varivel. A sintaxe utilizada ser: identificador = expresso;
Exemplo
Inicio Var X, Y: inteiro; lgico : Z; X = 0; Y = 10 + 7; Z = verdadeiro; Fim
1.2
Entrada de Dados
Na prtica de construo de programas ser muito comum o uso de comandos que proporcionam a entrada de dados para o computador. Assim, devemos ter uma representao correspondente em nvel de algoritmo para a entrada de dados. Utilizaremos o comando leia para efetuar a entrada de dados para o algoritmo, conforme sintaxe abaixo. leia (varivel); onde varivel receber um valor vindo de fora do algoritmo para que algum processamento ocorra.
Exemplo
Inicio inteiro: X; leia(X); Fim
1.3
Na prtica de construo de programas ser muito comum o uso de comandos que proporcionam a sada de dados gerados pelo computador. Assim devemos ter uma representao correspondente em nvel de algoritmo para a sada de dados. Utilizaremos o comando escreva para esta finalidade. escreva (identificador); onde o algoritmo mostrar os valores de variveis, constantes e/ou expresses.
Exemplo
Incio caractere : nome; inteiro : idade; escreva(Entre com o nome da pessoa:); leia(nome); escreva(Entre com a idade da pessoa:); leia(idade); escreva(Nome: , nome, Idade: , idade); Fim
Exerccios Lista 1
Nome Turma
1.
Suponha uma gaveta cheia de meias de cores diversas. Proponha um algoritmo (fluxograma) para encontrar um par de meias vermelhas dado que voc somente pode olhar a cor da meia aps ter retirado-a da gaveta. Suponha uma tv por assinatura de 100 canais. Joo sabe que neste momento est passando um filme que ele deseja assistir, mas no se lembra do nmero do canal. Proponha um algoritmo (fluxograma) para que Joo encontre o canal desejado. Suponha que Joo tenha decidido encontrar o canal atravs de tentativas aleatrias. Como voc avalia a estratgia de Joo? Qual o risco desta estratgia? Apresente um fluxograma que realize a leitura de dois nmeros reais e imprima sua soma. Elabore o fluxograma para imprimir os 50 primeiros nmeros naturais (inteiros). Elabore um algoritmo para o seguinte problema: ler as notas da primeira prova, segunda prova e pontos de exerccios de um aluno. Caso a soma destas trs notas seja igual ou superior a 70 pontos, o algoritmo deve emitir a sada Aluno Aprovado. Caso contrrio, o algoritmo deve imprimir Aluno em Exame Especial. Elabore um algoritmo para o seguinte problema: calcular a remunerao a ser paga para um vendedor. A remunerao composta pelo salrio fixo mais a comisso. A comisso calculada como 2% do montante de vendas que excede a meta mensal do vendedor. Este algoritmo recebe como entradas o salrio fixo, a meta de vendas e o volume vendido no ms pelo vendedor. A sada do algoritmo a remunerao deste ms para o vendedor. Elabore um algoritmo para ler as notas da primeira prova, segunda prova e pontos de exerccios de um aluno. Caso a soma destas trs notas seja igual ou superior a 70 pontos, o algoritmo deve emitir a sada Aluno Aprovado. Caso contrrio, o algoritmo deve imprimir Aluno em Exame Especial.
2.
3.
4. 5. 6.
7.
8.