Tópicos preliminares
Prof. Hudson Costa hudsoncosta@terra.com.br www.hudsoncosta.wordpress.com
O que é Lógica?
A Lógica trata da correção do pensamento. Como filosofia, ela
procura saber por que pensamos assim e não de outro jeito. Com arte ou
técnica, ela nos ensina a usar
O que é um algoritmo?
Algoritmo é uma seqüência de passos que visam atingir um objetivo bem definido.
Podemos definir algoritmo da seguinte maneira também:
“Algoritmo é a descrição de um conjunto de ações que, obedecidas, resultam numa sucessão finita de passos, atingindo o objetivo”.
O que é um padrão de
comportamento?
Imagine a seguinte seqüência de
números: 1, 6, 11, 16, 21, 26,... Para determinar o sétimo elemento da série, precisamos descobri qual a sua regra de formação, isto é, seu padrão de
Quais os obstáculos de um
programador?
Certamente, o maior problema que
envolve a construção de algoritmos é a complexidade: portanto, quando
tentamos construir um, o objetivo principal é vencer a complexidade do problema a ser solucionado.
O que é complexidade?
Para nós, complexidade será sempre encarada como sinônimo de variedade, que por sua vez representa a
O que? versus Como?
Uma das maiores responsáveis, talvez a maior, pelo aumento desmedido da complexidade é a forma errônea de autoquestionar-se a respeito de um dado problema, pois isso pode levar a respostas irrelevantes à solução do mesmo, gerando algoritmos mais complexos do que o necessário.
O que versus Como?
Legibilidade
Mede a capacidade de compreensão do algoritmo por qualquer observador (que não o construiu), a clareza com que sua lógica, está exposta. Quanto mais
legível for o algoritmo, menor será a sua complexidade, portanto, devemos cuidar para não diminuir a legibilidade, já que estaremos aumentando
desnecessariamente a complexidade.
Método para construção de
algoritmos
1. Ler atentamente o enunciado.
2. Retirar do enunciado a relação de entradas de dados.
3. Retirar do enunciado a relação de saídas de dados.
4. Determinar o que deve ser feito para transformar as entradas determinadas nas saídas especificadas.
Tipos primitivos
Inteiro: toda e qualquer informação numérica
que pertença ao conjunto dos números inteiros relativos (negativa, nula ou positiva).
Real: Toda e qualquer informação numérica
que pertença ao conjunto dos números reais.
Caractere: toda e qualquer informação
composta por um conjunto de caracteres alfanuméricos e/ou especiais (# $ % &).
Lógico: toda e qualquer informação que pode
apenas assumir duas situações.
Constantes e Variáveis
Constantes: entendemos que uma informação é constante quando não sofre nenhuma variação no decorrer do tempo.
Variável: uma informação é classificada como variável quando tem a
Formação de identificadores e
declaração de variáveis
1. Devem começar por um caracter alfabético.
2. Podem ser seguidos por mais caracteres alfabéticos e/ou numéricos.
3. Não é permitido o uso de caracteres especiais. No ambiente computacional, as informações variáveis
são guardadas em dispositivos eletrônicos analogamente chamado de “memória”. Exemplos:
X : inteiro;
NOME, ENDERECO: caractere; RESPOSTA: lógico;
SALARIO: real;
Expressões e operadores aritméticos
Denominamos expressão aritmética aquela cujosoperadores são aritméticos e cujos operandos são constantes e/ou variáveis do tipo numérico (inteiro e/ou real).
Chamamos de operadores aritméticos o conjunto de símbolos que representa as operações básicas da matemática:
Funções Matemáticas
sen(x): seno de xcos(x): cosseno de x tg(x): tangente de x
arctg(x): arco cuja tangente é x arccos(x): arco cujo cosseno é x arcosen(x): arco cujo seno é x abs(x): valor absoluto (módulo) de x
int(x): a parte inteira de um número fracionário frac(x): a parte fracionária de x
ard(x): transforma, por arredondamento, um número fracionário em inteiro
sinal(x): fornece valor -1, +1 ou zero conforme o valor x seja negativo, positivo ou nulo.
rnd(x): valor randômico a x.
Operadores relacionais
= (igual a) <> (diferente de) > (maior que) >= (maior ou igual a) < (menor que) <= (menor ou igual a)
Operadores lógicos
Símbolo Função
e conjunção
ou disjunção (não-exclusiva) xou disjunção (exclusiva)
Tabelas verdade
Comando de atribuição
Um comando de atribuição permite-nos fornecer um valor a uma certa variável, onde o tipo dessa informação deve ser compatível com o tipo da variável, isto é, somente podemos atribuir um valor lógico a uma variável capaz de comportá-lo, ou seja, uma variável declarada do tipo lógico.
Exemplo: A, B: lógico; X: inteiro; A verdadeiro; X 8 + 13 DIV 5; B 5 = 3;
Comandos de entrada e saída
Um algoritmo deve permitir ao usuário fornecer qualquer tipo de informação a algumas variáveis, mesmo sem saber ao certo que informação será fornecida. Então, assim como havia um comando para atribuir um valor à determinada variável, temos também um comando que permite que o usuário forneça um valor, isto é, que realize uma entrada de dados. O comando de entrada de dados possui a seguinte sintaxe:
leia ( variável1, variável2,..., variávelN);
Comandos de entrada e saída
Exemplos de entrada: leia (X);
leia(A, XPTO, NOTA);
Exemplos de saída: escreva(Y);
escreva(A, XPTO, NOTA); escreva(“Bom dia”, NOME);
escreva(“Você pesa”, X*2, “quilos”);
Blocos
Um bloco pode ser definido como um conjunto de ações com uma função definida: neste caso um algoritmo pode ser definido como um bloco. Ele serve também para definir os limites nos quais as variáveis declaradas em seu interior são conhecidas. Exemplo:
inicio {início do bloco}
| {declaração de variáveis} | | {seqüência de ações} | | |
Exercícios
1. Crie uma seqüência lógica para tomar um banho.
2. Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas?
3. Construa um algoritmo explicitando todos os passos que devem ser seguidos para encontrar um dado livro numa biblioteca. 4. Três jesuítas e três canibais precisam atravessar um rio; para tal