RSS

Lógica de Programação

O Conceito de Lógica

O homem por si só é um ser lógico, e essa lógica é um dom que não se aprende de uma hora para outra. Resulta, em geral, de experiências do dia-a-dia. Usamos lógica quando executamos ordenadamente uma série de rotinas predeterminadas, tais como: levantar da cama, pegar os chinelos, ir ao banheiro, tomar banho, etc. Estas ações são justificadas pela experiência prévia nestes procedimentos que nos fazem reconhecê-los como mais eficazes e agradáveis para começar o dia de atividade.

Não existem meios de ensinar lógica, podemos sim, através de um grande esforço, bastante dedicação e exercícios aperfeiçoar a lógica da pessoa para que esta possa formas sua própria estrutura de pensamento, a qual é de fundamental importância para a arte de programar.

Um conceito de lógica seria: o conjunto de leis, princípios ou métodos que determinam um raciocínio coerente, induzindo a uma solução prática e eficaz do problema.

Aprender a usar e aperfeiçoar a lógica é essencial para a formação de um bom programador, servindo como base para aprender todas as linguagens de programação. O objetivo principal da lógica de programação é demonstrar técnicas para resolução de problemas e conseqüentemente automatização de tarefas. De um modo geral esses conhecimentos serão de supra importância, pois, ajudarão no cotidiano, desenvolvendo o raciocínio rápido.

O que é algoritmo?

Ao contrário do que se pode pensar, o conceito de algoritmo não foi criado para satisfazer as necessidades da computação. Pelo contrario, a programação de computadores é apenas um dos campos de aplicação dos algoritmos. Na verdade, há inúmeros casos que podem exemplificar o uso (involuntário ou não) de algoritmos para a padronização do exercício de tarefas rotineiras, tais como:

  • Instruções para se utilizar um aparelho eletrodoméstico;
  • Uma receita para preparo de algum prato;

Já no contexto da computação a noção de algoritmos assume um papel central, visto que o objetivo geral deste ramo de trabalho é a automação de tarefas utilizando computadores.

A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas: dispositivos mecânicos, eletrônicos (como computadores) ou de natureza mista.

Para que a automação de uma tarefa seja bem sucedida é necessário que a máquina que passara a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com clareza e exatidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqüência em que estas fases devem ser realizadas.

A especificação da seqüência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo.

Para que o computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo-a-passo, numa forma compreensível pela maquina, utilizando o que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador.

A criação de algoritmos para resolver os problemas é uma das maiores dificuldades dos iniciantes em programação em computadores. Isto porque não existe um conjunto de regras, ou seja, um algoritmo, que nos permita criar algoritmos. Caso isto fosse possível, a função de criador de algoritmos desaparecia. Claro que existem linhas mestras e estruturas básicas, a partir das quais podemos criar algoritmos, mas a solução completa depende em grande parte do criador do algoritmo. Geralmente existem diversos algoritmos para resolver o mesmo problema, cada um segundo o ponto de vista do seu criador.

Um algoritmo tem cinco características importantes:

Finitude:

Um algoritmo deve sempre terminar após um número finito de passos.

Definição:

Cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente e sem ambigüidades.

Entradas:

Um algoritmo deve ter zero ou mais entradas, isto é, quantidades que lhe são fornecidas antes do algoritmo iniciar.

Saídas:

Um algoritmo deve ter uma ou mais saídas, isto é, quantidades que tem uma relação específica com as entradas.

Efetividade:

Um algoritmo deve ser efetivo. Isto significa que todas as operações devem ser suficientemente básicas de modo que possam ser, em principio, executadas com precisão em um tempo finito por um humano usando papel e lápis.

É claro que todos nós sabemos construir algoritmos. Se isto não fosse verdade, não conseguiríamos sair de casa pela manhã, ir ao trabalho, decidir qual o melhor caminho para chegar a um lugar, voltar para casa, etc. Para que isto seja feito, necessário uma série de entradas do tipo: a que hora acordar, que hora sair de casa, qual o melhor meio de transporte, etc.

Um fator importante é que pode haver mais de um algoritmo para resolver um determinado problema. Por exemplo, para ir de casa ao trabalho, posso escolher diversos meios de transportes em função do preço, conforto, rapidez, etc. A escolha será feita em função do critério que melhor se adequar as nossas necessidades.

É evidente que nosso foco está em algoritmos que se apliquem ao contexto computacional, embora inicialmente nossos exemplos e exercícios tratem de processos cotidianos, mas independente disso, devemos ter em mente que:

Algoritmos não se aprendem copiando algoritmos prontos; algoritmos só se aprendem construindo e testando os mesmos.

Sobre linguagens de Programação

São softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais. Existem várias linguagens de programação, cada uma com suas características próprias, e que serão mais ou menos adequadas para o tratamento de um determinado problema. Caberá o desenvolvedor da aplicação, definir qual a linguagem ideal para se trabalhar em cada situação. Vale ressaltar, no entanto, que o raciocínio lógico e o algoritmo que o expresse independem de linguagem de programação; essa será apenas a ferramenta que implementará o raciocínio transformando-o em um programa de computador. Alguns exemplos de linguagens de programação conhecidas e populares são: Pascal, Clipper, Visual Basic, Delphi, Java, C#, PHP, COBOL, Fortran, Phyton e muitas outras.

Método para a construção de algoritmos

Para a construção de qualquer tipo de algoritmo, é necessário seguir estes passos:

1 – Compreender completamente o problema a ser resolvido, destacando os pontos mais importantes e os objetos que o compõem.

2 – Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos fazem parte desse cenário-problema.

3 – Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída. Além disso, deve-se verificar quais objetos são responsáveis pelas atividades.

4 – Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento.

5 – Construir o algoritmo utilizando um dos tipos descritos na próxima seção.

6 – Testar o algoritmo realizando simulações.

Tipos de Algoritmos

Os três tipos de algoritmos mais utilizados são:

  • Descrição narrativa
  • Fluxograma
  • Pseudocódigo ou Portugol

Descrição Narrativa

A descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural (por exemplo, a linguagem portuguesa), os passos a serem seguidos para a sua resolução.

Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural, neste ponto já é bem conhecida.

Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultara a transcrição desse algoritmo para o programa.

Fluxograma

O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos pré definidos, (ver tabela 1.1) os passos a serem seguidos para a sua resolução.

Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento de textos.

Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando a sua transcrição para um programa.

Pseudocódigo ou Portugol

O pseudocódigo ou portugol consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a sua resolução.

Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas dessa linguagem que serão utilizadas.

Desvantagem: é necessário aprender as regras do pseudocódigo, que serão apresentadas nas próximas  seções.

Exemplos de Algoritmos

Os exemplos a seguir mostram alguns algoritmos desenvolvidos com os três tipos citados anteriormente.

Faça um algoritmo para mostrar o resultado da multiplicação de dois números.

Algoritmo em descrição narrativa:

Passo 1 – Receber os dois números que serão multiplicados.

Passo 2 – Multiplicar os números.

Passo 3 – Mostrar o resultado obtido na multiplicação.

Algoritmo em fluxograma:

Algoritmo em Pseudocódigo:

Tipos de Dados e Instruções Primitivas

Tendo em vista que nossa área de atuação envolve a criação de algoritmos para sistemas computacionais, e que o computador nada mais é que uma ferramenta para solucionar problemas que envolvam a manipulação de informações, deveremos conhecer algo mais sobre como esta máquina gerencia e manipula tais informações, que grosso modo, serão classificadas em dois tipos básicos:

  • Instruções
  • Dados

As instruções são comandos que identificarão á maquina qual deverá ser a ação executada. È por meio das instruções básicas (ou comandos básicos) que teremos um algoritmo e posteriormente um programa de computador que expressará o raciocínio lógico.

Os dados são números, medidas, valores relacionados ao problema em que se esta atuando. São esses elementos (dados) que serão trabalhados pelas instruções do algoritmo para a solução seja alcançada. È comum relacionarmos os termos dado e informação como sinônimos, mas na verdade existe uma brutal diferença. Uma informação é a interpretação, a compreensão de um conjunto de dados. O que é armazenado na máquina não é a informação, mas a sua representação em forma de dados. Essa representação pode ser transformada pela máquina, mas não o seu significado, já que este depende de quem esta entrando em contato com a informação. A função do algoritmo, quando executado, é a de agir (operar) sobre os dados, transformando-os em informações.

Uma idéia básica de estrutura de dados

Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracterizam uma forma, uma estrutura de dados. A escolha de uma estrutura de dados apropriada pode tornar um problema complicado em uma solução bastante trivial. Esse é um elemento tão importante da ciência da computação, que exeistem disciplinas especificas para tratar do tema. O estudo das estruturas de dados esta em constante desenvolvimento (assim como o de algoritmos), mas, apesar disso, existem certas estruturas clássicas que se comportam como padrões dentre estas iniciaremos com a mais simples de todas as estruturas, denominada de variável.

Variáveis

Nome de um local de memória onde se pode colocar qualquer valor (do tipo básico associado). Cada variável corresponde a uma posição da memória. As linguagens de programação de alto nível ( e também as de pseudocódigos ) atribuem nomes as posições de memórias que armazenam os dados a serem processados. Deste modo, os programadores tem mais facilidade para construir seus algoritmos.

A designação “variável” é devido ao fato de podermos substituir seu conteúdo quando necessário.

Toda variável é identificada por um nome ou identificador, e é formada por um ou mais caracteres, sendo que o primeiro caractere deve obrigadoriamente, ser uma letra, e os caracteres seguintes: letras, dígitos e sublinha. Deve ter no máximo 10 caracteres e não pode haver espaços entre os caracteres.

Deve possuir um nome significativo.

Exemplo:

Se a variável vai armazenar o salário de um empregado, escolha o identificado SALARIO para representá-la.

Observação:

Deve-se colocar comentários quando o nome da variável não é significativo.

Importante:

Lembramos que a variável é o nome da posição da memória e que conteúdo da variável é o valor armazenado naquela posição de memória; é possível que se faça a alteração do conteúdo a qualquer tempo, porém, a variável armazena um único valor por vez – a alteração do seu conteúdo implicará na perda do conteúdo anterior.

Tipos de dados

Todas as variáveis pertencema um tipo de dado que define o conjunto de valores que ela pode receber ( armazenar).

Tipos de dados ou tipos de variáveis são tipos predefinidos pela linguagem de programação que esta utilizando.

Os dados são representados pelas informações a serem tratadas (processadas) por um computador. Estas informações estão caracterizadas por três tipos de dados a saber:

  • Dados Numéricos (inteiros e reais)
  • Dados Literais
  • Dados Lógicos

Tipos Inteiros

São caracterizados como tipos inteiros os dados numéricos negativos ou positivos (sem casas decimais).

Exemplo:

-10, 0, 347, 523, 1356

Tipos Reais

São caracterizados como tipos reais os dados numéricos negativos ou positivos com casas decimais.

Exemplo:

-10.30 ; 50.32 ; 1.0 ; 1542.54 ;

Tipos Literais

São caracterizados como tipos literais as seqüências contendo letras, números e símbolos especiais. Deve ser indicado entre aspas (“ ” ). Este tipo de dado é também conhecido como:

  • Alfanumérico
  • String
  • Caractere
  • Cadeia

Exemplo:

“ABC”, “XYZ”, “BANANA”, “4567889”, “RUA SENHOR DA GLORIA, 1234”.

Tipos Lógicos

São caracterizados como tipos lógicos os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo booleano.

Exemplo:

  • Verdadeiro (Para o valor lógico verdadeiro)
  • Falso (Para o valor lógico falso)

Constantes

Consiste em um local na memória cujo valor foi inicializado e não pode ser mudado até o final do programa, ou seja, uma constante é uma posição de memória que possui um valor fixo, constante, durante toda a existência do programa.

Declaração de variáveis

Corresponde a criação de locais na memória rotulados com os nomes das variáveis e marcados com o tipo de valor que ela pode conter (real, inteiro, literal ou lógico). O conteúdo da variável pode variar durante a execução de um programa, embora uma variável possa assumir diferentes valores, ela só pode armazenar um único valor a cada instante do mesmo tipo.

Forbellone e Eberspächer(1993) relacionam a memória como sendo um armário composto por inúmeras gavetas (variáveis). Cada uma dessas gavetas precisa ser referenciada e diferenciada, o que é feito por meio de identificadores (etiquetas). Cada variável (gaveta), no entanto, pode guardar apenas uma informação (objeto) de cada vez, sendo sempre do mesmo tipo (material).

Exemplo:

Var

                NUMERO : Inteiro

                X,Y : Real

                CIDADE, NOME : Literal

                ID : Lógico

  • NUMERO é o n ome do local que só pode conter valores do tipo inteiro.
  • X ,Y só podem conter valores do tipo reais.
  • CIDADE, NOME só podem conter conjunto de caracteres.
  • ID só pode conter FALSO ou VERDADEIRO.

Nos exemplos acima, qualquer tentativa de atribuição de valores de outros tipos nestas variáveis é considerada erro.

Observação:

Sempre que se escreve um algoritmo, declaram-se as variáveis que serão usadas e seus respectivos tipos de dados.

Operadores aritméticos

São elementos funcionais que atuam sobre constantes e/ou variáveis e produzem um determinado resultado.

Segundo Saliba (1992), os operadores aritméticos são classificados em duas categorias:

  • Binários
  • Unários

Binários quando atuam sobre dois operandos, Exemplo:  3 +5

Unários quando atuam sobre um único operando, Exemplo: o sinal de (-) na frente de um número, cuja a função é inverter o seu sinal.

Expressões aritméticas

Para Farrer ET AL (1999), expressão aritmética é aquela cujos operadores são aritméticos e os operandos são constantes e/ou variáveis do tipo numérico (inteiro ou real).

EXPRESSÃO ARITMÉTICA = Operando -> Operador aritmético -> Operando

Operando = Constante numérica, variável numérica ou função matemática.

 Exemplo:

ÁREA = BASE x ALTURA

                              2

AREA <- (BASE * ALTURA) / 2;

Operadores Aritméticos

 

Uma resposta para “Lógica de Programação

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: