Introdução à lógica de Programação
-
Upload
pfreixo9827 -
Category
Documents
-
view
6.471 -
download
2
Transcript of Introdução à lógica de Programação
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
1. Introdução à lógica de programação
1.1 Lógica
A lógica de programação é necessária para pessoas que desejem trabalhar com o
desenvolvimento de programas. É a técnica de encadear pensamentos, raciocinar com a
finalidade de atingir determinado objectivo.
Na vida real Num computador
Como vou fazer para
chegar à escola?
Talvez deva preparar-me e
apanhar o autocarro a
horas.
Como calcular o quadrado de
um número?
Talvez deva multiplicar o
número por ele mesmo.
1.2 Sequência Lógica
A sequência lógica pode ser descrita como uma sequência de instruções, que devem ser
seguidas para se cumprir uma determinada tarefa. São passos executados até se atingir
um objectivo ou solução de um problema.
Na Vida Real Num Computador
Para chegar a escola devo:
Acordar
Lavar
Vestir
Tomar o pequeno-
almoço
Apanhar o autocarro
Para calcular o quadrado de
um número devo:
Ler esse número
Multiplicar por ele
mesmo
Mostrar o resultado
1.3 Instruções
Na linguagem comum, são as regras ou normas definidas para a realização ou
emprego de algo. Na informática, porém, instrução é a informação que indica a um
computador uma acção elementar a executar.
Uma ordem isolada pode não realizar nenhum processo completo. Por isso, devem
existir conjuntos de instruções colocadas em ordem sequencial lógica para a
realização de alguma tarefa.
Prof. Fernando Freixo Pág. 1
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
As instruções são entã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 acção elementar a executar.
Existem vários tipos de instruções, que podem ser:
de atribuição; algum valor é calculado ou colocado numa posição de
memória,
de escrita; para escrever dados,
de leitura; para ler dados de algum dispositivo,
sequenciais; instruções a ser executadas de um modo sequencial,
de decisão condicional; do tipo: “SE … ENTÃO … SENÃO …”,
de ciclos ou repetição; do tipo “PARA … ATÉ … FAZER …” ou “ENQUANTO …
FAZER …”,
comentários; para apoiar o algoritmo, sem influenciar o mesmo.
Tipos de instruções:
Instrução Na vida real Num Computador
de
atribuição
O pequeno-almoço do
João é sumoO Valor de X é igual a 5
de escritaO João conta o que vai
fazerEscrever o valor de X
de leitura O João lê o jornal Ler o valor de X
sequenciais
Escolher livros para o dia
Colocar os livros na
mochila
Colocar mochila às
costas
Ler número X
Multiplicar X por X
Mostrar resultado
de decisão
condicional
Se estiver bom tempo:
Levar o guarda-chuva
Senão:
Deixar guarda-chuva em
casa
Se o Numero X é par
Escrever “O número é
par”
Senão:
Escrever “O número é
ímpar”
de ciclos ou
repetição
Enquanto não chegar o
autocarro vou esperar
Ler o número X enquanto
ele não for par
Prof. Fernando Freixo Pág. 2
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
1.4 Algoritmos
Um algoritmo é formalmente uma sequência finita de passos que levam a execução
de uma tarefa. Podemos pensar num algoritmo como uma receita, uma sequência
de instruções, que permitem atingir uma meta específica. Estas tarefas não podem
ser redundantes nem subjectivas na sua definição, devem ser claras e precisas.
Exemplo de algoritmo para “chupar um rebuçado”
1. Pegar num rebuçado
2. Retirar o papel
3. Chupar o rebuçado
4. Colocar o papel no lixo
Como se pode ver no exemplo anterior, um algoritmo é composto por um conjunto
de passos que se desencadeiam sequencialmente. Os algoritmos representam
então o programa em linguagem informal, definindo conjuntos de processos para
efectuar uma tarefa. Este conceito é frequentemente ilustrado pelo exemplo de
uma receita, embora muitos algoritmos sejam bem mais complexos que isso.
1.5 Programas
Os programas de computadores nada mais são do que algoritmos escritos numa
determinada linguagem de computador, que depois serão interpretados e
executados por um computador.
Depois de implementado o algoritmo, passa-se à implementação do programa,
através de técnicas de programação e de uma linguagem de programação. Como
sabemos, uma linguagem é definida num alfabeto e é construída por conjuntos de
palavras desse alfabeto. Nas linguagens de programação existem conceitos
semelhantes e é necessário conhecer o alfabeto, as palavras disponíveis e a sintaxe
de programação.
2. Desenvolvimento de Algoritmos
2.1 Pseudocódigo
Pseudocódigo = Pseudo (Suposto) + Código (Instrução).
Prof. Fernando Freixo Pág. 3
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
O pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma
linguagem simples e sem a necessidade de conhecer alguma linguagem de
programação.
Com este tipo de código o programador pode-se centrar nos aspectos lógicos da
solução, descrevendo o seu raciocínio através da mistura de frases em linguagem
comum, palavras-chave que definem acções e instruções de programação.
A forma geral da representação de um algoritmo na forma de pseudocódigo é a
seguinte:
Algoritmo nome_do_algoritmo
Declarações_niciais
Início
Corpo_do_algoritmo
Fim
Algoritmo é a palavra que indica o início da definição de um algoritmo em forma de
pseudocódigo;
- é um nome simbólico dado ao algoritmo com a finalidade de distingui-lo dos
outros;
- é uma forma opcional onde são declaradas as variáveis globais usadas no
algoritmo;
- local onde estão definidas as instruções que irão realizar as tarefas do algoritmo;
- Início e Fim são respectivamente as palavras que delimitam o início e o fim do
conjunto de instruções do corpo do algoritmo.
Segue-se um exemplo de um algoritmo em pseudocódigo, que lê dois números e
identifica o maior:
Algoritmo para identificar o número maior
número1 é um Inteiro
número2 é um inteiro
Início
Ler (número1)
Ler (número2)
Se número1 > número2 então
Escrever (‘O maior número é o’, número1)
Senão número1 < número2 então
Prof. Fernando Freixo Pág. 4
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Escrever (‘O maior número é o’, número2)
Senão
Escrever (‘O números são iguais’)
Fim
Pode-se observar que o pseudocódigo é caracterizado por uma notação quase
código, isto é, usam-se termos do português narrativo, bem definido e sem
ambiguidades, utilizando somente as estruturas lógicas da programação
estruturada. Alguns desses termos pertencem à linguagem natural, outros são uma
aproximação às linguagens de programação. Desde que o problema esteja
resolvido em pseudocódigo, a sua codificação numa linguagem de programação,
qualquer que seja ela, é uma tarefa que não apresenta grandes dificuldades, desde
que se conheça a sintaxe pormenorizada dessa linguagem.
2.2 Regras e fases de construção de um algoritmo
O primeiro passo para fazer um programa é a análise do problema que se quer
resolver. Depois de clarificada a questão e delineadas as estratégias a seguir,
construir-se-á um algoritmo em pseudocódigo e/ou fluxogramas. Nunca se deve
iniciar a construção de um programa sem antes construir o algoritmo, pois a sua
omissão dificulta a programação, aumenta os erros e prejudica a eficiência na
obtenção do resultado.
Conceitos importantes para a formulação de um algoritmo
Usar somente as palavras disponíveis;
Imaginar que está a desenvolver um algoritmo para pessoas que não
trabalham com informática;
Ser objectivo;
Verificar se o resultado responde ao problema;
Exemplo de algoritmo ERRADO para “chupar um rebuçado”
Pegar cuidadosamente num óptimo, saboroso e suculento rebuçado, rodar e
agitar.
Retirar o papel e deita-lo ao chão.
Esfregar o rebuçado no chão e chupar o rebuçado.
Apesar de este algoritmo cumprir com a tarefa a que se propõe, está construído de
forma errada e é muito pouco eficiente. Ninguém gostaria de um rebuçado depois
de ter estado no chão.
3. Fluxogramas
3.1 Definição de Fluxograma
Prof. Fernando Freixo Pág. 5
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Um fluxograma é uma representação esquemática de um processo, muitas vezes
feita através de gráficos que ilustram de forma descomplicada a transição de
informações entre os elementos que o compõem.
Um fluxograma é a forma padronizada e eficaz de representar os passos lógicos de
um determinado algoritmo. Com os fluxogramas podemos definir uma sequência de
símbolos, com significado bem definidos, facilitando a visualização dos passos de
processamento.
3.2 Simbologia
Símbolo Significado
Início / Fim
Entrada e Saída de Dados
Processamento de tarefa
Ponto de decisão
Ligação entre símbolos
3.3 Exemplos de Fluxogramas
Pegando no exemplo do algoritmo para Chupar um rebuçado da secção 2.4,
podemos representar o mesmo algoritmo segundo o seguinte fluxograma:
Prof. Fernando Freixo Pág. 6
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Ou então, para representar através dum fluxograma o algoritmo para calcular o
quadrado de um número, temos:
4. Constantes, Variáveis e Tipos de dados
4.1 Constantes
As variáveis e as constantes são os elementos básicos que um programa manipula.
Uma constante é um determinado valor fixo que não se modifica ao longo do
tempo, durante a execução de um programa.
Prof. Fernando Freixo Pág. 7
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Na vida real podemos associar uma constante a uma característica inalterável,
como por exemplo a afirmação “O João é alto”. Num computador, as constantes são
variáveis que assumem sempre o valor que lhes foi atribuído no início.
4.2 Variáveis
Nos programas de computador utilizam-se dados, registados em variáveis. Estas
variáveis são definidas segundo um dicionário e deve ser constituída por:
Nome – nome da variável que vai ser usada no algoritmo.
Tipo – tipo da variável (real, inteira, booleana, caracter,…)
Gama – domínio a que pertence a variável (nº negativo, nº positivo, {A,Z}, …).
Significado – descrição da variável, o que ela realmente significa.
A definição de uma variável tem que possuir todos os atributos descritos. O nome
deve identificar univocamente a variável, deve armazenar sempre o mesmo tipo de
dados e todos os seus valores devem pertencer ao domínio escolhido.
4.3 Tipos de Variáveis/Constantes
As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas,
Caracteres, alfanuméricas ou Lógicas.
Numéricas: Específicas para armazenamento de números, que
posteriormente poderão ser utilizados para cálculos. Podem ser ainda classificadas
como Inteiras ou Reais.
Inteiros: Armazenamento de números inteiros
Reais : Armazenamento de números reais
Caracteres: Específicas para armazenamento de conjuntos de caracteres de
texto que não contenham números.
Alfanuméricas: Para armazenamento de dados que contenham letras e/ou
números. Pode em determinados momentos conter somente dados numéricos ou
somente literais. Se usado somente para armazenamento de números, não poderá
ser utilizada para operações matemáticas.
Lógicas: Armazenam somente dados lógicos que podem ser de Verdade ou
Falso.
Num programa informático é quase sempre necessário definir o tipo de variável e
em pseudocódigo isso pode fazer-se do seguinte modo:
A variável X é Inteira
4.3 A instrução de afectação/atribuição
Prof. Fernando Freixo Pág. 8
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Quando se pretende atribuir um valor numa constante/variável numa representação
em pseudocódigo deveremos escrever o seguinte:
X = 5 (A variável X recebe o valor 5)
X = Y (A variável X recebe o valor da variável Y)
Nome = “José”
Variável -> Nome
Conteúdo da variável = José
Note que atrás foi dito que em cada momento uma variável só pode conter um
único valor, por isso a sequência…
X = 1
X = 3
X = 5
… faz com que o valor final da variável X seja o correspondente ao último valor
atribuído, igual a 5.
É necessário ter em atenção que na Matemática e no C o significado do sinal = é
muito diferente:
Exemplos (suponha que x= 1, y = 2 e z = 3):
x = y + z: Em Matemática e em C têm o mesmo significado e a variável x fica com
o valor 5;
x = x + 2: Em Matemática é sempre falso ( 5 é diferente de 7) e em C é uma
atribuição que coloca o valor 7 na variável x.
4.5 Entrada e saída de dados
Para que exista comunicação entre um algoritmo ou um programa e o exterior é
necessário que explicitamente escrevamos instruções para a escrita e leitura de
dados. Para estas duas tarefas existem duas instruções:
Entrada de dados (ou Input)
Ler (X)
Saída de dados (ou Output)
Escrever (X) ou Escrever(‘Um texto qualquer’)
Exemplo de Algoritmo
Algoritmo para calcular a área de uma mesa.
A Largura é número Real
Prof. Fernando Freixo Pág. 9
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
O Comprimento é número Real
A Área é Real
Início
Ler(Largura)
Ler(Comprimento)
Área = Largura * Comprimento
Escrever(Área)
Fim
5. Operadores e Funções
Os operadores são usados para efectuar cálculos sobre variáveis.
Temos três tipos de operadores, que são:
Operadores Aritméticos
Operadores Relacionais
Operadores Lógicos
5.1 Operadores Aritméticos
Os operadores aritméticos são utilizados para obter resultados numéricos. Além da
adição, subtracção, multiplicação e divisão, pode-se também usar o operador para
exponenciação.
Operação Símbolo
Adição +
Subtracção -
Multiplicação *
Divisão /
Exponenciação ^
Com estes operadores podemos efectuar todo o tipo de cálculos.
X = 5 + 4 (A variável X recebe o valor 5 mais 4)
Y = 5 - X (A variável Y recebe o valor 5 menos o valor de X)
Hierarquia das operações aritméticas.
Prof. Fernando Freixo Pág. 10
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
As operações aritméticas respeitam as mesmas precedências que são estudadas na
matemática, por isso a hierarquia dos operadores é a seguinte:
1º - () Parênteses
2º - Exponenciação
3º - Multiplicação, divisão (o que aparecer primeiro)
4º - Soma ou subtracção (o que aparecer primeiro)
Exemplos da escrita algorítmica.
Em pseudocódigo
X / 2
2 * A
Y^2
(X + Y) / 2
5.2. Operadores Relacionais
Os Operadores relacionais são utilizados para comparar cadeias de caracteres (texto) e
números. Estes operadores devolvem sempre valores lógicos (Verdadeiro ou Falso).
Matemática Em pseudocódigo
Igual a ==
Diferente de <>
Maior que >
Menor que <
Maior ou igual a >=
Menor ou igual a <=
Por exemplo, se tivermos duas variáveis:
X = 5
Y = 7
Os resultados das expressões seriam:
Prof. Fernando Freixo Pág. 11
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Expressão Valor
X = Y Falso
X <> Y Verdadeiro
X > Y Falso
X < Y Verdadeiro
X >= Y Falso
X <= Y Verdadeiro
Operadores Lógicos
Os operadores lógicos servem para combinar resultados de expressões, retornando
se o resultado final é verdadeiro ou falso.
Os operadores lógicos são:
E AND
OU OR
NÃO NOT
E / AND : O resultado duma expressão deste tipo é verdadeiro se as duas
condições envolvidas forem ambas verdadeiras.
OU / OR: O resultado duma expressão deste tipo é verdadeiro se pelo
menos uma das condições envolvidas for verdadeira.
NÃO / NOT: Esta expressão inverte o valor da expressão ou condição. Se
verdadeira passa a falsa e se falsa, passa a verdadeira,
Exemplos:
Suponha que temos três variáveis:
A = 5, B = 8 e C = 1
Expressão Valor
A = B E B = C Falso
B <> A OU B < C Verdadeiro
Prof. Fernando Freixo Pág. 12
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
NÃO(A > B) Verdadeiro
NÃO(X < Y) E B < C Falso
5.2 - Sequências de execução
Sequencial
As instruções seguem uma sequência fixa, executando de cima para baixo, uma por
linha.
Instrução 1
Instrução 2
Instrução 3
…
Instrução n
Selectiva
A instrução selectiva determina se uma determinada instrução se executa ou não,
segundo o cumprimento de uma determinada condição. A condição pode ser uma
expressão ou qualquer instrução que resulte num valor booleano.
SE condição
instruções1
SENÃO
instruções2
FIM SE
Uma instrução selectiva pode ser múltipla, existindo várias condições encadeadas e
que condicionam a instrução a executar.
SE condição 1
instruções1
SENÃO condição 2
instruções2
SENÃO condição 3
Prof. Fernando Freixo Pág. 13
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
instruções3
SENÃO
instruções4
FIM SE
Outra alternativa para uma instrução selectiva é:
Caso condição
SE caso1
instruções1
SE caso2
instruções2
SE caso3
instruções3
SENÃO
Instruções4
FIM Caso
Interactiva
As instruções interactivas dão a possibilidade de realizar uma sequência de
instruções mais de uma vez. Existe uma condição e enquanto ela for verdadeira o
corpo da instrução executa repetidamente.
ENQUANTO condição
instruções1
CONTINUAR
Exemplos de algoritmos:
Exemplo1:
Se ainda não lavei os
dentes então
Posso ir deitar
Senão
Tenho de ir lavar os
dentes
Exemplo2:
Enquanto não vier o
autocarro
Algoritmo para
identificar o número
maior entre dois valores
lidos
Algoritmo número maior
numero1 é inteiro
numero2 é inteiro
Inicio
Ler(numero1)
Ler(numero2)
Prof. Fernando Freixo Pág. 14
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Espero e leio um livro
continuar
Se numero1 > numero 2
escrever(O numero1 é
maior)
Senão
escrever(O numero2 é
maior)
Fim Se
Fim
6. Funções
Existem cálculos que já estão definidos e não é necessário definir o seu cálculo
numa linguagem de programação. Para o executar, basta chamar por uma função,
enviar-lhe um conjunto de valores de entrada e recolher o seu valor de saída.
Por exemplo, para calcular a raiz quadrada de 9 e colocar o resultado numa variável
com o nome X bastaria fazer:
X = Sqr(9)
6.1 Exemplo prático
Imaginemos o seguinte problema: Queremos um programa que descobre se um
número é par?
O primeiro passo consiste em analisar o problema.
Por exemplo, sabemos pela matemática que, para descobrir se um número é par,
divide-se esse número por 2 e verifica-se se o resultado é inteiro, o que equivale a
verificar se o resto dessa divisão é igual a 0.
O parágrafo anterior é importante para conseguir realizar o algoritmo com
eficiência. Sem essa noção, será mais difícil escrever um programa que calcule uma
solução adequada.
Então, seguindo a análise, podemos começar a escrever pseudocódigo.
Algoritmo número par
numero é inteiro
auxiliar é real
Inicio
Ler(numero)
auxiliar = numero / 2
Se auxiliar é inteiro
Prof. Fernando Freixo Pág. 15
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
escrever(O numero é par)
Senão
escrever(O numero é impar)
Fim Se
Fim
Note que no algoritmo anterior existe uma condição (se auxiliar é inteiro) que surge
descrita em linguagem informal. Como ainda não aprendemos como verificar se um
número é inteiro, temos que usar esse tipo de linguagem
Imaginemos agora o seguinte problema: Queremos um programa que descobre se
um número é múltiplo de 3?
Vamos então começar pelo primeiro passo e analisar o problema.
Por exemplo, sabemos pela matemática que, para descobrir se um número é
múltiplo de 2, divide-se esse número por 2 e verifica-se se o resultado é inteiro, o
que equivale a verificar se o resto dessa divisão é igual a 0. Para analisar se é
múltiplo de 3, divide-se esse número por 3 e verifica-se também o resultado e se o
resto da divisão é igual a 0.
Mais uma vez, o parágrafo anterior é importante para conseguir realizar o algoritmo
com eficiência. Sem essa noção, seria também difícil escrever o programa.
Então, concluindo a análise, podemos começar a escrever pseudocódigo.
Algoritmo número múltiplo de 3
numero é inteiro
auxiliar é real
Inicio
Ler(numero)
auxiliar = numero / 3
Se auxiliar é inteiro
escrever(O numero é par)
Senão
escrever(O numero é impar)
Fim Se
Fim
Para terminar vamos resolver o seguinte problema: Queremos um programa que
classifique um Triângulo quanto aos lados.
Analisando o problema, temos que um triângulo se classifica do seguinte modo:
Prof. Fernando Freixo Pág. 16
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
3 lados iguais: Triângulo equilátero
2 lados iguais: Triângulo isósceles
3 lados diferentes: Triângulo escaleno
Então, o algoritmo resume-se a ler os lados dos triângulos e verificar qual das três
condições se verificam. Se chamarmos às variáveis que receberão os lados do
triângulo de L1, L2 e L3 temos as seguintes comparações a fazer:
L1 = L2 E L1 = L3 E L2 = L3: Triângulo equilátero
(L1 = L2 E L1 <> L3) OU (L1 = L3 E L1 <> L2) OU (L2 = L3 E L1 <> L3): Triângulo
isósceles
L1 <> L2 E L1 <> L3 E L2 <> L3: Triângulo escaleno
Algoritmo classificar triângulos
L1 é inteiro
L2 é inteiro
L3 é inteiro
Inicio
Ler(L1)
Ler(L2)
Ler(L3)
Se L1 == L2 E L1 == L3 E L2 == L3
escrever(O triângulo é equilátero)
Senão (L1 == L2 E L1 <> L3) OU (L1 == L3 E L1 <> L2) OU (L2 == L3 E L1
<> L3)
escrever(O triângulo é isósceles)
Senão
escrever(O triângulo é escaleno
Fim Se
Fim
Prof. Fernando Freixo Pág. 17
Escola EB 2,3/S de Vila FlorCurso Profissional - Técnico de Informática de Gestão – 1º Ano
2008/2009
Note que a terceira condição não foi transcrita para o algoritmo. Tal não é
necessário pois se um triângulo não é equilátero nem isósceles, tem de ser
obrigatoriamente escaleno. Assim, o algoritmo fica mais legível e eficiente.
Prof. Fernando Freixo Pág. 18