1. Capítulo 2
LÓGICA DE PROGRAMAÇÃO
A 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.
Seqüência Lógica
Estes 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.
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 são 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.
1. CONCEITOS BÁSICOS DE PROGRAMAÇÃO
Para armazenar um algoritmo na memória de um computador e para que ele possa, em
seguida, comandar as operações a serem executadas, é necessário que ele seja programado, isto
é, que seja transcrito para uma linguagem que o computador possa entender, direta ou
indiretamente.
1.1. LINGUAGENS DE PROGRAMAÇÃO
Linguagem é uma maneira de comunicação que segue uma forma e uma estrutura com
significado interpretável.
2. Portanto, linguagem de programação é um conjunto finito de palavras, comandos e
instruções, escritos com o objetivo de orientar a realização de uma tarefa pelo computador.
Logicamente, a linguagem que nós utilizamos em nosso cotidiano é diferente da linguagem
utilizada pela máquina. A máquina trabalha somente com códigos numéricos (linguagem de
máquina), baseados nos números 0 e 1 (sistema binário), que representam impulsos elétricos,
ausente e presente.
Assim, qualquer linguagem de programação deve estar situada entre dois extremos: o da
linguagem natural do homem (muito clara, porém lenta) e o da linguagem de máquina (muito
rápida, porém complexa).
Este é o conceito de nível de linguagem: alto nível para as mais próximas da linguagem
humana; baixo nível para as mais semelhantes à linguagem de máquina.
1.2. TRADUTORES
Para que um computador possa "entender" um programa escrito em uma linguagem de
alto nível, torna-se necessário um meio de tradução entre a linguagem utilizada no programa e a
linguagem de máquina. Este meio pode ser de dois tipos: compilador e interpretador.
Compilador: traduz o programa escrito em linguagem de alto nível (programa-fonte) para um
programa equivalente escrito em linguagem de máquina (programa-objeto).
Interpretador: traduz e envia para execução, instrução por instrução e o programa permanece na
forma fonte.
1.3. TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Existem diversas linguagens de programação, cada uma com suas características
específicas e com níveis de complexidade e objetivos diferentes:
Linguagem de Máquina
Única compreendida pelo computador.
Específica de cada computador.
Linguagens de Baixo Nível
Utilizam mnemônicos para representar instruções elementares
3. Ex.: Assembly
Linguagens de Alto Nível
Utiliza instruções próximas da linguagem humana de forma a facilitar o
raciocínio.
Exemplos: Uso científico : Fortran
Propósito geral : Pascal, C, Basic
Uso comercial : Cobol, Clipper
Uso específico : Lisp, Prolog
Visuais : Delphi, Visual Basic, Java
1.4. CRITÉRIOS DE QUALIDADE DE UM PROGRAMA
Integridade: Refere-se à precisão das informações manipuladas pelo programa, ou seja, os
resultados gerados pelo processamento do programa devem estar corretos, caso contrário o
programa simplesmente não tem sentido.
Clareza: Refere-se à facilidade de leitura do programa. Se um programa for escrito com clareza,
deverá ser possível a outro programador seguir a lógica do programa sem muito esforço, assim
como o próprio autor do programa entendê-lo após ter estado um longo período afastado dele.
O Pascal favorece a escrita de programas com clareza e legibilidade.
Simplicidade: A clareza e precisão de um programa são normalmente melhoradas tornando as
coisas o mais simples possível, consistentes com os objetivos do programa. Muitas vezes torna-
se necessário sacrificar alguma eficiência de processamento, de forma a manter a estrutura do
programa mais simples.
Eficiência: Refere-se à velocidade de processamento e a correta utilização da memória. Um
programa deve ter performance SUFICIENTE para atender às necessidades do problema e do
usuário, bem como deve utilizar os recursos de memória de forma moderada, dentro das
limitações do problema.
Modularidade: Consiste no particionamento do programa em módulos menores bem
identificáveis e com funções específicas, de forma que o conjunto desses módulos e a interação
entre eles permitem a resolução do problema de forma mais simples e clara.
Generalidade: É interessante que um programa seja tão genérico quanto possível de forma a
permitir a reutilização de seus componentes em outros projetos.
2. PARADIGMAS DE PROGRAMAÇÃO
Um paradigma se define na forma como o programador lida com um determinado
problema. Muitos pensam que as linguagens de programação surgiram em uma escala linear, ou
seja, que na primeira geração delas o homem se adaptava às máquinas e, depois de várias outras
gerações, as linguagens evoluíram umas das outras e capacitaram as máquinas a fazer as
necessidades humanas. Na verdade, as linguagens surgiram em diferentes trajetórias, cada uma
seguindo um determinado paradigma. Além disso, não é verdadeira a proposição que diz que uma
linguagem qualquer é, sem exceção, a evolução da linguagem anterior (historicamente).
4. As linguagens existentes hoje foram se adaptando a uma única forma de programação e às
linguagens inseridas no mesmo paradigma. Dentre esses paradigmas, vamos conceituar quatro,
que são considerados os principais: paradigma imperativo, lógico, funcional e orientado a
objetos.
2.1. PARADIGMA IMPERATIVO
“Primeiro faça isso e depois faça aquilo.”
A frase acima resume o paradigma imperativo, também conhecido como paradigma
procedural. O problema é analisado até que se encontre uma solução. Basicamente, é uma
sequência de comandos que o computador executará, passo-a-passo, modificando dados e
variáveis a fim de chegar ao resultado esperado. Algol, Basic, C e Pascal são algumas das
linguagens de programação que seguem esse paradigma.
2.2. PARADIGMA FUNCIONAL
“Subdividir o problema em outras funções e resolver cada uma separadamente, pois os
resultados encontrados serão utilizados posteriormente.”
Sobre o paradigma funcional, é fácil ilustrar através de um fluxograma. Cada bloco recebe
no topo uma entrada de dados e retorna, na base, os dados de saída. A solução geral é dividida em
várias funções (daí o nome funcional) que, no final, se associam para mostrar o resultado na tela.
No (clássico) fluxograma ao lado, o problema –
fazer a média das notas de N alunos -, é dividido em
duas etapas: a soma das N notas e a atribuição da
quantidade N de alunos à variável contador. Ambos os
resultados, soma das notas e contagem dos alunos,
são utilizados na operação final, que é dividir a soma
das notas pelo número de alunos. É um exemplo muito
simples, mas que, penso eu, foi útil para exemplificar o
conceito.
2.3. PARADIGMA LÓGICO
“Qual é o problema?”
O paradigma lógico ou declarativo caracteriza-se pelo método preciso de descrever um
problema, sem se preocupar com qual algoritmo será utilizado para resolvê-lo. A idéia é criar um
algoritmo “universal”, capaz de solucionar qualquer problema. O problema se adapta a esse
algoritmo, e não o contrário. É baseado em axiomas (verdades universais) e regras de inferência.
Prolog é uma linguagem lógica que ilustra essa definição.
2.4. PARADIGMA ORIENTADO A OBJETOS
“Um conjunto de classes faz a interação entre objetos (instâncias) e, com a troca de
mensagens entre eles, forma-se o software como um todo.”
Praticamente tudo é objeto, cada qual com estrutura e comportamento próprios. Esses
objetos são classificados em classes e comunicam entre si. Cada uma dessas representa um
5. determinado fenômeno e seus objetos são organizados hierarquicamente. O conjunto de classes
faz a interação entre objetos e a troca de mensagens entre eles forma o software como um todo.
Esse paradigma vem ganhando cada vez mais popularidade. Isso se dá devido ao grande
número de vantagens em trabalhar com orientação a objeto, como a flexibilidade do código
quando se trabalha em sistemas de grande porte e com uma maior equipe de programadores.
EXERCÍCIOS PROPOSTOS
Questão 01:
Defina, com suas palavras, os seguintes termos:
a) programa
b) linguagem de programação
c) tradutor
Questão 02:
Qual a diferença entre linguagem de baixo nível e linguagem de alto nível?
Questão 03:
Explique a diferença entre compilador e interpretador.
Questão 04:
Cite e explique com suas palavras os quatro paradigmas tradicionais de programação.