Apostila de Algoritmos

Apostila de Algoritmos

(Parte 1 de 8)

FIT - Faculdade de Informática de Taquara Curso de Sistemas de Informação

Apostila de Lógica de Programação - ALGORITMOS -

Profa. Flávia Pereira de Carvalho

Março de 2007

Apostila de Lógica de Programação - Algoritmos

Profa. Flávia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 2

Sumário

1 INTRODUÇÃO3
2 FORMAS DE REPRESENTAÇÃO DE ALGORITMOS5
2.1 DIAGRAMA NASSI-SHNEIDERMAN5
2.2 FLUXOGRAMA6
2.3 PORTUGUÊS ESTRUTURADO7
3 CONCEITOS IMPORTANTES8
3.1 CONSTANTES8
3.2 VARIÁVEIS8
3.3 ATRIBUIÇÃO9
4 INSTRUÇÃO ESCREVER10
5 OPERADORES ARITMÉTICOS1
6 INSTRUÇÃO LER12
7 HORIZONTALIZAÇÃO12
8 ALGORITMOS COM SELEÇÃO13
8.1 ESTRUTURA DE SELEÇÃO ANINHADA13
8.2 ESTRUTURA DE SELEÇÃO CONCATENADA14
9 OPERADORES RELACIONAIS15
10 OPERADORES LÓGICOS16
1 ALGORITMOS COM REPETIÇÃO18
1.1 ESTRUTURA DE REPETIÇÃO: REPITA-ATÉ19
1.2 ESTRUTURA DE REPETIÇÃO: ENQUANTO-FAÇA20
1.3 ESTRUTURA DE REPETIÇÃO: PARA-ATÉ-FAÇA21
12 DIZER SIM PARA CONTINUAR OU NÃO PARA FINALIZAR21
13 CONTADORES E ACUMULADORES2
13.1 CONTADORES2
13.2 ACUMULADORES (OU SOMADORES)23
14 DETERMINAÇÃO DO MAIOR E/OU MENOR VALOR EM UM CONJUNTO DE VALORES24
15 REPETIÇÃO ANINHADA25
16 VETORES26
16.1 COMO LER UM VETOR (PREENCHER)27
16.2 COMO ESCREVER UM VETOR28
17 RESPOSTAS DOS EXEMPLOS29

1 Introdução

Nesta apostila estudaremos Lógica de Programação e, para isto, é importante ter uma visão geral do processo de desenvolvimento de programas (softwares), visto que o objetivo final é ter um bom embasamento para a prática da programação de computadores [MAR03].

Para o desenvolvimento de qualquer programa, deve-se seguir basicamente as seguintes etapas, conhecidas como Ciclo de Vida do Sistema [BUF03]:

1) Estudo da Viabilidade (Estudos Iniciais) 2) Análise detalhada do sistema (Projeto Lógico) 3) Projeto preliminar do sistema (Projeto Físico) 4) Projeto detalhado do sistema (Algoritmos) 5) Implementação ou Codificação do sistema (na Linguagem de Programação escolhida) 6) Testes do sistema 7) Instalação e Manutenção do sistema

No desenvolvimento de um sistema, quanto mais tarde um erro é detectado, mais dinheiro e tempo se gasta para repará-lo. Assim, a responsabilidade do programador é maior na criação dos algoritmos do que na sua própria implementação, pois quando bem projetados não se perde tempo tendo que refazê-los, reimplantá-los e retestá-los, assegurando assim um final feliz e no prazo previsto para o projeto [BUF03].

Pode-se encontrar na literatura em informática várias formas de representação das etapas que compõem o ciclo de vida de um sistema. Essas formas de representação podem variar tanto na quantidade de etapas quanto nas atividades a serem realizadas em cada fase [MAR03].

Como pode-se observar, nesse exemplo de ciclo de vida de um sistema (com sete fases) apresentado acima, os algoritmos fazem parte da quarta etapa do desenvolvimento de um programa. Na verdade, os algoritmos estão presentes no nosso dia-a-dia sem que saibamos, pois uma receita culinária, as instruções de uso de um equipamento ou as indicações de um instrutor sobre como estacionar um carro, por exemplo, nada mais são do que algoritmos.

Um algoritmo pode ser definido como um conjunto de regras (instruções), bem definidas, para solução de um determinado problema. Segundo o dicionário Michaelis, o conceito de algoritmo é a "utilização de regras para definir ou executar uma tarefa específica ou para resolver um problema específico."

A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo não é um termo computacional, ou seja, não se refere apenas à área de informática. É uma definição ampla que agora que você já sabe o que significa, talvez a utilize no seu cotidiano normalmente.

Na informática, o algoritmo é o "projeto do programa", ou seja, antes de se fazer um programa (software) na Linguagem de Programação desejada (Pascal, C, Delphi, etc.) deve-se fazer o algoritmo do programa. Já um programa, é um algoritmo escrito numa forma compreensível pelo computador (através de uma Linguagem de Programação), onde todas as ações a serem executadas devem ser especificadas nos mínimos detalhes e de acordo com as regras de sintaxe1 da linguagem escolhida.

1 Sintaxe: segundo o dicionário Aurélio, é a parte da gramática que estuda a disposição das palavras na frase e a das frases no discurso, bem como a relação lógica das frases entre si. Cada Linguagem de Programação tem a sua sintaxe (instruções, comandos, etc) que deve ser seguida corretamente para que o programa funcione. O conjunto de palavras e regras que definem o formato das sentenças válidas chama-se de sintaxe da linguagem.

Apostila de Lógica de Programação - Algoritmos

Profa. Flávia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 4

Um algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Um algoritmo é um 'caminho' para a solução de um problema e, em geral, existem muitos caminhos que levam a uma solução satisfatória, ou seja, para resolver o mesmo problema podese obter vários algoritmos diferentes.

Nesta disciplina estudaremos os passos básicos e as técnicas para a construção de algoritmos através de três métodos para sua representação, que são alguns dos mais conhecidos. O objetivo ao final da disciplina, é que você tenha adquirido capacidade de transformar qualquer problema em um algoritmo de boa qualidade, ou seja, a intenção é que você aprenda a Lógica de Programação dando uma base teórica e prática suficientemente boa, para que você domine os algoritmos e esteja habilitado a aprender uma Linguagem de Programação posteriormente [BUF03].

Para resolver um problema no computador é necessário que seja primeiramente encontrada uma maneira de descrever este problema de uma forma clara e precisa. É preciso que encontremos uma seqüência de passos que permitam que o problema possa ser resolvido de maneira automática e repetitiva. Esta seqüência de passos é chamada de algoritmo [GOM04].

A noção de algoritmo é central para toda a computação. A criação de algoritmos para resolver os problemas é uma das maiores dificuldades dos iniciantes em programação em computadores [GOM04].

Uma das formas mais eficazes de aprender algoritmos é através de muitos exercícios. Veja na Tabela 1 algumas dicas de como aprender e como não aprender algoritmos:

Algoritmos não se aprende Algoritmos se aprende

Copiando algoritmos Construindo algoritmos Estudando algoritmos prontos Testando algoritmos

Tabela 1: Dicas de como aprender e como não aprender algoritmos

O aprendizado da Lógica é essencial para a formação de um bom programador, servindo como base para o aprendizado de todas as Linguagens de Programação, estruturadas ou não. De um modo geral esses conhecimentos serão de supra importância, pois ajudarão no cotidiano, desenvolvendo um raciocínio rápido [COS04].

Apostila de Lógica de Programação - Algoritmos

Profa. Flávia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 5

2 Formas de Representação de Algoritmos

Os algoritmos podem ser representados de várias formas, como por exemplo:

a) Através de uma língua (português, inglês, etc.): forma utilizada nos manuais de instruções, nas receitas culinárias, bulas de medicamentos, etc.

b) Através de uma linguagem de programação (Pascal, C, Delphi, etc.): esta forma é utilizada por alguns programadores experientes, que "pulam" a etapa do projeto do programa (algoritmo) e passam direto para a programação em si.

c) Através de representações gráficas: são bastante recomendáveis, já que um "desenho" (diagrama, fluxograma, etc.) muitas vezes substitui, com vantagem, várias palavras.

Cada uma dessas formas de representar um algoritmo, tem suas vantagens e desvantagens, cabe a pessoa escolher a forma que melhor lhe convir. Nesta disciplina serão apresentadas três formas de representação de algoritmos (que são algumas das mais utilizadas), são elas:

- Diagrama de Nassi-Shneiderman (Diagrama de Chapin) - Fluxograma (Diagrama de Fluxo)

- Português Estruturado (Pseudocódigo, Portugol ou Pseudolinguagem)

Não existe consenso entre os especialistas sobre qual é a melhor maneira de representar um algoritmo. Eu aconselho a utilização do Diagrama Nassi-Shneiderman, mais conhecido como Diagrama de Chapin, por achar que é a forma mais didática de aprender e representar a lógica dos problemas e durante a disciplina usarei esse diagrama nos exemplos e exercícios. Mas, fica a critério de cada um escolher a forma que achar mais conveniente ou mais fácil de entender. Nos próximos capítulos são apresentadas breves explicações sobre cada uma dessas três formas de representar algoritmos e alguns exemplos.

2.1 Diagrama Nassi-Shneiderman

Os Diagramas Nassi-Shneiderman, também conhecidos como Diagramas de Chapin, surgiram nos anos 70 [YOU04] [SHN03] [CHA02] [NAS04] como uma maneira de ajudar nos esforços da abordagem de programação estruturada. Um típico diagrama Nassi-Shneiderman é apresentado na Figura 1 abaixo. Como você pode ver, o diagrama é fácil de ler e de entender, cada "desenho" representa uma ação (instrução) diferente.

Figura 1: Exemplo de Diagrama Nassi-Shneiderman

Apostila de Lógica de Programação - Algoritmos

Profa. Flávia Pereira de Carvalho - fpereira@faccat.br - http://fit.faccat.br/~fpereira 6

A idéia básica deste diagrama é representar as ações de um algoritmo dentro de um único retângulo, subdividindo-o em retângulos menores, que representam os diferentes blocos de seqüência de ações do algoritmo. Para saber mais sobre o histórico desses diagramas e conhecer os seus criadores acesse o site: http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/. Para ter acesso ao primeiro artigo elaborado pelos autores do Diagrama de Chapin, escrito em 1973, acesse o seguinte endereço onde você pode fazer o download do artigo: http://fit.faccat.br/~fpereira/p12-nassi.pdf.

2.2 Fluxograma

Os Fluxogramas ou Diagramas de Fluxo, são uma representação gráfica que utilizam formas geométricas padronizadas ligadas por setas de fluxo, para indicar as diversas ações (instruções) e decisões que devem ser seguidas para resolver o problema em questão.

Eles permitem visualizar os caminhos (fluxos) e as etapas de processamento de dados possíveis e, dentro destas, os passos para a resolução do problema. A seguir, na Figura 2, é apresentado um exemplo de fluxograma [GOM04] [MAR03].

Figura 2: Exemplo de Fluxograma

(Parte 1 de 8)

Comentários