Apost Algoritmos Parte1

10
Algoritmos e Programação

description

Linguagem C

Transcript of Apost Algoritmos Parte1

Page 1: Apost Algoritmos Parte1

Algoritmos e Programação

Page 2: Apost Algoritmos Parte1

1. Introdução à Lógica de Programação

1.1 LógicaA lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o desenvolvimento. Então o que é lógica?

Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.

1.2 Seqüência LógicaEstes pensamentos, podem ser descritos como uma seqüência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa.

Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema.

1.3 Instruções

Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”. Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem seqüencial lógica.Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc... É evidente que essas instruções tem que ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las. Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.

Instruções é um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.

Conceitos sobre Algoritmo

1.4 AlgoritmoUm algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos, como um videocassete, que explicam passo-a-passo como, por exemplo, gravar um evento. Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. Por exemplo:“Chupar uma bala”.Pegar a balaRetirar o papelChupar a balaJogar o papel no lixo

“Somar dois números quaisquer”.Escreva o primeiro número no retângulo AEscreva o segundo número no retângulo B

1

Page 3: Apost Algoritmos Parte1

Some o número do retângulo A com número do retângulo B e coloque o resultado noretângulo C

Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos.

O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios.

Algoritmo não se aprende:- Copiando Algoritmos- “Estudando” Algoritmos

Algoritmos só se aprendem:- Construindo Algoritmos- Testando Algoritmos

Agora, veremos a seguir, um exemplo de algoritmo usado para solucionar a troca de um pneu furado de carro:1º - Retirar o pneu furado2º - Colocar o pneu bom.

O algoritmo foi feito em duas etapas, e soluciona totalmente o problema através de uma linguagem clara e facilmente compreensível. A quantidade de etapas usadas para se resolver um algoritmo, é relativa ao detalhamento necessário que envolve a solução de todos os problemas, por menor que sejam, envolvidos no mesmo. Não existe uma regra que se possa usar para resolver tal situação, somente a prática e o bom senso lhe fornecerão habilidades suficientes para resolvê-la.

No exemplo anterior, cada etapa envolvida pode ser mais bem detalhada para que a solução final fique mais apurada:

1º - Abrir o Porta-malas.2º - Retirar o estepe, chave de rodas e o macaco.3º - Afrouxar os parafusos do pneu furado.4º - Levantar o carro com o macaco.5º - Retirar totalmente os parafusos e o pneu furado.6º - Colocar o estepe, os parafusos e dar um leve aperto.7º - Abaixar o carro e retirar o macaco.8º - Apertar totalmente os parafusos.9º - Guardar o macaco, a chave de rodas e o pneu furado e fechar o porta-malas.10º - Levar para arrumar o pneu furado.

Como podemos observar, o detalhamento aumentou a um nível satisfatório, porém, se a resolução do problema ainda estiver meio obscura, basta aumentar os detalhes da solução até que se obtenha o ponto ideal. Quando aumentamos os níveis de detalhes de um algoritmo, estamos usando uma técnica chamada de “Refinamentos Sucessivos” ou “Método Top-Down”.

1.5 Programas

Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que são interpretados e executados por uma máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real.

2

Page 4: Apost Algoritmos Parte1

A programação é a capacidade de um ser humano dominar e solucionar com recursos computacionais problemas do dia-a-dia de uma Empresa, Corporação, etc...

O raciocínio da lógica para a programação traz ao indivíduo um novo mundo cheio de outros mundos. Dominando a lógica você será capaz de aprender sem grandes dificuldades qualquer outra linguagem de programação seja ela estruturada, orientada a objeto, orientada a eventos.

2. Construção de Fluxogramas

Um dos métodos mais comuns de representação de lógica de programação é através do uso de diagramas denominados fluxogramas.

Diagramas de fluxos fornece uma representação gráfica de um procedimento passo-a-passo, necessário para resolver um particular problema, isto é, para um algoritmo. Tal representação torna uma seqüência complexa de eventos, fácil para se ver e compreender.

Os fluxogramas podem ser reduzidos para dois tipos básicos: o fluxograma orientado para o homem (mais grosseiro, menos detalhado) e o fluxograma orientado para a máquina (mais refinado e detalhado). Um fluxograma orientado para o homem é considerado bom se ele pode ser entendido por uma pessoa com conhecimento na área onde se enquadra o problema, porém sem experiência em programação de computadores. Um bom fluxograma orientado para a máquina é aquele em que o programa praticamente pode ser escrito diretamente sem codificação intermediária.

Existe um conjunto padrão de símbolos para representar um fluxograma. Mas os principais são:

Processamento: uma instrução ou um conjunto de instruções que indicam computação.

Decisão: indicação da possibilidade de desvios para outros pontos do programa, de acordo com certas condições.

Direção do fluxo: indicação da ordem de execução das instruções.

As três finalidades mais importantes no fluxograma são:1. Auxiliar no desenvolvimento do projeto do programa2. Guia para a codificação do programa3. Parte da documentação do programa

É recomendável que se faça um fluxograma para todos os programas por mais simples que eles sejam, até que se torne um hábito pensar em fluxograma antes de pensar em programa.

Outros símbolos usados em fluxogramas:

TERMINAL: usado no início e no final de um fluxograma

3

Page 5: Apost Algoritmos Parte1

PROCESSAMENTO PREDEFINIDO: geralmente usado para operações repetitivas, automáticas.

ou

DOCUMENTO/RELATÓRIO: usado para saída de resultados.

CONECTOR: uma entrada ou uma saída de/ou para uma outra parte do fluxograma.

CONECTOR ENTRE PÁGINAS.

MODIFICAÇÃO DE PROGRAMA: uma instrução ou um conjunto de instruções que modifica o fluxograma.

SUBPROGRAMA EXTERNO: referência a um subprograma externo ao fluxograma.

Exemplo: K!

O símbolo K! é lido “K fatorial” e representa o produto 1 x 2 x 3 x ... x K.

4

I=0SOMA=0FAT=1

I=I+1

A=I

FAT=FAT*A

SOMA=SOMA+FAT

PARE

6

j=1

I<=6?

V

F

ENTRADA: qualquer função de um dispositivo genérico de entrada de dados.

Page 6: Apost Algoritmos Parte1

Exemplo:Algoritmo que descreve a ação de uma pessoa fumando (ou prestes a fumar) e o fluxograma correspondente.

Passos: Fluxograma1. Tirar o maço do bolso2. Tirar o cigarro do maço3. Guardar o maço no bolso4. Colocar o cigarro na boca5. Tirar o isqueiro do bolso6. Acender o cigarro7. Guardar o isqueiro no bolso

Algoritmo que descreve o uso cotidiano de um telefone público e o fluxograma correspondente:

Passos: Fluxograma1. Inicio2. Levantar o fone do gancho3. colocar a ficha4. Teclar o número desejado5. Notar se a ligação foi completada, se sim, vá

para o passo 7, se não, vá para o passo 6.6. Reponha o fone e retire a ficha7. Fim

5

Fim

Tirar o isqueiro

Tirar o cigarro

Tirar o maço

Inicio

Guardar o maço

Colocar o cigarro na boca

Fim

Colocar a ficha

Tirar o fone do gancho e esperar o sinal

Inicio

Discar o número

Reponha o fone no gancho e retire a ficha

Ligação completada

?

Não

Sim

Page 7: Apost Algoritmos Parte1

3. Passos para o Desenvolvimento de Programas de Computador

Os computadores são usados como ferramentas para resolver problemas, e os bons programadores reconhecem que todo programa de computador representa mais que um simples conjunto ordenado de comandos. É também o resultado do conhecimento das áreas de aplicação e o entendimento perfeito do uso do computador.

Os primeiros passos no projeto de um programa são: Definição do Problema: todo problema que requer uma solução através do computador

demanda uma precisa e completa definição: quais as informações disponíveis e o que se deseja saber.

Análise do Problema: A precisa e completa definição do problema fornecerá meios para determinar o modelo de resolução desejado, selecionar o método a ser usado e construir o algoritmo correspondente através de refinamentos sucessivos.Geralmente, existe mais de um caminho para resolver um problema, e pode ser difícil identificar o melhor deles. Entretanto, quando um particular caminho é escolhido, o passo seguinte é o da programação. Programação: a programação propriamente dita de um problema requer as

seguintes etapas seqüenciais: Algoritmo: após a elaboração do método a ser usado, deve-se formalizar a

técnica escolhida através do fluxograma e/ou pseudocódigo que deve retratar, fielmente, o algoritmo obtido. Preferencialmente, deve-se desenhar um fluxograma orientado para o homem, contendo os passos maiores e um fluxograma orientado para a máquina, contendo todos os detalhes. Na elaboração do fluxograma, devem ser esclarecidos os detalhes relacionados ao problema, independentes de linguagens de programação.

Codificação: a codificação é a escrita do programa usando as regras gramaticais de uma linguagem de programação.Na codificação deve ser feita a declaração dos tipos de entidades que serão usadas, a designação de áreas de memória para o armazenamento de informações, a especificação de formatos para os dados de entrada e para os resultados de saída e, principalmente, a escrita dos comandos que resolverão o problema em questão.

Programa-fonte: o passo seguinte na programação é a obtenção do programa-fonte, transcrevendo a codificação em algum meio de registro que possa ser lido pelo computador.

Compilação: o processo de compilação, feito pelo próprio computador, consiste em traduzir o programa-fonte em programa-objeto. É durante esse processo que o compilador detecta erros de sintaxe da linguagem. Havendo erros sintáticos no programa-fonte, o compilador indica o local do erro e diagnostica sua causa mais provável.

Verificação de erros de sintaxe: após a compilação, deve ser feita a verificação, localização e remoção dos erros sintáticos detectados. Se houver erros de sintaxe, o compilador não gera o programa-objeto. Assim sendo, os erros devem ser corrigidos no programa-fonte que deve ser novamente compilado.

Preparação dos Dados de Entrada: somente após o programa ter sido compilado corretamente, é que se deve preparar os dados de entrada de acordo com os formatos especificados no programa-fonte e nos meios de registros apropriados ao programa.

Execução: o passo seguinte é mandar executar, no computador, o programa-objeto, juntamente com os dados de entrada, a fim de obter os resultados do processamento.

Depuração dos Resultados: talvez a tarefa mais tediosa no desenvolvimento de um programa seja a etapa de depuração, isto é, a interpretação dos resultados produzidos pelo computador para assegurar que o problema foi corretamente resolvido. É nesta etapa que se detecta os erros de lógica, se houver.

6

Page 8: Apost Algoritmos Parte1

Relatório do Programa ou Documentação: para que um programa possa ser aceito como completo, o programador deve elaborar sua documentação, que consiste num relatório composto dos seguintes itens principais:

1. Identificação: onde deve constar o nome do programa, o nome do programador, a instituição a qual pertence e a data de programação.

2. Finalidade: item que deve especificar o propósito do programa.3. Modelo de resolução: que é a descrição do algoritmo ou método usado no

programa, ou a citação de referências bibliográficas onde podem ser encontrados.

4. Restrições do programa: onde devem constar linguagem de programação usada, dimensionamento de vetores e matrizes, ocupação do espaço de memória para o programa, estimativa de tempo de processamento para um problema típico, nome e detalhes dos arquivos usados, subprogramas necessários, etc.

5. Modo de uso: fornecendo informações sobre os dados de entrada (formatos, meios de registro, como devem ser preparados os dados) e sobre os resultados de saída.

Devem ser anexados a este relatório o fluxograma do algoritmo, a listagem do programa-fonte e um problema típico resolvido.Uma vez que o programa esteja completo, ele deve dar entrada numa biblioteca de aplicações, para catalogação e divulgação, a fim de que a comunidade possa usufruir do programa.

7