SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Objectivos

1. Levar os académicos a adquirir os conhecimentos que lhes permitam
compreender lógica e rigorosamente os conteúdos de programação.
2. Pretende-se com este fascículo preencher a lacuna existente na formação
dos académicos, relativamente à lógica de programação I, pelo facto desta
matéria não constar no programa desta cadeira. Assim, o objectivo desta
matéria é também familiarizar o académico com a utilização do
computador, terminologia correntemente usada nos meios informáticos e,
fundamentalmente, introduzir conceitos básicos de programação e
algoritmia numa base que achamos correcta, adoptando os académicos a
um posterior envolvimento nesta área de desenvolvimento.
3. Instruir os conceitos básicos de algoritmos de programação,
familiarizando os académicos com os recursos computacionais na
resolução de problemas reais. Com a utilização de pseudocódigos ou
português estruturado, aplicar tanto prática como teoricamente, as
estruturas básicas de programação de computadores. A aplicação da
ementa servirá como manual introdutório para as demais disciplinas que
tratarão de análise e desenvolvimento de sistemas computacionais.
4. E por fim, sugerir aos académicos a tomada de iniciativa própria, a
criatividade e a pesquisa, itens indispensáveis para o desenvolvimento e
capacitação profissional na área de sistemas de informação (ou mais
precisamente Ciências da Computação).

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

João Mutepa

Otniel Neto
2010

Introdução
Para conceituar, o termo
definido como:

lógica

em vários dicionários português é

Análise do pensamento válido;
Encadeamento regular ou coerente das ideias e das coisas;
Estudo e determinação dos modos de pensamento discursivo que
permitem evitar as contradições e os erros.
O objetivo principal da Lógica de Programação é demonstrar técnicas para
resolução de problemas e consequentemente automatização de tarefas. O
aprendizado da Lógica é essencial para formação de um bom programador,
servindo como base para o aprendizado de todas as linguagens de programação,
estruturadas ou não. De um modo geral esses conhecimentos serão de supra
importância pois ajudarão no cotidiano, desenvolvendo um raciocínio rápido.
A logica de programação é necessária para pessoas que desejam trabalhar
com desenvolvimento de sistemas e programas, pois ela permite definir a
sequência lógica para o desenvolvimento. Em parte do nosso curso iremos
aprender a desenvolver algoritmos em uma pseudolinguagem conhecida por
VisualG . Para tal é necessário alguns conceitos básicos sobre lógica de
programação e algoritmos.

2
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Lógica de Programação
É a técnica de encadear pensamentos para atingir determinado objectivo.
Estes pensamentos, podem ser descritos como uma sequência de instuções, que
devem ser seguidas para se cumprir uma determinada tarefa.

Sequência Lógica
São passos executados até atingir um objectivo 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 acção
elementar a executar.
Convém ressaltar que uma ordem isolada não permite realizar o processo
completo, por isto é necessário um conjunto de instruções colocadas em ordem
sequencial lógica.
Por exemplo, se quisermos fazer uma omolete de batatas precisamos
colocar em prática uma série de instruções: Descascar as batatas , bater os
ovos , fritar os ovos , etc. É evidente que essas instruções têm que ser
executadas em uma ordem adequada não se pode descascar as batatas depois
fritá-las.
Dessa maneira, uma instrução tomada em separado não tem muito sentido;
para obtermos o resultado, precisamos colocar em prática em prática o conjunto
de todas as instruções, na ordem correcta.

Programa (ou Software)
Software, programas de computadores; instruções que fazem com que o
hardware as máquinas funcionem.
Programa, sinónimo de software, conjunto de instruções que a CPU de um
computador executa para obter um determinado resultado. O termo pode referirse ao código fonte original ou à versão executável (em linguagem de máquina) de
um componente de software. Quando no formato de código fonte, o programa é
geralmente um arquivo de texto contendo as instruções de linguagens de
programação de alto nível.

3
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Os programas de computadores são nada mais do que algoritmos escritos
numa linguagem de computador no qual são interpretados e executados por uma
máquina no caso de um computador. Notemos que em cada esta interpretação
rigorosa, um programa é por natureza, muito específico e rígido em relação aos
algoritmos da vida real.

Programação
Para seu Computador funcionar de fato, ou seja, servir à você, precisará de
rodar programas que sejam de seu interesse. Quando dizemos rodar estamos
utilizando um termo da informática que significa Executar, fazer funcionar um
programa ou software.
Os softwares permitem o desenvolvimento de programas. Possuem um
poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais
até sistemas operacionais.
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, directa ou indirectamente.
Ademais, uma nota importante, a tarefa principal ao escrever um programa
de computador para resolver um problema consiste em desenvolver um
algoritmo (um procedimento) para produzir a solução do problema.

Linguagens de Programação
Os processadores têm a capacidade de processar exclusivamente sinais
electrónicos binários. Dar uma instrução a um processador significa, na
realidade, enviar sequências de números um e zero (1 e 0) espaçados no tempo de
uma forma determinada. Essa sequência de sinais é denominada código de
máquina. Uma linguagem de programação é um conjunto finito de palavras,
comandos e instruções, escritos com o objectivo de orientar a realização de uma
tarefa pelo computador.
Existe dois tipos de linguagens de programação: Linguagem de alto nível e
linguagens de baixo nível.
As linguagens de baixo nível (Assembly ou linguagem de máquina)
permitem criar programas compactos, rápidos e específicos para cada
processador, fazendo um uso eficiente do hardware. Quando se leva o programa
a outra máquina, ele deve ser reescrito seguindo o conjunto de instruções
disponíveis para aquele novo processador. Geralmente se diz que os
4
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

computadores são máquinas que realizam tarefas de cálculos ou processamento
de textos. Entretanto, existe um alto grau de abstracção entre o que se pede ao
computador e o que a máquina realmente compreende. Existe também uma
relação complexa entre as linguagens de alto nível e o código de máquina.
As linguagens de alto nível (ou linguagens de aplicação) são normalmente
fáceis de aprender porque estão formadas por elementos de linguagens naturais,
como o inglês. Elas fazem com que os comandos binários que devem ser
enviados ao processador sejam mais amigáveis e intuitivos, geralmente através
do uso de palavras conhecidas, recursos visuais que auxiliam no processo de
programação e ferramentas de depuração do código (debugger).
A tradução de um código fonte em linguagem de montagem (Assembly)
para um código de máquina não executável (módulo de objecto) se realiza por
meio de um montador (assembler). A tradução das instruções de linguagens de
alto nível (o código-fonte de linguagens como Pascal, C, COBOL ou
FORTRAN) para um módulo de objecto não é complicada e se realiza
normalmente por um programa especial chamado compilador. Os módulos de
objectos gerados a partir de compiladores ou montadores são transformados em
um programa efectivamente executável através de um utilitário chamado linker
(ligador), que é responsável pelo carregamento do código na memória principal
(RAM) e pelo tratamento das referências de endereçamento.
Algumas linguagens de alto nível, como o Basic e o dBase, não geram
módulo de objecto. Elas são interpretadas no momento da execução do programa,
traduzindo cada instrução individualmente antes de executá-la.
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).
Exemplos: Pascal, C, COBOL, C++, FORTRAN, ASP, PHP, Phyton, C#,
SQL, JSP, XML, XSL, XML, HTML, Visual C++, Java Script, Delphi, J pascal,
Visual Basic, Java, e entre outras.

Algoritmo
Em ciências da computação houve um processo de desenvolvimento
simultâneo e interactivo de máquinas (hardware) e dos elementos que gerenciam
a execução automática (software) de uma dada tarefa. E essa descrição da
execução de uma tarefa, como considerada acima, é chamada algoritmo.

5
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

É a descrição de um conjunto de comandos que, obedecidos, resultam numa
sucessão finita de acções. Existem, porém, várias definições para algoritmos,
contudo cabe a cada académico averiguar qual a que mais se adequa ao seu
entendimento lógico das coisas.
· Um algoritmo é uma sequência de instruções ordenadas de forma
lógica para a resolução de uma determinada tarefa ou problema.
· Um algoritmo é também um conjunto finito de instruções que
podem ser executadas mecanicamente em um tempo finito de modo a
resolver um problema.
· Um algoritmo é formalmente uma sequência finita de passos que
levam a execução de uma tarefa.
Podemos pensar em algoritmo como uma receita, uma sequência de
instruções que dão cabo de uma meta específica. Estas tarefas não podem
ser redundantes nem subjectivas, sua definição deve ser clara e objectiva.
Como exemplo de algoritmos podemos citar os algoritmos das operações
básicas (adição, multiplicação, divisão e subtracção) de números reais decimais.
Outros exemplos seriam os manuais de aparelhos electrónicos, como uma
impressora, que explicam passo-a-passo como por exemplo instalar ou ligar.
Exemplo de algoritmo:
Ler dois valores; Efectuar a soma destes valores; Apresentar o resultado.
Escreva o primeiro número no rectângulo A;
Escreva o segundo número no rectângulo B;
Some o número do rectângulo A com número do rectângulo B e coloque o
resultado no rectângulo C.
Rectângulo A

Rectângulo B

+

Rectâng. C (resultado)

=

Pseudocódigo
Os algoritmos são descritos em uma linguagem chamada pseudocódigo.
Este nome é uma alusão à posterior implementação em uma linguagem de
programação, ou seja, quando formos programar em uma linguagem, por
exemplo Java, estaremos gerando código em Java. Por isso os algoritmos são
6
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

independentes das linguagens de programação. Ao contrário de uma linguagem
de programação não existe um formalismo rígido de como deve ser escrito o
algoritmo.
Antes de utilizarmos uma linguagem de computador, é necessário organizar
as acções a serem tomadas pela máquina de forma organizada e lógica, sem nos
atermos as regras rígidas da Sintaxe de uma linguagem. Para isto utilizaremos
uma forma de escrever tais acções, conhecida como algoritmo, ou pseudocódigo
como vimos acima.
O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele
deve ser o intermediário entre a linguagem falada e a linguagem de programação.

Etapas de um algoritmo (IMPORTANTE)
Quando temos um problema e queremos utilizar o computador para resolvelo, (ou seja, ao criarmos um algoritmo) temos que passar pelas seguintes fases:
a)

Interpretar o problema;

b)
Realizar um estudo de situação actual e verificar quais
formas de resolver o problema;
c)
Utilizar uma linguagem de programação para escrever o
programa que a princípio deverá resolver o problema;
d)
Analisar junto aos usuários se o problema foi resolvido. Se
não, retornar para a fase de estudo e descobrir onde está a falha.

Comandos de Entrada e Saída
O computador não é uma máquina isolada pois ela precisa se comunicar
com o mundo exterior como vídeo, impressoras, teclado, discos, fitas, etc. Para
realizar esta comunicação existem comandos que permitem que as informações
sejam inseridas e exibidas. Um comando de entrada serve para que o programa
solicite dados no momento em que o mesmo está sendo executado. Esses dados
fornecidos serão armazenados em variáveis na memória.
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentado em três fases fundamentais:

Entrada

Processamento

ENTRADA: São os dados de entrada do algoritmo.

7

Saída
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

PROCESSAMENTO: São os procedimentos utilizados para chegar ao
resultado final.
SAÍDA: São os dados já processados.
Os comandos que iremos estudar são:
Ø LEIA: é um comando de entrada. Utiliza-se o leia para ler (ou
receber) um valor do teclado.
Sintaxe:
Leia ( variável ) ou
Leia ( variável-1,variavel-2,variável-3, ,variável-n )
Ø ESCREVA: é um comando de saída. Utiliza-se o escreva para
imprimir (ou mostrar) um valor no ecrã.
Sintaxe:
Escreva ( Aqui vem o que você quiser escrever ) ou
Escreva ( Comentário , variável)

Estrutura de um algoritmo
Algoritmo < nome_do_algoritmo >
Constantes
Variáveis
Inicio
< Corpo do algoritmo >
Fim

Variáveis e Constantes
Variáveis são endereços de memória destinados a armazenar informações
temporariamente. Não entendeu??? São unidades básicas de armazenamento das
informações a nível de linguagens de programação. E agora? Mais ou menus?
Ora vejamos!
Para armazenar os dados na memória, imagine que a memória de um
computador é um grande arquivo com várias gavetas, onde cada gaveta pode
armazenar apenas um único dado (seja numérico, caractere ou lógico).
Se é um grande arquivo com várias gavetas é necessário identificar com um
nome a gaveta que se pretende utilizar. Assim o valor armazenado pode ser
utilizado a qualquer momento. Variável: tudo aquilo que é sujeito a variações,
que é incerto ou instável. O acesso à informação na memória é bastante ilegível e
8
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

difícil de se trabalhar. Para contornar esta situação criou-se o conceito de variável
como entidade distinta a guardar uma informação. Elas armazenam informações
fornecidas por um meio externo (dispositivos de entrada). Em geral a unidade de
entrada é o teclado. Ok! Agora Sim!!!
Todo Algoritmo ou programa deve possuir variável!
Toda variável é identificada por um nome ou identificador. Assim, por
exemplo, num algoritmo para calcular a área de um triângulo rectângulo pelo
teorema de Pitágoras (a2 = b2 + c2), os identificadores A, B e C podem
representar as posições de memória que armazenam o valor da hipotenusa e dos
catetos. É importante que nunca usemos uma palavra reservada, isto é, que faça
parte da linguagem algorítmica, como um identificador, pois poderá causar
ambiguidade no entendimento do algoritmo.
Exemplo:

5

A

B

4

C= A+B

9

Basicamente uma variável possui três atributos: Um nome, Um tipo de dado
associado a mesma e a informação por ela guardada.
Nome: tem a função de identificar e diferenciar das demais. Deve
necessariamente começar com uma letra. Não deve conter nenhum símbolo
especial excepto ( _ ). Só pode conter 127 caracteres e não pode ter espaços em
branco
Tipo de dado: (Numérico, Caractere ou Lógico) valor que ela pode
armazenar.
Informação: o que está contido na variável.
Sintaxe:

Var < nome_da_variavel > : < tipo_da_variavel >
Var < lista_de_variaveis > : < tipo_das_variaveis >

A palavra VAR (abreviatura de variável) deve estar sempre presente e só
será usada uma única vez na declaração de um conjunto de uma ou mais
variáveis.

9
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Constantes são endereços de memória destinados a armazenar informações
fixas, inalteráveis durante a execução do programa.
Exemplo:
PI = 3,1415926535897932384626433832795
Nome_da_empresa = OM2006

Operação de Atribuição
Quando definimos uma variável é natural atribuirmos a ela uma
informação. Uma das formas de colocar um valor dentro de uma variável,
consequentemente colocado este dado na memoria do computador, é através da
atribuição directa do valor desejado que a variável armazena.
A operação de atribuição permite que se forneça um valor a uma certa
variável. Se for atribuído uma expressão à variável, será armazenado o resultado
daquela expressão. Se for atribuído uma outra variável, será armazenado o
conteúdo daquela variável. Para isso utilizaremos o símbolo (ß), que significa
recebe, ou seja, a variável receberá uma informação que será armazenada no
interior desta variável.
sintaxe:
variável ß expressão (ou valor)
Exemplos:
Aß2

NOME ß 'João'

AßB+C

BßA

SENHA ß 'X3Y9'

NOTA ß NOTA - 1

NOTA ß 10

Cß1/3

X ß 2.5

Tipos de Variáveis
No momento em que trabalhamos com algoritmos e variáveis, devemos
obrigatoriamente indicar o tipo de informação que esta variável ira conter, isto é,
se uma dada posição de memória armazenará um número ou uma letra. Para isso
temos alguns tipos de variáveis:
Inteiro (int)
Real (float)

Admite somente números inteiros. Geralmente e utilizado
para representar uma contagem(Quantidade).
Admite números reais (com ou sem casas decimais).
Geralmente e utilizado para representar uma medição.
10
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Admite caracteres alfanuméricos. Os números quando
declarados como caracteres tornam se representativos e
perdem a atribuição de valor.
Admite somente valores lógicos(verdadeiro/falso).

Caractere (char)
Lógico (bool)

Operadores
Na programação existe três tipos de operadores:
Aritméticos
Relacionais e
Lógicos
Os operadores aritméticos são aplicados ao tipo de dado inteiro ( int e real
), os operadores relacionais e lógicos são aplicados ao tipo de dado booleana (
bool ).
Operadores Aritméticos
Operador

Operação

Operandos

Resultado

+

Adição

A+B

Soma de A e B

-

Subtracção

A-B

Subtracção de A e B

*

Multiplicação

A*B

Multiplicação de A por B

/

Divisão Real

A/B

Divisão de A por B

A MOD B

Modulo de A por B

% (MOD) Resto da Divisão
DIV

Divisão Inteira

A DIV B

Divisão de A por B

**

Exponenciação

A**B

A de expoente B

Operadores Relacionais
Operador

Operação

Operandos

=

igual

A=B

Verdadeiro se A for igual a B.

>

maior

A>B

Verdadeiro se A for maior que B.
11

Resultado
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

<

menor

A<B

Verdadeiro se A for menor que B.

>=

maior ou
igual

A>=B

Verdadeiro se A for maior ou igual
que B.

<=

menor ou
igual

A<=B

Verdadeiro se A for menor ou igual
que B.

<>

diferente

A<>B

Verdadeiro se A for diferente de B.

Operadores Lógicos
Operador

Operação

Operandos

Not (Nao)

Negação

Não A

Verdadeiro se A for
falso e falso se o contrario

And (e)

Conjunção

AeB

Verdadeiro se ambos
forem verdadeiros.

Or (ou)

Disjunção

A ou B

Verdadeiro se pelo
menos um for verdadeiro

Funções Pré-definidas
ABS(x) - VALOR ABSOLUTO
SQRT(x) - RAIZ QUADRADA
SQR(x) - ELEVA AO QUADRADO
ROUND(x) - VALOR ARREDONDADO
LOG(x) - LOGARITMO
SIN(x) [ou SEN(x) ]- SENO
COS(x) - COSSENO
TAN(x) TANGENTE

12

Resultado
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Estruturas de Controlo
Em Operações Lógicas , na maioria das vezes necessitamos controlar e
tomar decisões no andamento do algoritmo. Essas decisões interferem
directamente no andamento do programa. Analisaremos dois tipos de estruturas.
A estrutura de Decisão e a estrutura de Repetição.

Decisão

- Se então senão
- Caso faça

Repetição

- Repetir até
- Enquanto faça
- Para/desde faça

E.C.

Estruturas de Decisão
A todo momento tomamos decisões em uma situação. Em algoritmo
chamamos esta situação de condição. Associando a uma condição existirá uma
alternativa possível de acções.
Exemplo: Se tiver que namorar vou escolher um(a) garoto(a) bonito(a) e
inteligente .
Nesta condição a pergunta é tenho de namorar? R: Sim ou Não. Lembrese, então em algoritmo toda condição tem de ser lógica (verdadeira ou falsa). Se
a condição for verdadeira irá executar o procedimento. Senão, não executa nada.
Portanto, as estruturas de decisão são utilizadas para tomar uma decisão
baseada no resultado da avaliação de uma condição de controlo e seleccionar
uma ou mais acções possíveis (comandos a serem executados pelo computador).
(SE

ENTÃO

Sintaxe:

SENÃO) à simples

Se (condição) então
[Comandos]
Fimse

13
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

(SE

ENTÃO

Sintaxe:

SENÃO) à composta

Se (condição) então
[Comando1]

se for verdadeira

[Comando2]

se for falsa

Senão

Fimse
(Caso faça ou Escolha caso)
É utilizada quando se deseja executar dentre vários comandos (ou uma
entre várias sequências de comandos) dependendo do resultado de uma
expressão.
Sintaxe: Escolha variável
Caso <expressão> faça
<lista_de_comandos1>
Caso não seja
<lista_de_comandos2>
FimEscolha

Estruturas de Repetição
São muitas vezes chamadas de Laços ou Loops. São comuns as situações
em que se deseja repetir um determinado trecho de um programa um certo
número de vezes. A classificação das estruturas de repetição é feito de acordo
com o conhecimento prévio do número de vezes que o conjunto de comandos
será executado. Elas permitem que uma sequencia de instruções sejam
executadas repetidamente enquanto uma determinada condição seja satisfeita. As
condições devem ser lógicas.
Na estrutura de repetição usa-se geralmente dois tipos de variáveis para
resolução de diversos tipos de problemas:
Ø Variáveis Contadoras: é uma variável que recebe inicialmente um
valor igual a zero (0) antes do inicio da estrutura de repetição e é
incrementada no interior da no interior da estrutura de um valor
constante.
14
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Cont ß 0
< estrutura de repetição >
Cont ß Cont + 1
< fim_da_estrutura_de_repetição >
Ø Varáveis Acumuladoras: vai fazendo o mesmo que a contadora, só
que acumula uma execução dentro da estrutura de repetição.
Soma ß 0
< estrutura de repetição >
Soma ß Soma + 1
< fim_da_estrutura_de_repetição >
Existem três (3) estruturas de repetição:
1. Enquanto faça
2. Repita até
3. Para faça

(ENQUANTO

à com teste no inicio
à com teste no fim
à automático

FAÇA)

É usada em dois casos, quando sabemos o número de vezes que queremos
repetir e quando não sabemos. Esta estrutura de controlo permite que um
conjunto de instruções sejam executados repetidamente, enquanto uma condição
seja verdadeira.
Sintaxe:

Enquanto (condição) faça
Corpo do ciclo
Fimenquanto

(REPITA

ATÉ)

É utilizada quando não se sabe n número de vezes que um trecho do
algoritmo deve ser repetido, embora também possa ser usada quando se sabe o
número de vezes a ser repetido. Esta estrutura de controlo permite que um
conjunto de instruções sejam executados repetidamente até que uma condição de
controlo seja falsa.
Sintaxe:

Repita
Corpo do cliclo

15
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Ate (condição)
A diferença entre a estrutura de repetição enquanto e a repita é que na
repita os comandos serão repetidos pelo menos uma vez já que a condição se
encontra no fim.
(PARA

FAÇA)

É usada quando num algoritmo ou num programa nós sabemos o número de
vezes que certa instrução deve repetir. Esta estrutura de controlo permite que um
conjunto de instruções sejam executados repetidamente num número específico
de vezes.
Sintaxe:

para VCßVI ate VF passo I/D faça
ou seja:

para variável controlo ß valor inicial ate valor final passo incremento/decremento faça
OBS: Quando o número (passo) anda 1 à 1 então o passo é ignorado
(ocultado). Quando não é então o passo é apresentado.

Vectores
Estrutura formada por um conjunto unidimensional de dados de mesmo tipo
(homogéneo) e possuindo número fixo de elementos (Estático). Na declaração
dos vectores devemos informar o seu nome, seu tipo (inteiro, real, caractere, ...),
e seu tamanho (número de elementos). Cada elemento do vector é identificado
por um índice (unidimensional), o qual indica a sua posição no vector.
Declaração :
Nome_Do_Vector : vector[nº de elementos] de Tipo do Vector
Referência :
Nome_Do_Vector[índice]

Matrizes
Estrutura semelhante ao vector, sendo que, pode possuir n dimensões. Uma
matriz nos possibilita o armazenamento de vários valores em uma única variável.
Isso porque ele possui níveis dentro dela. Desta forma para fazer referência aos
elementos de uma matriz, precisaremos de tantos índices quanto for suas
dimensões.
Declaração :
16
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Nome_Da_Matriz : matriz[dimensões] de Tipo da Matriz
Referência :
Nome_Da_Matriz[índices]

Modularização
A modularização consiste num método para facilitar a construção de
grandes programas, através de sua divisão em pequenas etapas, que são :
módulos, rotinas, subrotinas ou subprogramas. Permitindo o reaproveitamento de
código, já que podemos utilizar um módulo quantas vezes for necessário,
eliminando assim a necessidade de escrever o mesmo código em situações
repetitivas.
OBS: As variáveis passadas aos procedimentos são associadas aos
parâmetros do procedimento de acordo com a ordem das variáveis e da lista de
parâmetros.

17
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Exercícios Propostos
1)
Dê o conceito de Lógica, Programação, algoritmo e variável.
2)
Defina por suas palavras os termos: Programa, Linguagem de
Programação e Compilador.
3)
Qual é a diferença entre linguagem de baixo nível e linguagem de
alto nível?
4)
Exemplifique o uso da operação de Atribuição.
5)
Qual a finalidade de uma operação de entrada ? Dê exemplos.
6)
Explique a utilidade da estrutura de decisão e a estrutura de
repetição.
7)
Qual é a diferença entre o enquanto faça e o repita até?
8)
Em que situações é mais indicado o uso da estrutura para faça?
9)
Em que situações não podemos utilizar a estrutura para faça?
10)
Qual a finalidade de uma operação de saída? Dê exemplos.
11)
Escreva os comandos necessários para:
a)
Exibir o teu nome no ecrã;
b)
ler o nome de uma pessoa;
c)
ler as 3 notas de um aluno;
d)
ler o peso e altura de uma pessoa.
12)
Crie um algoritmo que faça alguma coisa.
13)
Escreva um algoritmo que leia dois números e mostre a soma, a
subtracção, a divisão e o produto.
14)
Faça um algoritmo que leia um numero e calcule o seu sucessor e o
seu antecessor.
15)
Ler um número real e imprimir a terça parte deste número.
16)
Elabora um algoritmo que leia dois números e exiba o maior e o
menor entre eles.
17)
Faça um algoritmo que receba um valor inteiro e determine se ele é
par ou ímpar.
18)
Faça um programa que leia dois números e mostre-os em ordem
crescente.
19)
Elaborar um algoritmo que dado a idade de duas pessoas que
nasceram em 2005, saber quantos anos terão em 2025, para a segunda idade
aumentar 10% da idade do primeiro.
20)
Elabore um algoritmo que mostre a tabuada de um número
qualquer digitado pelo usuário.

18
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Conclusão
Existe a preocupação de fazer uma ligação à algoritmia e programação em
sintonia com a cadeira de Introdução à informática. Esperamos com esta
orientação contribuir para uma apresentação mais atractiva da matéria, sem,
contudo, diminuir o rigor lógico do raciocínio e da disposição.

19
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Terminologia
Código

termo genérico para nomear as instruções de um programa.

Codificação conjunto de técnicas que tentam tornar inacessível a informação a
pessoas não autorizadas.
Programação é o acto de dar instruções ao computador de modo que ele
realize operações desejadas.
Programar é a arte de dar instruções ao computador de modo que ele reage a
estas mesmas instruções.
Interpretador
é um programa desenvolvido para executar programas de
linguagens de alto nível.
Compilador é o elemento que serve de tradutor da linguagem corrente para
linguagem máquina.
Sintaxe é a forma como os comandos devem ser escritos, a fim de que possam
ser entendidos pelo tradutor do programa.
Programa fonte
programação.

é o programa original escrito numa linguagem de

Código fonte instruções de programa legíveis pelo programador e escritas em
linguagem assembler ou de alto nível.
Programa objecto é o resultado da compilação de um programa fonte (no caso
de utilizar um computador).
Código objecto código gerado por um compilador traduzido a partir do código
fonte de um programa.
Funções uma função é semelhante a um procedimento, sendo que esta deve
retornar, obrigatoriamente, um valor em seu nome, desta forma, é necessário
declarar, no cabeçalho da função, qual o seu tipo.
Procedimentos
um procedimento é um bloco de código precedido de um
cabeçalho que contém o Nome do procedimento e seus parâmetros. Com isto,
podemos fazer referência ao bloco de código de qualquer ponto do algoritmo
através do seu nome e passando os seus parâmetros.

20
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Dicas
Tenha Calma. Se você não conseguir de primeira não é motivo para já ir
desistindo e passando a bola para o pessoal do fórum ou lista de discussão. Se
você não perseverar, o lado negro da força dominará você e a mediocridade
eterna será a sua recompensa profissional. Programação exige, entre outras
coisas, muita perseverança.
O Passo Maior que a Perna. Se você não se garante em alguma coisa é
porque ainda falta para você chegar lá. Tente começar pelo começo. De que
adianta você fazer um programa usando código que te foi passado e você não
entender de como ele funciona? O bom programador é aquele que tem uma boa
base, que conhece e domina o básico da linguagem e cultiva uma boa lógica, o
resto vem com o tempo e a necessidade.
Seja Humilde. A humildade é um factor crucial em qualquer profissão.
Cultive-a, ela pode te ensinar muito, tanto no trabalho como na vida. Ninguém
aqui precisa ser monge para cultivar a humildade, cultive-a pelo prazer de ser
verdadeiro nas suas acções e honesto na sua profissão.
Seja Independente. Não fique esperando a ajuda de todos para realizar o
que você quer. A tarefa tem que ser a sua principal motivação. Além do mais
cada vez que alguém te entrega uma solução mastigada você deixa de aprender
com o processo.
Bom Senso é Tudo! Sem bom senso você está perdido, pode considerar isso
a pura verdade. Diante de uma situação complexa e aparentemente sem saída,
pare, relaxe e use o seu bom senso, escute os seus neurónios. Lembre-se que
mesmo depois de ter seguido este conselho e o problema continuar lá não quer
dizer que ele é insolúvel.
Nada é Impossível. Embora algumas coisas são quase. Pense que tem gente
fazendo aqueles jogos 3D e portanto se aquilo é possível sua tarefa também deve
ser. O importante é perseverar e manter uma atitude positiva diante da tarefa, não
encare a tarefa como inimiga e sim como uma amiga que não fala a sua língua.
Nunca Pare de Aprender. Se um dia você se cansar de aprender novas
tecnologias em desenvolvimento, siga meu conselho: Mude de profissão. É
exactamente o que eu vou fazer.
Tenha Curiosidade. Procure, pesquise e corra atrás. Isso ensina mais que
muitos cursos por aí. A máquina é o computador e não você, portanto não se
torne um autómato que apenas faz o necessário e apenas sabe o suficiente.

21
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Não Tenha Pressa. O aprendizado é uma estrada longa e cheia de
obstáculos, que começa no primeiro passo e termina quando você a abandona.
Aprenda a separar pressa, de que adianta entregar no prazo se está mal feito. O
velho ditado vale: "A pressa é inimiga da perfeição".
Fale Connosco. Para casos de dúvidas, críticas ou sugestões estamos
eventualmente dispostos a colaborar, basta contactar-nos na F.C. ou enviar para
os nossos correios electrónicos citados abaixo:
ü mutepa_2006@hotmail.com.pt
ü hotyboy_h@hotmail.com

àMutepa
àOtniel

Ajude-nos a melhorar!!!

[ O HOMEM NÃO PRECISA DA SORTE PARA TER INTELIGENCIA
MAS DA INTELIGÊNCIA PARA TER SORTE ]

[ NÃO POSSO PROVAR IMPIRICAMENTE QUE OS ALGORITMOS
ESTÃO CERTOS
COMO NÃO PODEM ME PROVAR IMPIRICAMENTE QUE ESTOU
ERRADO. ]

22
Introdução à Lógica de Programação I

João Mutepa

Otniel Neto
2010

Bibliografia

Ø FORBELLONE, A. L. V. ; EBERSPACHER, H. F. Lógica de
programação. 2.ed. São Paulo: Makron Books, 2000.
Ø MANZANO, J.A.N.G. ; YAMATUMI, W. Y. Estudo dirigido de
algoritmos. São Paulo:Érica, 1997.
Ø Livro Informática - O Computador trabalha p/você

CURSOR

INFORMÁTICA.
Ø Apostila

Algoritmos JEDEAN CARLOS BENDLIN, 2008.

Ø Apostila

Lógica de Programação (CAP-Criação de Algoritmos e

Aprogramas)

RENATO DA COSTA, 2007.

Ø Curso Básico de Lógica de Programação

PAULO SÉRGIO DE

MORAES.
Ø Apostila

Como escrever programas melhores

Traduzido por

Walter Staeblein. Autor Desconhecido
Ø Enciclopédia Microsoft® Encarta®. © 1993-2007 Microsoft
Corporation.

23

Contenu connexe

En vedette

Palestra introdução a uml e casos de uso final_parte2
Palestra introdução a uml e casos de uso final_parte2Palestra introdução a uml e casos de uso final_parte2
Palestra introdução a uml e casos de uso final_parte2marcosdcmartinsss
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesRicardo Terra
 
1 Aula De Dreamweaver
1 Aula De Dreamweaver1 Aula De Dreamweaver
1 Aula De DreamweaverProfe Luiz
 
Fundamentos de logica de programação
Fundamentos de logica de programaçãoFundamentos de logica de programação
Fundamentos de logica de programaçãoRogerio de Moraes
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passosSensedia
 
Aula 01 apresentação peças
Aula 01   apresentação peçasAula 01   apresentação peças
Aula 01 apresentação peçasHailton Lopes
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 
Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)Jazon Pereira
 
Dicas importantes para escrever resumo de trabalho
Dicas importantes para escrever resumo de trabalhoDicas importantes para escrever resumo de trabalho
Dicas importantes para escrever resumo de trabalhoCRIS TORRES
 

En vedette (19)

Palestra introdução a uml e casos de uso final_parte2
Palestra introdução a uml e casos de uso final_parte2Palestra introdução a uml e casos de uso final_parte2
Palestra introdução a uml e casos de uso final_parte2
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
1 Aula De Dreamweaver
1 Aula De Dreamweaver1 Aula De Dreamweaver
1 Aula De Dreamweaver
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Fundamentos de logica de programação
Fundamentos de logica de programaçãoFundamentos de logica de programação
Fundamentos de logica de programação
 
1 conhecendo o pc
1 conhecendo o pc1 conhecendo o pc
1 conhecendo o pc
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - Apresentação
 
UML
UMLUML
UML
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passos
 
Aula 01 apresentação peças
Aula 01   apresentação peçasAula 01   apresentação peças
Aula 01 apresentação peças
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Tipos de Sistema operacional
Tipos de Sistema operacionalTipos de Sistema operacional
Tipos de Sistema operacional
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)
 
Dicas importantes para escrever resumo de trabalho
Dicas importantes para escrever resumo de trabalhoDicas importantes para escrever resumo de trabalho
Dicas importantes para escrever resumo de trabalho
 

Introdução à lógica de programação 1(pdf)

  • 1. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Objectivos 1. Levar os académicos a adquirir os conhecimentos que lhes permitam compreender lógica e rigorosamente os conteúdos de programação. 2. Pretende-se com este fascículo preencher a lacuna existente na formação dos académicos, relativamente à lógica de programação I, pelo facto desta matéria não constar no programa desta cadeira. Assim, o objectivo desta matéria é também familiarizar o académico com a utilização do computador, terminologia correntemente usada nos meios informáticos e, fundamentalmente, introduzir conceitos básicos de programação e algoritmia numa base que achamos correcta, adoptando os académicos a um posterior envolvimento nesta área de desenvolvimento. 3. Instruir os conceitos básicos de algoritmos de programação, familiarizando os académicos com os recursos computacionais na resolução de problemas reais. Com a utilização de pseudocódigos ou português estruturado, aplicar tanto prática como teoricamente, as estruturas básicas de programação de computadores. A aplicação da ementa servirá como manual introdutório para as demais disciplinas que tratarão de análise e desenvolvimento de sistemas computacionais. 4. E por fim, sugerir aos académicos a tomada de iniciativa própria, a criatividade e a pesquisa, itens indispensáveis para o desenvolvimento e capacitação profissional na área de sistemas de informação (ou mais precisamente Ciências da Computação). 1
  • 2. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Introdução Para conceituar, o termo definido como: lógica em vários dicionários português é Análise do pensamento válido; Encadeamento regular ou coerente das ideias e das coisas; Estudo e determinação dos modos de pensamento discursivo que permitem evitar as contradições e os erros. O objetivo principal da Lógica de Programação é demonstrar técnicas para resolução de problemas e consequentemente automatização de tarefas. O aprendizado da Lógica é essencial para formação de um bom programador, servindo como base para o aprendizado de todas as linguagens de programação, estruturadas ou não. De um modo geral esses conhecimentos serão de supra importância pois ajudarão no cotidiano, desenvolvendo um raciocínio rápido. A logica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois ela permite definir a sequência lógica para o desenvolvimento. Em parte do nosso curso iremos aprender a desenvolver algoritmos em uma pseudolinguagem conhecida por VisualG . Para tal é necessário alguns conceitos básicos sobre lógica de programação e algoritmos. 2
  • 3. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Lógica de Programação É a técnica de encadear pensamentos para atingir determinado objectivo. Estes pensamentos, podem ser descritos como uma sequência de instuções, que devem ser seguidas para se cumprir uma determinada tarefa. Sequência Lógica São passos executados até atingir um objectivo 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 acção elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo, por isto é necessário um conjunto de instruções colocadas em ordem sequencial lógica. Por exemplo, se quisermos fazer uma omolete de batatas precisamos colocar em prática uma série de instruções: Descascar as batatas , bater os ovos , fritar os ovos , etc. É evidente que essas instruções têm que ser executadas em uma ordem adequada não se pode descascar as batatas depois fritá-las. Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática em prática o conjunto de todas as instruções, na ordem correcta. Programa (ou Software) Software, programas de computadores; instruções que fazem com que o hardware as máquinas funcionem. Programa, sinónimo de software, conjunto de instruções que a CPU de um computador executa para obter um determinado resultado. O termo pode referirse ao código fonte original ou à versão executável (em linguagem de máquina) de um componente de software. Quando no formato de código fonte, o programa é geralmente um arquivo de texto contendo as instruções de linguagens de programação de alto nível. 3
  • 4. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Os programas de computadores são nada mais do que algoritmos escritos numa linguagem de computador no qual são interpretados e executados por uma máquina no caso de um computador. Notemos que em cada esta interpretação rigorosa, um programa é por natureza, muito específico e rígido em relação aos algoritmos da vida real. Programação Para seu Computador funcionar de fato, ou seja, servir à você, precisará de rodar programas que sejam de seu interesse. Quando dizemos rodar estamos utilizando um termo da informática que significa Executar, fazer funcionar um programa ou software. Os softwares permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais. 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, directa ou indirectamente. Ademais, uma nota importante, a tarefa principal ao escrever um programa de computador para resolver um problema consiste em desenvolver um algoritmo (um procedimento) para produzir a solução do problema. Linguagens de Programação Os processadores têm a capacidade de processar exclusivamente sinais electrónicos binários. Dar uma instrução a um processador significa, na realidade, enviar sequências de números um e zero (1 e 0) espaçados no tempo de uma forma determinada. Essa sequência de sinais é denominada código de máquina. Uma linguagem de programação é um conjunto finito de palavras, comandos e instruções, escritos com o objectivo de orientar a realização de uma tarefa pelo computador. Existe dois tipos de linguagens de programação: Linguagem de alto nível e linguagens de baixo nível. As linguagens de baixo nível (Assembly ou linguagem de máquina) permitem criar programas compactos, rápidos e específicos para cada processador, fazendo um uso eficiente do hardware. Quando se leva o programa a outra máquina, ele deve ser reescrito seguindo o conjunto de instruções disponíveis para aquele novo processador. Geralmente se diz que os 4
  • 5. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 computadores são máquinas que realizam tarefas de cálculos ou processamento de textos. Entretanto, existe um alto grau de abstracção entre o que se pede ao computador e o que a máquina realmente compreende. Existe também uma relação complexa entre as linguagens de alto nível e o código de máquina. As linguagens de alto nível (ou linguagens de aplicação) são normalmente fáceis de aprender porque estão formadas por elementos de linguagens naturais, como o inglês. Elas fazem com que os comandos binários que devem ser enviados ao processador sejam mais amigáveis e intuitivos, geralmente através do uso de palavras conhecidas, recursos visuais que auxiliam no processo de programação e ferramentas de depuração do código (debugger). A tradução de um código fonte em linguagem de montagem (Assembly) para um código de máquina não executável (módulo de objecto) se realiza por meio de um montador (assembler). A tradução das instruções de linguagens de alto nível (o código-fonte de linguagens como Pascal, C, COBOL ou FORTRAN) para um módulo de objecto não é complicada e se realiza normalmente por um programa especial chamado compilador. Os módulos de objectos gerados a partir de compiladores ou montadores são transformados em um programa efectivamente executável através de um utilitário chamado linker (ligador), que é responsável pelo carregamento do código na memória principal (RAM) e pelo tratamento das referências de endereçamento. Algumas linguagens de alto nível, como o Basic e o dBase, não geram módulo de objecto. Elas são interpretadas no momento da execução do programa, traduzindo cada instrução individualmente antes de executá-la. 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). Exemplos: Pascal, C, COBOL, C++, FORTRAN, ASP, PHP, Phyton, C#, SQL, JSP, XML, XSL, XML, HTML, Visual C++, Java Script, Delphi, J pascal, Visual Basic, Java, e entre outras. Algoritmo Em ciências da computação houve um processo de desenvolvimento simultâneo e interactivo de máquinas (hardware) e dos elementos que gerenciam a execução automática (software) de uma dada tarefa. E essa descrição da execução de uma tarefa, como considerada acima, é chamada algoritmo. 5
  • 6. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 É a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de acções. Existem, porém, várias definições para algoritmos, contudo cabe a cada académico averiguar qual a que mais se adequa ao seu entendimento lógico das coisas. · Um algoritmo é uma sequência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema. · Um algoritmo é também um conjunto finito de instruções que podem ser executadas mecanicamente em um tempo finito de modo a resolver um problema. · Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjectivas, sua definição deve ser clara e objectiva. Como exemplo de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtracção) de números reais decimais. Outros exemplos seriam os manuais de aparelhos electrónicos, como uma impressora, que explicam passo-a-passo como por exemplo instalar ou ligar. Exemplo de algoritmo: Ler dois valores; Efectuar a soma destes valores; Apresentar o resultado. Escreva o primeiro número no rectângulo A; Escreva o segundo número no rectângulo B; Some o número do rectângulo A com número do rectângulo B e coloque o resultado no rectângulo C. Rectângulo A Rectângulo B + Rectâng. C (resultado) = Pseudocódigo Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação em uma linguagem de programação, ou seja, quando formos programar em uma linguagem, por exemplo Java, estaremos gerando código em Java. Por isso os algoritmos são 6
  • 7. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 independentes das linguagens de programação. Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo. Antes de utilizarmos uma linguagem de computador, é necessário organizar as acções a serem tomadas pela máquina de forma organizada e lógica, sem nos atermos as regras rígidas da Sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais acções, conhecida como algoritmo, ou pseudocódigo como vimos acima. O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação. Etapas de um algoritmo (IMPORTANTE) Quando temos um problema e queremos utilizar o computador para resolvelo, (ou seja, ao criarmos um algoritmo) temos que passar pelas seguintes fases: a) Interpretar o problema; b) Realizar um estudo de situação actual e verificar quais formas de resolver o problema; c) Utilizar uma linguagem de programação para escrever o programa que a princípio deverá resolver o problema; d) Analisar junto aos usuários se o problema foi resolvido. Se não, retornar para a fase de estudo e descobrir onde está a falha. Comandos de Entrada e Saída O computador não é uma máquina isolada pois ela precisa se comunicar com o mundo exterior como vídeo, impressoras, teclado, discos, fitas, etc. Para realizar esta comunicação existem comandos que permitem que as informações sejam inseridas e exibidas. Um comando de entrada serve para que o programa solicite dados no momento em que o mesmo está sendo executado. Esses dados fornecidos serão armazenados em variáveis na memória. Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: Entrada Processamento ENTRADA: São os dados de entrada do algoritmo. 7 Saída
  • 8. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final. SAÍDA: São os dados já processados. Os comandos que iremos estudar são: Ø LEIA: é um comando de entrada. Utiliza-se o leia para ler (ou receber) um valor do teclado. Sintaxe: Leia ( variável ) ou Leia ( variável-1,variavel-2,variável-3, ,variável-n ) Ø ESCREVA: é um comando de saída. Utiliza-se o escreva para imprimir (ou mostrar) um valor no ecrã. Sintaxe: Escreva ( Aqui vem o que você quiser escrever ) ou Escreva ( Comentário , variável) Estrutura de um algoritmo Algoritmo < nome_do_algoritmo > Constantes Variáveis Inicio < Corpo do algoritmo > Fim Variáveis e Constantes Variáveis são endereços de memória destinados a armazenar informações temporariamente. Não entendeu??? São unidades básicas de armazenamento das informações a nível de linguagens de programação. E agora? Mais ou menus? Ora vejamos! Para armazenar os dados na memória, imagine que a memória de um computador é um grande arquivo com várias gavetas, onde cada gaveta pode armazenar apenas um único dado (seja numérico, caractere ou lógico). Se é um grande arquivo com várias gavetas é necessário identificar com um nome a gaveta que se pretende utilizar. Assim o valor armazenado pode ser utilizado a qualquer momento. Variável: tudo aquilo que é sujeito a variações, que é incerto ou instável. O acesso à informação na memória é bastante ilegível e 8
  • 9. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 difícil de se trabalhar. Para contornar esta situação criou-se o conceito de variável como entidade distinta a guardar uma informação. Elas armazenam informações fornecidas por um meio externo (dispositivos de entrada). Em geral a unidade de entrada é o teclado. Ok! Agora Sim!!! Todo Algoritmo ou programa deve possuir variável! Toda variável é identificada por um nome ou identificador. Assim, por exemplo, num algoritmo para calcular a área de um triângulo rectângulo pelo teorema de Pitágoras (a2 = b2 + c2), os identificadores A, B e C podem representar as posições de memória que armazenam o valor da hipotenusa e dos catetos. É importante que nunca usemos uma palavra reservada, isto é, que faça parte da linguagem algorítmica, como um identificador, pois poderá causar ambiguidade no entendimento do algoritmo. Exemplo: 5 A B 4 C= A+B 9 Basicamente uma variável possui três atributos: Um nome, Um tipo de dado associado a mesma e a informação por ela guardada. Nome: tem a função de identificar e diferenciar das demais. Deve necessariamente começar com uma letra. Não deve conter nenhum símbolo especial excepto ( _ ). Só pode conter 127 caracteres e não pode ter espaços em branco Tipo de dado: (Numérico, Caractere ou Lógico) valor que ela pode armazenar. Informação: o que está contido na variável. Sintaxe: Var < nome_da_variavel > : < tipo_da_variavel > Var < lista_de_variaveis > : < tipo_das_variaveis > A palavra VAR (abreviatura de variável) deve estar sempre presente e só será usada uma única vez na declaração de um conjunto de uma ou mais variáveis. 9
  • 10. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Constantes são endereços de memória destinados a armazenar informações fixas, inalteráveis durante a execução do programa. Exemplo: PI = 3,1415926535897932384626433832795 Nome_da_empresa = OM2006 Operação de Atribuição Quando definimos uma variável é natural atribuirmos a ela uma informação. Uma das formas de colocar um valor dentro de uma variável, consequentemente colocado este dado na memoria do computador, é através da atribuição directa do valor desejado que a variável armazena. A operação de atribuição permite que se forneça um valor a uma certa variável. Se for atribuído uma expressão à variável, será armazenado o resultado daquela expressão. Se for atribuído uma outra variável, será armazenado o conteúdo daquela variável. Para isso utilizaremos o símbolo (ß), que significa recebe, ou seja, a variável receberá uma informação que será armazenada no interior desta variável. sintaxe: variável ß expressão (ou valor) Exemplos: Aß2 NOME ß 'João' AßB+C BßA SENHA ß 'X3Y9' NOTA ß NOTA - 1 NOTA ß 10 Cß1/3 X ß 2.5 Tipos de Variáveis No momento em que trabalhamos com algoritmos e variáveis, devemos obrigatoriamente indicar o tipo de informação que esta variável ira conter, isto é, se uma dada posição de memória armazenará um número ou uma letra. Para isso temos alguns tipos de variáveis: Inteiro (int) Real (float) Admite somente números inteiros. Geralmente e utilizado para representar uma contagem(Quantidade). Admite números reais (com ou sem casas decimais). Geralmente e utilizado para representar uma medição. 10
  • 11. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Admite caracteres alfanuméricos. Os números quando declarados como caracteres tornam se representativos e perdem a atribuição de valor. Admite somente valores lógicos(verdadeiro/falso). Caractere (char) Lógico (bool) Operadores Na programação existe três tipos de operadores: Aritméticos Relacionais e Lógicos Os operadores aritméticos são aplicados ao tipo de dado inteiro ( int e real ), os operadores relacionais e lógicos são aplicados ao tipo de dado booleana ( bool ). Operadores Aritméticos Operador Operação Operandos Resultado + Adição A+B Soma de A e B - Subtracção A-B Subtracção de A e B * Multiplicação A*B Multiplicação de A por B / Divisão Real A/B Divisão de A por B A MOD B Modulo de A por B % (MOD) Resto da Divisão DIV Divisão Inteira A DIV B Divisão de A por B ** Exponenciação A**B A de expoente B Operadores Relacionais Operador Operação Operandos = igual A=B Verdadeiro se A for igual a B. > maior A>B Verdadeiro se A for maior que B. 11 Resultado
  • 12. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 < menor A<B Verdadeiro se A for menor que B. >= maior ou igual A>=B Verdadeiro se A for maior ou igual que B. <= menor ou igual A<=B Verdadeiro se A for menor ou igual que B. <> diferente A<>B Verdadeiro se A for diferente de B. Operadores Lógicos Operador Operação Operandos Not (Nao) Negação Não A Verdadeiro se A for falso e falso se o contrario And (e) Conjunção AeB Verdadeiro se ambos forem verdadeiros. Or (ou) Disjunção A ou B Verdadeiro se pelo menos um for verdadeiro Funções Pré-definidas ABS(x) - VALOR ABSOLUTO SQRT(x) - RAIZ QUADRADA SQR(x) - ELEVA AO QUADRADO ROUND(x) - VALOR ARREDONDADO LOG(x) - LOGARITMO SIN(x) [ou SEN(x) ]- SENO COS(x) - COSSENO TAN(x) TANGENTE 12 Resultado
  • 13. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Estruturas de Controlo Em Operações Lógicas , na maioria das vezes necessitamos controlar e tomar decisões no andamento do algoritmo. Essas decisões interferem directamente no andamento do programa. Analisaremos dois tipos de estruturas. A estrutura de Decisão e a estrutura de Repetição. Decisão - Se então senão - Caso faça Repetição - Repetir até - Enquanto faça - Para/desde faça E.C. Estruturas de Decisão A todo momento tomamos decisões em uma situação. Em algoritmo chamamos esta situação de condição. Associando a uma condição existirá uma alternativa possível de acções. Exemplo: Se tiver que namorar vou escolher um(a) garoto(a) bonito(a) e inteligente . Nesta condição a pergunta é tenho de namorar? R: Sim ou Não. Lembrese, então em algoritmo toda condição tem de ser lógica (verdadeira ou falsa). Se a condição for verdadeira irá executar o procedimento. Senão, não executa nada. Portanto, as estruturas de decisão são utilizadas para tomar uma decisão baseada no resultado da avaliação de uma condição de controlo e seleccionar uma ou mais acções possíveis (comandos a serem executados pelo computador). (SE ENTÃO Sintaxe: SENÃO) à simples Se (condição) então [Comandos] Fimse 13
  • 14. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 (SE ENTÃO Sintaxe: SENÃO) à composta Se (condição) então [Comando1] se for verdadeira [Comando2] se for falsa Senão Fimse (Caso faça ou Escolha caso) É utilizada quando se deseja executar dentre vários comandos (ou uma entre várias sequências de comandos) dependendo do resultado de uma expressão. Sintaxe: Escolha variável Caso <expressão> faça <lista_de_comandos1> Caso não seja <lista_de_comandos2> FimEscolha Estruturas de Repetição São muitas vezes chamadas de Laços ou Loops. São comuns as situações em que se deseja repetir um determinado trecho de um programa um certo número de vezes. A classificação das estruturas de repetição é feito de acordo com o conhecimento prévio do número de vezes que o conjunto de comandos será executado. Elas permitem que uma sequencia de instruções sejam executadas repetidamente enquanto uma determinada condição seja satisfeita. As condições devem ser lógicas. Na estrutura de repetição usa-se geralmente dois tipos de variáveis para resolução de diversos tipos de problemas: Ø Variáveis Contadoras: é uma variável que recebe inicialmente um valor igual a zero (0) antes do inicio da estrutura de repetição e é incrementada no interior da no interior da estrutura de um valor constante. 14
  • 15. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Cont ß 0 < estrutura de repetição > Cont ß Cont + 1 < fim_da_estrutura_de_repetição > Ø Varáveis Acumuladoras: vai fazendo o mesmo que a contadora, só que acumula uma execução dentro da estrutura de repetição. Soma ß 0 < estrutura de repetição > Soma ß Soma + 1 < fim_da_estrutura_de_repetição > Existem três (3) estruturas de repetição: 1. Enquanto faça 2. Repita até 3. Para faça (ENQUANTO à com teste no inicio à com teste no fim à automático FAÇA) É usada em dois casos, quando sabemos o número de vezes que queremos repetir e quando não sabemos. Esta estrutura de controlo permite que um conjunto de instruções sejam executados repetidamente, enquanto uma condição seja verdadeira. Sintaxe: Enquanto (condição) faça Corpo do ciclo Fimenquanto (REPITA ATÉ) É utilizada quando não se sabe n número de vezes que um trecho do algoritmo deve ser repetido, embora também possa ser usada quando se sabe o número de vezes a ser repetido. Esta estrutura de controlo permite que um conjunto de instruções sejam executados repetidamente até que uma condição de controlo seja falsa. Sintaxe: Repita Corpo do cliclo 15
  • 16. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Ate (condição) A diferença entre a estrutura de repetição enquanto e a repita é que na repita os comandos serão repetidos pelo menos uma vez já que a condição se encontra no fim. (PARA FAÇA) É usada quando num algoritmo ou num programa nós sabemos o número de vezes que certa instrução deve repetir. Esta estrutura de controlo permite que um conjunto de instruções sejam executados repetidamente num número específico de vezes. Sintaxe: para VCßVI ate VF passo I/D faça ou seja: para variável controlo ß valor inicial ate valor final passo incremento/decremento faça OBS: Quando o número (passo) anda 1 à 1 então o passo é ignorado (ocultado). Quando não é então o passo é apresentado. Vectores Estrutura formada por um conjunto unidimensional de dados de mesmo tipo (homogéneo) e possuindo número fixo de elementos (Estático). Na declaração dos vectores devemos informar o seu nome, seu tipo (inteiro, real, caractere, ...), e seu tamanho (número de elementos). Cada elemento do vector é identificado por um índice (unidimensional), o qual indica a sua posição no vector. Declaração : Nome_Do_Vector : vector[nº de elementos] de Tipo do Vector Referência : Nome_Do_Vector[índice] Matrizes Estrutura semelhante ao vector, sendo que, pode possuir n dimensões. Uma matriz nos possibilita o armazenamento de vários valores em uma única variável. Isso porque ele possui níveis dentro dela. Desta forma para fazer referência aos elementos de uma matriz, precisaremos de tantos índices quanto for suas dimensões. Declaração : 16
  • 17. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Nome_Da_Matriz : matriz[dimensões] de Tipo da Matriz Referência : Nome_Da_Matriz[índices] Modularização A modularização consiste num método para facilitar a construção de grandes programas, através de sua divisão em pequenas etapas, que são : módulos, rotinas, subrotinas ou subprogramas. Permitindo o reaproveitamento de código, já que podemos utilizar um módulo quantas vezes for necessário, eliminando assim a necessidade de escrever o mesmo código em situações repetitivas. OBS: As variáveis passadas aos procedimentos são associadas aos parâmetros do procedimento de acordo com a ordem das variáveis e da lista de parâmetros. 17
  • 18. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Exercícios Propostos 1) Dê o conceito de Lógica, Programação, algoritmo e variável. 2) Defina por suas palavras os termos: Programa, Linguagem de Programação e Compilador. 3) Qual é a diferença entre linguagem de baixo nível e linguagem de alto nível? 4) Exemplifique o uso da operação de Atribuição. 5) Qual a finalidade de uma operação de entrada ? Dê exemplos. 6) Explique a utilidade da estrutura de decisão e a estrutura de repetição. 7) Qual é a diferença entre o enquanto faça e o repita até? 8) Em que situações é mais indicado o uso da estrutura para faça? 9) Em que situações não podemos utilizar a estrutura para faça? 10) Qual a finalidade de uma operação de saída? Dê exemplos. 11) Escreva os comandos necessários para: a) Exibir o teu nome no ecrã; b) ler o nome de uma pessoa; c) ler as 3 notas de um aluno; d) ler o peso e altura de uma pessoa. 12) Crie um algoritmo que faça alguma coisa. 13) Escreva um algoritmo que leia dois números e mostre a soma, a subtracção, a divisão e o produto. 14) Faça um algoritmo que leia um numero e calcule o seu sucessor e o seu antecessor. 15) Ler um número real e imprimir a terça parte deste número. 16) Elabora um algoritmo que leia dois números e exiba o maior e o menor entre eles. 17) Faça um algoritmo que receba um valor inteiro e determine se ele é par ou ímpar. 18) Faça um programa que leia dois números e mostre-os em ordem crescente. 19) Elaborar um algoritmo que dado a idade de duas pessoas que nasceram em 2005, saber quantos anos terão em 2025, para a segunda idade aumentar 10% da idade do primeiro. 20) Elabore um algoritmo que mostre a tabuada de um número qualquer digitado pelo usuário. 18
  • 19. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Conclusão Existe a preocupação de fazer uma ligação à algoritmia e programação em sintonia com a cadeira de Introdução à informática. Esperamos com esta orientação contribuir para uma apresentação mais atractiva da matéria, sem, contudo, diminuir o rigor lógico do raciocínio e da disposição. 19
  • 20. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Terminologia Código termo genérico para nomear as instruções de um programa. Codificação conjunto de técnicas que tentam tornar inacessível a informação a pessoas não autorizadas. Programação é o acto de dar instruções ao computador de modo que ele realize operações desejadas. Programar é a arte de dar instruções ao computador de modo que ele reage a estas mesmas instruções. Interpretador é um programa desenvolvido para executar programas de linguagens de alto nível. Compilador é o elemento que serve de tradutor da linguagem corrente para linguagem máquina. Sintaxe é a forma como os comandos devem ser escritos, a fim de que possam ser entendidos pelo tradutor do programa. Programa fonte programação. é o programa original escrito numa linguagem de Código fonte instruções de programa legíveis pelo programador e escritas em linguagem assembler ou de alto nível. Programa objecto é o resultado da compilação de um programa fonte (no caso de utilizar um computador). Código objecto código gerado por um compilador traduzido a partir do código fonte de um programa. Funções uma função é semelhante a um procedimento, sendo que esta deve retornar, obrigatoriamente, um valor em seu nome, desta forma, é necessário declarar, no cabeçalho da função, qual o seu tipo. Procedimentos um procedimento é um bloco de código precedido de um cabeçalho que contém o Nome do procedimento e seus parâmetros. Com isto, podemos fazer referência ao bloco de código de qualquer ponto do algoritmo através do seu nome e passando os seus parâmetros. 20
  • 21. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Dicas Tenha Calma. Se você não conseguir de primeira não é motivo para já ir desistindo e passando a bola para o pessoal do fórum ou lista de discussão. Se você não perseverar, o lado negro da força dominará você e a mediocridade eterna será a sua recompensa profissional. Programação exige, entre outras coisas, muita perseverança. O Passo Maior que a Perna. Se você não se garante em alguma coisa é porque ainda falta para você chegar lá. Tente começar pelo começo. De que adianta você fazer um programa usando código que te foi passado e você não entender de como ele funciona? O bom programador é aquele que tem uma boa base, que conhece e domina o básico da linguagem e cultiva uma boa lógica, o resto vem com o tempo e a necessidade. Seja Humilde. A humildade é um factor crucial em qualquer profissão. Cultive-a, ela pode te ensinar muito, tanto no trabalho como na vida. Ninguém aqui precisa ser monge para cultivar a humildade, cultive-a pelo prazer de ser verdadeiro nas suas acções e honesto na sua profissão. Seja Independente. Não fique esperando a ajuda de todos para realizar o que você quer. A tarefa tem que ser a sua principal motivação. Além do mais cada vez que alguém te entrega uma solução mastigada você deixa de aprender com o processo. Bom Senso é Tudo! Sem bom senso você está perdido, pode considerar isso a pura verdade. Diante de uma situação complexa e aparentemente sem saída, pare, relaxe e use o seu bom senso, escute os seus neurónios. Lembre-se que mesmo depois de ter seguido este conselho e o problema continuar lá não quer dizer que ele é insolúvel. Nada é Impossível. Embora algumas coisas são quase. Pense que tem gente fazendo aqueles jogos 3D e portanto se aquilo é possível sua tarefa também deve ser. O importante é perseverar e manter uma atitude positiva diante da tarefa, não encare a tarefa como inimiga e sim como uma amiga que não fala a sua língua. Nunca Pare de Aprender. Se um dia você se cansar de aprender novas tecnologias em desenvolvimento, siga meu conselho: Mude de profissão. É exactamente o que eu vou fazer. Tenha Curiosidade. Procure, pesquise e corra atrás. Isso ensina mais que muitos cursos por aí. A máquina é o computador e não você, portanto não se torne um autómato que apenas faz o necessário e apenas sabe o suficiente. 21
  • 22. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Não Tenha Pressa. O aprendizado é uma estrada longa e cheia de obstáculos, que começa no primeiro passo e termina quando você a abandona. Aprenda a separar pressa, de que adianta entregar no prazo se está mal feito. O velho ditado vale: "A pressa é inimiga da perfeição". Fale Connosco. Para casos de dúvidas, críticas ou sugestões estamos eventualmente dispostos a colaborar, basta contactar-nos na F.C. ou enviar para os nossos correios electrónicos citados abaixo: ü mutepa_2006@hotmail.com.pt ü hotyboy_h@hotmail.com àMutepa àOtniel Ajude-nos a melhorar!!! [ O HOMEM NÃO PRECISA DA SORTE PARA TER INTELIGENCIA MAS DA INTELIGÊNCIA PARA TER SORTE ] [ NÃO POSSO PROVAR IMPIRICAMENTE QUE OS ALGORITMOS ESTÃO CERTOS COMO NÃO PODEM ME PROVAR IMPIRICAMENTE QUE ESTOU ERRADO. ] 22
  • 23. Introdução à Lógica de Programação I João Mutepa Otniel Neto 2010 Bibliografia Ø FORBELLONE, A. L. V. ; EBERSPACHER, H. F. Lógica de programação. 2.ed. São Paulo: Makron Books, 2000. Ø MANZANO, J.A.N.G. ; YAMATUMI, W. Y. Estudo dirigido de algoritmos. São Paulo:Érica, 1997. Ø Livro Informática - O Computador trabalha p/você CURSOR INFORMÁTICA. Ø Apostila Algoritmos JEDEAN CARLOS BENDLIN, 2008. Ø Apostila Lógica de Programação (CAP-Criação de Algoritmos e Aprogramas) RENATO DA COSTA, 2007. Ø Curso Básico de Lógica de Programação PAULO SÉRGIO DE MORAES. Ø Apostila Como escrever programas melhores Traduzido por Walter Staeblein. Autor Desconhecido Ø Enciclopédia Microsoft® Encarta®. © 1993-2007 Microsoft Corporation. 23