Sunteți pe pagina 1din 56

Noes Bsicas

PSI 10 Ano

Um Departamento de Informtica

Director de Informtica Chefe de Sistemas Administrador de Bases de Dados Administrador de Redes Analista de Sistemas Planificador Controlador de I/O Operador

Programador: Codifica os programas das aplicaes cujos dossiers lhe foram entregues pelo analista. Testa os programas e corrige-os. Documenta-os e entrega-os, prontos a serem implementados, ao analista. Faz tambm a manuteno de programas existentes.

Noo de Algoritmo

Algoritmo Uma sequncia ordenada e finita de instrues que descrevem, passo a passo, um modo de resoluo de um problema. (Ex. Receita de cozinha, guio de um filme, etc.)

Se essas instrues forem escritas numa linguagem de programao, ento passamos a cham-las de Programa.

Caractersticas de um Algoritmo

Ser correctamente definido com ordem nas aces a desenvolver, estando estas descritas de forma clara e com o maior nmero possvel de informaes; No estar sujeito a ambiguidades provenientes da falta de informao ou duplicao desta;

Ser eficaz, ou seja, consegue resolver o problema em qualquer situao e sem erros de qualquer tipo de falhas. Caso existam situaes de excepo, as mesmas devem ser especificadas e tratadas; Ser eficiente, ter capacidade de resolver o problema com o mnimo de recursos, quer sejam o espao ocupado na memria do computador, o tempo de execuo do programa, entre outros

Fases na Resoluo de um Problema


1.

2.
3.

Anlise do problema; Desenho do algoritmo; Codificao do algoritmo;


Problema Anlise

Algoritmo

Codificao

Problema Resolvido

1.A anlise:
O objectivo fundamental da anlise permitir a quem l a compreenso, no apenas do problema proposto, mas sobretudo a sua natureza.

Ento provavelmente as duas especificaes bsicas, talvez as que determinam toda a anlise e o desenho do algoritmo, so as especificaes de entrada e de sada.

Com que dados vamos trabalhar? Que resultados deveremos obter?

Especificaes de entrada Definio do problema Especificaes de sada Descrio do Problema Anlise

Exemplo 1:

Sabendo que o meu pai ganha um ordenado mensal X e desconta para a segurana social uma percentagem Y, quanto que recebe no fim do ms e qual o valor que desconta?

Anlise Entradas Ordenado (X) Percentagem de Desconto (Y) Valor de Desconto (S) Valor que recebe (Z) X, Y, S, Z

Sadas

Variveis

Definio do problema Calcular o Ordenado lquido e valor de desconto. Descrio do problema Apresenta de forma clara, no cran ou impressora, o valor do ordenado lquido e do desconto para a Segurana Social.

2. Desenho do Algoritmo

A mquina s executa aquilo que lhe for ordenado; O Algoritmo uma simulao no geral do que a mquina vai executar em concreto; As entradas de um Algoritmo devem produzir sadas (ou no fariam sentido!).

Sempre que um problema mais complexo, devemos sempre decomp-lo. As vantagens desta decomposio (diviso), so:
A modificao dos componentes mais fcil do que a modificao do todo; A compreenso de cada sub-problema mais fcil do que a compreenso integral do problema; A verificao do funcionamento do algoritmo mais simples em blocos do que na globalidade.

2. Desenho do Algoritmo
Decomposio do Exemplo1:
Clculo do ordenado lquido Calcular valor do desconto Calcular ordenado lquido

Ler ordenado ilquido

Ler percentagem de desconto

Escrever valor do desconto Escrever ordenado lquido

Problema resolvido!

2. Desenho do Algoritmo
Especificando ainda mais o Exemplo1:
Clculo do ordenado lquido S=X*Y

Ler X
(ordenado ilquido)

Z=X-S

Ler Y
(percentagem de desconto)

Escrever S

Escrever Z

Problema resolvido!

Exerccio:

Dado o custo unitrio de um dado produto, variando a percentagem de lucro, qual o preo de venda com IVA includo e qual a margem de lucro correspondente?

Anlise

Entradas Sadas Variveis Definio do problema Descrio do problema

Sequncias Lineares e No Lineares


Aco 1 Condio
falso verdade

Aco 2

Aco X

Aco Y

Aco 3

Aco Z

Linear

No Linear

Sequncias Lineares e No Lineares


Imagine o caso de substituir uma lmpada fundida.
1. 2. 3.

Preparar uma lmpada nova Retirar a lmpada fundida Colocar a lmpada nova

Linear

Se acrescentarmos algumas aces adicionais:


No Linear
4. 5.

Ligar o interruptor para verificar se a nova lmpada acende ou no Se a lmpada no acender teremos de repetir os passos de 1 a 3

Exemplo 2:

Como beber um copo de gua?


Pegar num copo Coloc-lo debaixo de uma torneira Ench-lo (retirar o copo? E fechar a torneira?) Lev-lo boca Beber a gua Pousar o copo

Exemplo 2:
Incio Ver se existe um copo Se no existe ento Fica-se com sede Se existe ento Estender a mo Segurar o copo Se no estiver debaixo da torneira ento Colocar o copo debaixo da torneira Se estiver debaixo da torneira ento Abrir a torneira Se o copo no estiver cheiro ento Manter a torneira aberta Se o copo estiver cheio ento Fechar a torneira Levar o copo boca Beber Pousar o copo Largar o copo Fim

Exemplo 2:

Existem palavras que foram intencionalmente colocadas a negrito e que correspondem a palavras reservadas no domnio da programao:
Se If No Not Ento Then Fim End Incio Begin

De notar tambm a indentao e a sua importncia, visto ser mais fcil a leitura e percepo do programa. A linguagem que acabmos de utilizar chamada de PSEUDOCDIGO, uma verso simplificada da nossa linguagem utilizada pelos programadores para pr-programarem os seus programas.

Exerccios:
1.

Calcular a rea de um terreno quadrado. Fazer a anlise do problema, o esboo e um aprofundamento ao esboo do algoritmo. Elaborar o desenho do algoritmo que mostre qual o percurso que fazem desde o momento em que o despertador toca at comearem a tomar o pequenoalmoo.

2.

Representao dos Algoritmos


Fluxogramas

Fluxogramas e Pseudolinguagem

Existem duas grandes tcnicas para a representao de algoritmos: Fluxogramas Pseudolinguagem

Os Fluxogramas, tambm chamados de diagramas de fluxo, so uma das mais importantes ferramentas do programador, na representao grfica do algoritmo. Um Fluxograma o grafismo que descreve de modo simples e de fcil leitura um determinado algoritmo.

Fluxogramas

Smbolos Principais:
Incio/Trmino Entrada/Sada Deciso Mltipla

Processo

Conector

Deciso Simples

Conector entre pginas

Fluxogramas
Calcular a rea de um rectngulo:
Incio
1. Obter os valores do comprimento e da largura 2. Calcular a rea 3. Apresentar o valor da rea

Ler (Comp, Larg)

Area<-Comp*Larg

Escrever (Area)

Fim
pg. 37 do Manual Adoptado (Porto Editora)

Pseudolinguagem
Pseudolinguagem, ou pseudocdigo, uma forma de representar algoritmos, prxima da linguagem corrente e das linguagens de programao.
Incio

Fim

Escrever (Introduza dois valores) Ler (valor1) Ler (valor2) Se (valor1 > valor2) ento Escrever (O valor 1 maior) Seno Se (valor1 < valor2) ento Escrever (O valor 2 maior) Seno Escrever (Valores Iguais!!)

Fluxogramas

Exerccios (1)
Resolva os seguintes problemas fazendo, para cada um deles, a anlise e o fluxograma do algoritmo.

Programa que leia um nmero e calcule x2 + 2x + 3. Programa que escreva positiva ou negativa, consoante a nota entrada. Programa que calcule o nmero de segundos entre as 0 horas 0 minutos e 0 segundos e uma hora dada. Ex: entre as 00:00:00 e as 02:01:23. Programa que calcule o nmero de segundos entre dois instantes dados.

Estruturas de Deciso

Estruturas de Deciso
Existem dois tipos bsicos de estruturas condicionais (ou deciso): SE ENTO SENO (IF-THEN-ELSE) Deciso Simples

CASO FIM (CASE OF-END)

Deciso Mltipla

Estruturas de Deciso
1. SE (IF) SE arranjares um capacete ENTO Levo-te de mota SENO Vais de autocarro
Verdadeiro condio

Falso

Instruo 1a

Instruo 1b Instruo 2a

Instruo 2b Instruo n Instruo x

Estruturas de Deciso
2. CASO (CASE) CASO a nota do teste seja igual a Bom : ganho um jogo Suficiente : vou ao cinema Mau : lavo a loia FIM
Expresso

=1

=2

=3

=4

=n

Inst.1

Inst.2

Inst.3

Inst.4

Inst.n

Fluxogramas

Exerccios (2)
Resolva os seguintes problemas fazendo, para cada um deles, a anlise e o fluxograma do algoritmo.

Pedir a nota do aluno e dizer se essa nota positiva ou negativa. Se for positiva, dizer o resultado qualitativamente (Suficiente, Bom ou Muito Bom). Pedir a nota do aluno e dizer a nota qualitativamente, utilizando uma estrutura de seleco. Pedir a nota do aluno e dizer se essa nota positiva ou negativa. Se a nota for invlida, tornar a pedi-la.

Estruturas de Repetio

Estruturas de Repetio
Uma estrutura de repetio processa uma sequncia de instrues, tantas vezes quantas as estabelecidas pela condio a que est sujeita.
Uma estrutura que repete uma sequncia de aces, sempre pela mesma ordem, um nmero determinado de vezes, designada por loop. A aco de repetir recebe a designao de iterao ou ciclo.

Estruturas de Repetio

Existem trs tipos bsicos de estruturas de repetio:


Enquanto - faa (while-do); Repetir - at que (repeat-until); Faa de - at (for-to-do).

Estruturas de Repetio (while-do)


Enquanto-faa (while-do)
Esta estrutura caracterizada pela execuo repetida de um conjunto de instrues enquanto se verificar o valor lgico verdade de uma condio. Quando o valor se tornar falso terminar este processamento iterativo (sada do bloco de instrues).
falsa

condi o
verdadeira

Aco 1

Aco 2

ENQUANTO condio FAA Inicio Aco1 Aco2 ..... Aco n fim

Estruturas de Repetio (while-do)


Exemplos:
ENQUANTO a porta no abrir FAA Inicio Girar a chave fim (A chave rodada nenhuma ou diversas vezes enquanto a porta estiver fechada.)

Outro exemplo:
ENQUANTO a<>0 FAA Inicio Ler (a); Ler (b); Calcular c=a+b; Escrever (c); fim WHILE a<>0 DO Begin Readln(a,b); c:= a+b; writeln(c); End;

(Enquanto o valor de entrada for diferente de 0, so executadas as instrues entre o inicio e o fim. Quando o valor for 0, terminado o WHILE.)

Pseudocdigo

Pascal

Estruturas de Repetio (repeat-until)


Repetir at que (repeat-until)
Esta estrutura permite que um conjunto de aces se repita at que uma determinada condio se verifique (seja verdadeira). Como o conjunto de aces executado antes da verificao (teste da condio), ser executado pelo menos uma vez.

Aco 1 Aco 2 . Aco n

Repetir Aco1 Aco 2 .. aco n At Condio

falso

condi o
verdadeiro

Estruturas de Repetio (repeat-until)


Exemplos:
REPETIR Girar a chave AT a porta abrir

(A chave rodada uma ou diversas vezes at abrir a porta.)

Outro exemplo:
REPETIR Ler(a); Ler (b); Calcular c=a+b; Escrever(c); AT c=10; REPEAT Readln(a,b); c:= a+b; Writeln(c); UNTIL c=10;

(So executadas as instrues entre o repetir e o at, at que o valor de c seja igual a 10.)

Pseudocdigo

Pascal

DIFERENAS ENTRE A ESTRUTURA ENQUANTO-FAA E A ESTRUTURA REPETIR-AT

A estrutura enquanto-faa termina quando a condio falsa, enquanto que a estrutura repetir-at termina quando a condio verdadeira;
Na estrutura repetir-at o conjunto de aces do loop executado pelo menos uma vez enquanto que na estrutura enquanto-faa h a possibilidade de o conjunto de aces nunca ser executado.

Exerccios (3)

Pedir um nmero ao utilizador e perguntar se este ainda quer introduzir mais. Quando a resposta for No indicar quantos nmeros foram introduzidos. Pedir um nmero ao utilizador e perguntar se este deseja introduzir outro. Se a resposta for No faz a mdia dos nmeros introduzidos, seno repete. Perguntar ao utilizador quantos introduzir e fazer a mdia. nmeros este quer

Pedir ao utilizador para inserir um nmero e perguntar se quer introduzir outro. Quando o utilizador responder no, indicar qual foi o maior nmero introduzido.
Exerccios da pg. 64 e 65 do livro.

Algumas Resolues
Exerccio: Pedir um nmero ao utilizador e perguntar se este deseja introduzir outro. Se a resposta for No faz a mdia dos nmeros introduzidos, seno repete.

Exerccio: Perguntar ao utilizador quantos nmeros este quer introduzir e fazer a mdia.

Tipos de Dados e Operadores

Tipos de Dados

Os tipos de dados utilizados no Pascal podem ser:

Alfanumricos Numricos Lgicos

Tipos de Dados (cont.)

Alfanumricos Estes dados podem designar strings ou cadeias de caracteres e podem ser de comprimeonto fixo ou varivel. Quer num caso, quer noutro, estas cadeias de caracteres constituda por qualquer um dos 255 caracteres da tabela de cdigos ASCII.
Ex. Nome = Rui, 19 anos Preco = preo por unidade=200

Tipos de Dados (cont.)

Numricos

Podem ser inteiros ou reais:

Inteiros (2 bytes) So nmeros inteiros com sinal, compreendidos entre 32768 e +32768. Inteiros Longos (4 bytes) - So nmeros inteiros com sinal, compreendidos entre 2 147 483 648 e +2 147 483 648. Reais So nmeros que admitem parte decimal

Tipos de Dados (cont.)

Lgicos

Dados lgicos so dados que admitem 2 estados: Verdadeiro ou Falso. Exemplo:


Inicio Se 4>5 ento variavel=true Seno variavel=false; Fim.

Identificadores

Na programao, necessitamos de utilizar constantes e variveis.


As constantes so, como o nome indica, constantes, sempre iguais, fixos. As variveis, por sua vez, tm o seu valor incgnito, ou seja, pode ser alterado com o decorrer do programa e no sabemos

com que valor se inicia


No entanto, existem identificadores: algumas regras para construir esses

O primeiro caracter sempre uma letra; No existem espaos em branco; As palavras reservadas da linguagem de programao no servem para identificadores; Os caracteres compostos como , , , etc, no so vlidos.

Operadores

Existem diferentes tipos de operadores, nomeadamente:

Operadores Operadores Operadores Operadores

Aritmticos; Relacionais; Lgicos; Funcionais.

Operadores Aritmticos

Cada um dos tipos de dados existentes pode ser sujeitos a diversos tipos de operaes, de acordo com o seu tipo:
Operaes para dados Inteiros (Integer)
Adio Subtrao Multiplicao Diviso Diviso truncada Resto da diviso + * / DIV MOD 7+5 7-5 7*5

Dados: 5 e 7 ( Inteiros )
12 2 35

7/5
7 DIV 5 7 MOD 5

1.4 (real)
1 2 (resto da diviso)

Operaes para dados reais (real)


Adio Subtrao Multiplicao Diviso + * /

Dados: 2.453 e 4 (reais)


4+2.453 4-2.453 4*2.453 4/2.453 6.453 1.547 9.812 1.6306563

Operadores Relacionais

Os operadores relacionais estabelecem uma relao entre dois operandos, comparando-os, e produzindo um resultado lgico.

OPERADOR = <> < > <= >=

RELAO Igualdade Desigualdade Menor que Maior que Menor ou igual Maior ou igual

Suponha que as variveis i e j tm os valores de 3 e -5, respectivamente: Expresso i <= 10 i+j<0 (i-j) < (i+j) i3=j+5 2 * 1 >= i DIV 2 (i DIV 2) > (j + 6) Valor True False False True True False

Ateno: Os operadores podem ser constantes, variveis ou expresses!!!

Operadores Lgicos

Os operadores lgicos estabelecem uma relao lgica entre dois operandos booleanos, produzindo como resultado um valor lgico, que, como j sabemos, s pode ser Verdadeiro (True) ou Falso (False).

Operador OR AND NOT

Significado A expresso ser verdadeira se qualquer dos operandos for verdadeiro (ou se ambos forem verdadeiros) A expresso ser verdadeira se ambos os operandos forem verdadeiros Este operador usado como prefixo para negar um operador boleano

Operadores Lgicos (cont.)


Valores de X e Y X V V F F Y V F V F NOT X F F V V Valor resultante da operao lgica X AND Y V F F F X OR Y V V V F

Suponha que n uma varivel inteira qual foi atribudo o valor 10, e s uma varivel do tipo carcter (char) que representa o carcter A:

Expresso (n > 0) AND (n < 20) (n > 0) AND (n < 5)

Valor True False

(n > 0) OR (n < 5)
Suponha que a expresso boleana j > 6 verdadeira. Ento a expresso NOT (j > 6) ser falsa e a expresso NOT (j <= 6) ser verdadeira. (n < 0) OR (n > 20) (n = 10) AND (s = A) (n <> 5) OR (s >= A)

True
False True True

Operadores Funcionais
So operadores que chamam uma operao pr-determinada do PASCAL para que ela se execute sobre um dado operando produzindo um resultado. Algumas

Funo abs(x) chr(x) odd(x)

Objectivo Calcula o valor absoluto de x Determina o caracter representado por x na tabela ASCII Determina se x par ou mpar. (produz um valor verdadeiro se x for mpar e falso no caso contrrio) Determina o inteiro que usado para codificar x na tabela ASCII Arredonda o valor x para o inteiro mais prximo Calcula o quadrado de x Calcula a raiz quadrada de x Trunca x (elimina a parte decimal)

Tipo de Parmetro (entrada) Inteiro ou real Inteiro Inteiro

Tipo de Resultado Mesmo que x Carcter Booleano

ord (x) round(x) sqr(x) sqrt (x) trunc(x)

Carcter Real Inteiro ou real Inteiro ou real Real

Inteiro Inteiro Mesmo que x Real inteiro

Estrutura de um Programa em Pascal

Estrutura de um Programa

Nos programas da linguagem de programao PASCAL, podemos definir duas partes bem distintas:

Parte Declarativa (onde se declaram os tipos de dados que pretendemos utilizar) Parte Operativa (conjunto de instrues usadas para fazer as operaes)
Cabealho do programa Parte Declarativa oDeclarao de constantes oDeclarao de tipos oDeclarao de variveis Parte Operativa oExpresses oInstrues oEstruturas de controlo

Estrutura de um Programa
Exemplo:
Program teste; Const Maximo = 100; tecla = S; nome = Esc Sec Manuel Teixeira Gomes; numero : integer; valor : real; caracter : char; nome : string; . . . .

Var

BEGIN

END.

Instrues de Leitura/Escrita

INSTRUES DE ESCRITA

write (dados de sada); writeln (dados de sada);

Ex:

write (O meu nome Ermengarda); write ( um nome bonito no ?);

Instrues de Leitura/Escrita

INSTRUES DE LEITURA

read (identificador da varivel); readln (identificador da varivel);

Ex:

writeln (Como te chamas?); readln (nome);

Instrues de atribuio
utilizado o simbolo := porque o sinal de = utilizado na comparao de valores.

Os valores a atribuir varivel tm que ser do mesmo tipo e a varivel de destino fica sempre esquerda.

Ex:

valor := 13; palavra := TLP;

S-ar putea să vă placă și