65
PROGRAMAÇÃO I Faculdade de Ciências Universidade Agostinho Neto Curso: Ciências da Computação

Aula de programacao_final.dizando

Embed Size (px)

Citation preview

Page 1: Aula de programacao_final.dizando

PROGRAMAÇÃO I

Faculdade de CiênciasUniversidade Agostinho Neto

Curso: Ciências da Computação

Page 2: Aula de programacao_final.dizando

•Avaliação

Prova Escrita (Exame)

projecto

Media Final = 60% Exame +40% Projecto

• Aulas

2 Aulas Semanal

1 Aula de Laboratorio Semanal

Docente: Msc. Dikiefu Fabiano

Curso: Ciência da computação

Page 3: Aula de programacao_final.dizando

Índice1. Introdução

1. Conceito de Algoritmo.

2. Formas de Representação de Algoritmos

3. Descrição Narrativa

4. Fluxograma Convencional

5. Pseudocodigo

2. Tipos de Dados

3. Variáveis

1. Armazenamento de dados na memoria

2. Conceito e utilidade de variáveis

3. Definição de variáveis em algoritmo

4. Mapeamento de variáveis na memoria

4. Expressões

1. Conceitos

2. Operadores

3. Tipo d expressões

4. Avaliação de expressões

Page 4: Aula de programacao_final.dizando
Page 5: Aula de programacao_final.dizando

Algoritmo é um conjunto finito de regras, bem definidas, para

a solução de um problema em um tempo finito e com um

número finito de passos.

Serve como modelo para programas, pois sua linguagem é

intermediaria a linguagem humana e as linguagens de

programação, sendo então, uma boa ferramenta na validação da

lógica de tarefas a serem automatizadas.

Os algoritmos, servem para representar a solução de

qualquer problema, mas no caso de processamento de dados,

eles devem seguir as regras basicas de programação para que

sejam compatíveis com as linguagens de programação.

Conceito de Algoritmo

Page 6: Aula de programacao_final.dizando

Para se ter um algorimo é necessario:

Um número finito de passos;

Cada passo esteja precisamente definido, sem possiveis ambiguidades;

Existam zero ou mas entradas tomadas de conjuntos bem definidos;

Existam uma ou mas saida;

Exista uma condição de fim sempre atingida para quaisquer entradas e num tempo

finito.

Algoritmos não se aprendem:

Copiando algoritmo

Estudando algoritmo

Algoritmos so se aprendem:

Construindo algoritmos

Testando algoritmos

Conceito de Algoritmo

Page 7: Aula de programacao_final.dizando

Dentre as formas de representação de algoritmos mais

conhecidas podemos citar:

Descrição Narrativa;

Fluxograma convencional;

Pseudocodigo, tambem conhecida como linguagem

estruturada.

Formas de Representação de Algoritmos

Page 8: Aula de programacao_final.dizando

Nesta forma de representação os algoritmos são expressos

directamente em linguagem natural

Descriçao Narrativa

Receita de Bolo Tomando um Banho

1. Misture os ingredientes

2. Unte a forma com manteiga

3. Despeje a misture na forma

4. Se houver coco ralado

então despeje sobre a mistura

5. Leve a forma ao forno

6. Enquanto não estiver pronto

deixa a forma no forma

7. Retire do forno

8. Deixar esfriar

1. Entrar no banheiro e tirar a roupa

2. Abrir a torneira do chuveiro

3. Entrar na agua

4. Ensaboar-se

5. Sair da agua

6. Fechar s torneira

7. Enxugar-se

8. Vestir-se

Page 9: Aula de programacao_final.dizando

Formas de Representação de Algoritmos

Descriçao Narrativa

Troca de pneu furado Calculo da media de um aluno

1. Afrouxar ligeiramente as porcas

2. Suspender o carro

3. Retirar as porcas e o pneu

4. Colocar o pneu reserva

5. Apertar as porcas

6. Baixar o carro

7. Dar o aperto final nas porcas

1. Obter as suas 2 notas de prova

2. Calcular a media aritmetica

3. Se a media for maior que 7,

4. O aluno foi aprovado

5. Senao

6. Aluno reprovado

Page 10: Aula de programacao_final.dizando

É uma representação gráfica de algoritmo onde formas

geométricas diferentes implicam acções (instrucões comandos)

distintas.

Tal propriedade facilita o entendimento das ideias contidas nos

algoritmos e justifica sua popularidade.

Esta forma é aproximadamente intermediária a descrição

narrativa e ao pseudocodigo (sub item seguinte), pois é menos

imprecisa que a primeira e, no entanto, não se preocupa com

detalhes de implementação do programa.

Formas de Representação de Algoritmos

Fluxograma Convencional

Page 11: Aula de programacao_final.dizando

Formas de Representação de Algoritmos

Fluxograma Convencional

Inicio e fim de programa

Decisão

Operação de saida

Operação de entrada de dadosOperação de atribuição

Page 12: Aula de programacao_final.dizando

Formas de Representação de AlgoritmosFluxograma Convencional (Exemplo)

Calculo da media de um aluno sob

a forma de um fluxograma

Partindo do simbolo inicial, há

sempre um único caminho

orintado a ser seguido,

representando a existencia de uma

única sequencia de execução das

instruções.

inicio N1, N2

Media(N1

+N2)/2

Media

>=7

Aprovado reprovado

Fim

Page 13: Aula de programacao_final.dizando

Esta forma de representação de algoritmo é rica em

detalhes, como a definição dos tipos das variáveis

usadas no algoritmo. Por assemelhar-se bastante a

forma em que os programas são escritos, encontra

muita aceitação.

Na verdade, esta representação e suficientemente

geral para permitir a tradução de um algoritmo nela

representado para uma linguagem de programação

especifica seja praticamente directa.

Formas de Representação de Algoritmos

Pseudocodigo

Page 14: Aula de programacao_final.dizando

Formas de Representação de Algoritmos

Pseudocodigo

Algoritmo

<nome_do_algoritmo>

<declaracao_de_variaveis>

<subalgoritmos>

Inicio

<corpo do algoritmo>

Fim

Algoritmo e uma palavra que indica o inicio

da difinição de um algoritmo em forma de

pseudocodigo.

<nome_do_algoritmo> e um nome

simbolico dado ao algoritmo com a finalidade

de distingui-lo dos demais.

<declaração de variaveis> consiste em uma

porção opcional onde são declaradas as

variaveis globais usadas no algoritmo

principal e, eventualmente, nos

subalgoritmos.

Inicio e Fim são respectivamente as palavas

que delimitam o inicio e o termino do conjunto

de instruções do corpo do algoritmo.

A forma geral da representação de

um algoritmo na forma de

pseudocodigo

Page 15: Aula de programacao_final.dizando

Representação do algoritmo do calculo da media de um aluno, na forma de um pseudocodigo.

Formas de Representação de Algoritmos

Pseudocodigo (Exemplo)

Algoritmo Calculo_Media

Var N1, N2, MEDIA: real

Inicio

leia N1, N2

MEDIA (N1+N2)/2

Se media >= 7 então

Escreva “Aprovado”

Senao

Escreva “Reprovado”

Fim-se

Fim

Page 16: Aula de programacao_final.dizando

Formas de Representação de Algoritmos

Sintese

Há diversas formas de representação de algoritmo. Essas formas

diferem entre si pela quantidade de detalhes de implementação que

fornecem ou, inversamente, pelo grau de abstracção que possibilitam

com a relação a implementação do algoritmo em termos de linguagem

de programação especifica.

Dentre as principais formas de representação de algoritmos destacam

se:

Descrição narrativa;

Fluxograma convencional;

Pseudocodigo (ou linguagem estruturada).

Page 17: Aula de programacao_final.dizando

2 Aula –Teórica

1.Tipos de Dados

2.Variáveis

i. Armazenamento de dados na memoria

ii. Conceito e utilidade de variáveis

iii.Definição de variáveis em algoritmo

iv.Mapeamento de variáveis na memoria

3. Expressões

i. Conceitos

ii. Operadores

iii.Tipo d expressões

iv.Avaliação de expressões

Page 18: Aula de programacao_final.dizando

Tipo de Dados

Temos três tipos de dados:

1. Dados Numéricos

2. Dados Cadeia de caracteres

3. Dados Lógicos

Page 19: Aula de programacao_final.dizando

Tipos de Dados

Os dados numéricos são divididos em duas classes: os inteiros e os reais

Dados numéricos inteiros

São aqueles que não possuem componentes decimais ou fraccionários, podendo ser positivo ou

negativo (conjunto e ).

Ex: 15 – numero inteiro positivo

- 20 – numero inteiro negativo

0 – numero inteiro

Dados numéricos reais

São aqueles que podem possuir componentes decimais ou fraccionários, podem também ser

positivo ou negativos. (conjunto ).

Ex:

15.75 – numero real positivo com duas casas decimais

-20.4 – numero real negativo com uma casa decimal

0.0 – numero real com uma casa decimal

0. - numero real com zero casa decimal

Page 20: Aula de programacao_final.dizando

Tipos de Dados

Cadeia Caracteres

O tipo cadeia de caracteres é constituído por uma sequencia de caracteres

contendo letras, dígitos e /ou símbolos especiais.

Este tipo de dados é também chamado alfanumérico, do inglês string.

Usualmente, os cadeia de caracteres são representados nos algoritmos pela

colecção de caracteres, delimitado em seu inicio e termino com o carácter aspas

(“”).

Diz-se que o dado do tipo cadeia de caracteres possui um comprimento dado pelo

numero de caracteres nele contido.

Page 21: Aula de programacao_final.dizando

Cadeia de Caracteres(Exemplos)

“QUAL ?” – cadeia de caracteres de comprimento 6

“ ” – cadeia de caracteres de comprimento 1

“qUaL ?!$” – cadeia de caracteres de comprimento 8

“1-2+3=4” – cadeia de caracteres de comprimento 7

“0” – cadeia de caracteres de comprimento 1

Tipos de Dados

Page 22: Aula de programacao_final.dizando

Dados Lógicos (booleanos)

• O tipo de dado lógico é usado para representar

dois únicos valores possíveis: Verdadeiro (V) e falso

(F).

• É comum encontrar-se em outras referencias

outros tipos de pares de valores lógicos como

sim/não, 1/0, true/false.

Page 23: Aula de programacao_final.dizando

Variáveis

Basicamente, uma variável possui

três atributos: um nome, um tipo de

dado associado a mesma e a

informação por ela guardada.

O nome da variável deve

necessariamente começar com

uma letra;

O nome da variável não pode

conter nenhum símbolo especial

excepto o sublinha (_).

Ex:

• SALARIO correcto

• 1ANO incorrecto

• A CASA incorrecto

• SAL/HORA incorrecto

• SAL_HORA correcto

• _DESCONTO incorrecto

Page 24: Aula de programacao_final.dizando

Todas as variáveis utilizadas em algoritmo devem ser definidas antes de serem

utilizadas. Isto é necessário para permitir que o compilador reserve um espaço

na memória para as mesmas.

Sintaxe:

VAR <nome_da_variavel>:<tipo_da_variavel>

VAR <nome_da_variavel>:<tipo_das_variaveis>.

A palavra chave VAR deverá estar presente sempre e estará uma única vez na

definição de um conjunto de uma ou mais variáveis;

Exemplo:

VAR NOME : caracter

IDADE: inteiro

SALARIO: real

TRABALHA : lógico

Variáveis

Page 25: Aula de programacao_final.dizando

Variáveis

Exercícios

Classifica os dados especificados abaixo de acordo com seu tipo,

assinalando com I os dados do tipo inteiro, com R os reais, com C o

caractere, com B os lógicos (booleanos), e com N aqueles para os quais

não e possível definir o tipo de dado

( ) 0.21 ( ) 1 ( ) V ( )”0” ( )1%

( ) “jose” ( ) 0.35 ( ) F ( ) T ( ) 0.001

( ) +3257 ( ) “- 0.0” ( ) “F” ( ) +3 ( )”abc”

( ) 12F ( ) C ( ) Maria ( ) +36

Page 26: Aula de programacao_final.dizando

Variáveis

Exercícios

Explique o que esta errado nos identificadores incorrectos

( ) valor ( ) _b248 ( ) nota *do *aluno ( ) a1b2c3

( ) 3X4 ( ) Maria ( ) Km/h ( ) xyz

( ) nome empresa ( ) sala_04 ( )”nota” ( ) ah!

Supondo que as variáveis NB, NA, NMAT e SX sejam utilizadas para

armazenar a nota, o nome, o numero de matricula e o sexo de um aluno,

declare-as correctamente, associando o tipo adequado ao dado que será

armazenado.

Page 27: Aula de programacao_final.dizando

O conceito de expressão em termos computacionais esta

intimamente ligado ao conceito de expressão (ou formula)

matemática, onde um conjunto de variáveis e constantes

numéricas relacionam-se por meio de operadores aritméticos

compondo uma formula que, uma vez avaliada resulta num valor.

Ex.: area = base * altura * 0,5

ou

area = (base * altura) /2

Expressões

Conceito

ComputacionalMatemática

Page 28: Aula de programacao_final.dizando

Expressões

Operadores

Operadores são elementos operacionais que actuam sobre

operandos e produzem um determinado resultado.

Temos três tipos de operadores:

Aritméticos

Relacionais

Lógicos

De acordo com o número de operandos sobre os quais os

operadores actuam, os últimos podem ser classificados em:

Binários

unários

Page 29: Aula de programacao_final.dizando

Expressões

Operadores Aritméticos

Os operadores aritméticos são utilizados para obter resultados

aritméticos. Além da adição, subtracção, multiplicação e divisão, podem

utilizar também o operador para exponenciação.

Operação Símbolo

Adição +

Subtracção –

Multiplicação *

Divisão /

Exponenciação **

Page 30: Aula de programacao_final.dizando

Expressões aritméticas:

são aquelas cujo o resultado da avaliação é do tipo

numérico, seja ele real ou inteiro. Somente o uso de operadores

aritméticos e variáveis numéricas é permitido em expressões

deste tipo.

operador tipo operação prioridade

+ binário Adição 4

- binário subtracção 4

* binário multiplicação 3

/ binário divisão 3

* * binário exponenciação 2

+ unário Manutenção de sinal 1

- unário Inversão de sinal 1

Operadores aritméticos e

sua ordem de prioridade

Expressões

Page 31: Aula de programacao_final.dizando

Expressões

Operadores Relacionais

Os operadores relacionais são utilizados para comparação de números e caracteres.

Estes operadores sempre retornam valores lógicos (Verdadeiro ou Falso/ True ou

False)

Para se estabelecer prioridade no que diz respeito a qual operação executar primeiro,

utiliza-se os parênteses.

Operador Símbolo

Igual a =

Diferente de <> Ou != ou

Maior que >

Menor que <

Maior ou igual que >=

Menor ou Igual que <=

Page 32: Aula de programacao_final.dizando

Expressões

Operadores Relacionais (Exemplo)

1. Tendo A = 7 e B = 10, temos

Expressão Resultado

A = B F

A <> B V

A > B F

A < B V

A >= B F

A <= B V

Símbolo utilizado para comparação entre

expressões.

Idade>=100

sim

não

Page 33: Aula de programacao_final.dizando

Expressões

Tipo de Expressões

Expressões lógicas: são aquelas cujo resultado da avaliação é

um valor lógico (V ou F)

operador tipo operação prioridade

OU (OR) BINARIO Disjunção 3

E (AND) BINARIO Conjunção 2

NÃO(NOT) UNARIO Negação 1

Operadores lógicos e sua relação de prioridade

E (AND): Uma expressão E é verdadeira

se todas condições forem verdadeiras.

OU/OR: Uma expressão OU é

verdadeiras se pelo menos uma das

condições for verdadeiras.

NÃO(NOT): Uma expressão NÃO

inverte o valor da expressão ou

condição.

Page 34: Aula de programacao_final.dizando

Expressões cadeia de caracteres: são aquelas cujo o resultado

da avaliação é uma cadeia de caracteres.

Os tipos de operadores existentes variam de uma linguagem de

programação para outra, não havendo uma padronização.

Ex.:

“ANG”+”OLA” e o resultado da avaliação é ANGOLA.

Expressões

Tipo de Expressões

Page 35: Aula de programacao_final.dizando

Expressões

Linearização de Expressões

Para a construção de algoritmos todas as expressões aritméticas

devem ser linearizados, ou seja, colocadas em linha.

Ex:

Matemática Computacional

(2/3+(5-3))+1

Page 36: Aula de programacao_final.dizando

Expressões

Operadores Especiais (MOD e DIV)

MOD Retorna o resto da divisão entre 2 números inteiros

DIV retorna o valor inteiro que resulta da divisão entre dois

números inteiros.

13 DIV 2 = 6

13 MOD 2 = 1

Page 37: Aula de programacao_final.dizando

Regras são essenciais para a correcta avaliação de expressões.

Operadores de maior prioridade devem ser avaliados primeiro. Em

caso de empate, a avaliação se faz da esquerda para direita.

O uso de parênteses em expressões força a avaliação das mesmas

com maior prioridade.

Os diversos tipos de operadores devem ser avaliados na seguinte

sequencia dentro de uma expressão complexa: primeiro os

aritméticos e literais; a seguir, os relacionais e, por ultimo os lógicos.

Expressões

Regras de avaliação de expressões

Page 38: Aula de programacao_final.dizando

Expressões

Operadores Aritméticos (Exemplo)

Exemplos:

a) 1+7*2**2-1=28

solução:

1+7*4-1

1+28-1

29-1

28

c) 3*(1-2)+4*2=5 (tpc)

b) 3*(2+7)/(5+1)

Solução:

3*9/(5+1)

3*9/6

27/6

4.5

Page 39: Aula de programacao_final.dizando

Expressões (Exercícios)

1. Dada a declaração de variáveis:

VAR A, B, C: inteiro

X,Y,Z: real

NOME, RUA: caractere

L1, L2: lógico

Classifique as expressões seguintes de acordo com o tipo de dado do resultado

da sua avaliação, em I (inteiro), R (real), C(caractere), B(lógico) ou N (quando

não pode defini-la).

a) ( ) A+B+C

b) ( ) A+B+Z

c) ( ) NOME + RUA

d) ( ) AB

e) ( )JAY

f) ( )NOME RUA

g) ( ) L1 OU L2

h) ( )RUA<> NOME

i) ( ) A + B/C

j) ( ) A+X/Z

k) ( ) AB=L1

l) ( )(A=B)

m) ( )X+Y/A

n) ( )X=Z/A

o) ( )L1**L2

p) ( )A+B/L2

q) ( )X<L1/RUA

Page 40: Aula de programacao_final.dizando

Para as mesmas variáveis declaradas no exercício 1, as quais são dadas os

valores seguintes:A=1, B=2, C=3, X=2.0, Y=10.0, Z=-10, L1=V, L2=F, NOME=“Pedro”, RUA=“Amilcar”

a) A+B/C

b) A+B+C

c) A/B/C

d) X**B

e) -(X**B )

f) NOME + RUA

g) L1 OU L2

h) (L2 E (NÃOL1))

Expressões(Exercícios)

Page 41: Aula de programacao_final.dizando

Comandos de entrada e

saída de dados

Page 42: Aula de programacao_final.dizando

Comandos de entrada e saída de dados

O computador não é uma máquina isolada, pois ele precisa se

comunicar com o mundo exterior através do vídeo, impressora,

teclado, discos, etc. Para realizar esta comunicação existem

comandos que permitem que informações sejam exibidas, como

também existem comandos que permitem que informações sejam

colocadas na memória do computador através do teclado do PC.

Com esta finalidade, utilizaremos os comandos de entrada e saída.

Os comandos que iremos estudar são:

LEIA

ESCREVA

Page 43: Aula de programacao_final.dizando

Comandos de entrada e saída de dados

Exemplos:

1. Escreva um algoritmo para ler um valor numérico do teclado e atribui-lo a uma variável de

tipo numérica.

Algoritmo LerNumero

VAR num: INTEIRO

INICIO

LEIA(num)

FIM

2. Escreva um algoritmo para escrever na tela uma mensagem

Algoritmo EscreveMsg

INICIO

ESCREVA(“Olá Programadores”)

FIM

Algoritmo EscreveMsg

VAR msg: caractere

INICIO

msg “Olá Programadores”

ESCREVA(msg)

FIM

ou

Page 44: Aula de programacao_final.dizando

Blocos

Um bloco pode ser definido como um conjunto

de acções com uma função definida. Ele serve

também para definir os limites nos quais as

variáveis declaradas em seu interior são

conhecidas. Para delimitar um bloco, utilizamos

os delimitadores “início” e “fim”.

Page 45: Aula de programacao_final.dizando

• Estrutura Sequencial

• Estrutura de Selecção

• Estrutura de Repetição

Estrutura de Controlo

Page 46: Aula de programacao_final.dizando

Estrutura Sequencial

A estrutura sequencial de um algoritmo corresponde ao facto de que o

conjunto de acções primitivas será executado em uma sequencia linear de cima

para baixo e da esquerda para direita.

Ex.:

ALGORITMO Exemplo_Sequencial

INICIO

acção 1

acção 2

.

.

.

acção n

FIM

Page 47: Aula de programacao_final.dizando

Estrutura SequencialEx. 2: Faça um algoritmo que calcule a média aritmética entre 3 notas

quaisquer fornecidas por um utilizador.

Sol.

ALGORITMO media

VAR N1, N2, N3, MA: REAL

INICIO

//Entrada de dados

LEIA (N1,N2,N3)

//processamento

MA (N1,N2,N3)/3

//Saída de dados

ESCREVA(MA)

FIM

Page 48: Aula de programacao_final.dizando

Estrutura de Selecção

Uma estrutura de selecção permite a escolha de um

grupo de acções (bloco) a ser executado quando

determinadas condições, representadas por expressões

lógicas ou relacionaionais são ou não satisfeitas.

As principais estruturas de decisão são:

Selecção simples

Selecção composta

Selecção encadeada

Page 49: Aula de programacao_final.dizando

Se <condição> Então

A estrutura de Selecção "Se <condição> então" normalmente vem

acompanhada de um comando, ou seja, se determinada condição for

satisfeita pelo comando “Se” então executa determinado comando.

Se <condição> Então

comando

Fim_Se

O algoritmo abaixo determina que o aluno estará aprovado somente se

a sua média for maior ou igual a 10.0.

Se (MEDIA >= 10.0) Então

ESCREVA “APROVADO”

Selecção Simples

Page 50: Aula de programacao_final.dizando

Em diagrama de blocos ficaria assim:

Sim

Não

Aprovado

Page 51: Aula de programacao_final.dizando

A estrutura de Selecção "Se … Senão", funciona exactamente como a

estrutura "Se Então", com apenas uma diferença, em "Se…Então"

somente podemos executar comandos caso a condição seja

verdadeira, diferente de "Se … Senão" pois sempre um comando será

executado independente da condição, ou seja, caso a condição seja

"verdadeira" o comando da condição será executado, caso contrário o

comando da condição "falsa" será executado

Em algoritmo ficaria assim:

Se MÉDIA >= 10.0 Então

ESCREVA “APROVADO”

Senão

ESCREVA “REPROVADO”

Selecção composta “Se <condição> Senão ”

Estrutura de Selecção

Page 52: Aula de programacao_final.dizando

Em diagrama

Não Sim

No exemplo acima está sendo executada uma condição que, se for verdadeira,

executa o comando "APROVADO", caso contrário executa o segundo comando

"REPROVADO".

Podemos também dentro de uma mesma condição testar outras condições.

Media >=10.0

ReprovadoAprovado

Se (media >= 10.0 ) então

ESCREVA “ Aprovado(a)”

Senão

ESCREVA “ Reprovado(a)”

Fim_Se

Page 53: Aula de programacao_final.dizando

Selecção encadeada

Estrutura de Selecção

Selecção encadeada ocorre quando uma

determinada acção ou bloco deve ser executado se

um grande conjunto de possibilidades ou

combinações de situações for satisfeita.

Page 54: Aula de programacao_final.dizando

Selecção Encadeada Heterogênea

Estrutura de Selecção

A estrutura de selecção encadeada heterogênea

ocorre quando não conseguimos identificar um

padrão lógico de construção em uma estrutura

de selecção encadeada.

Page 55: Aula de programacao_final.dizando

Se <condição 1>

Então

Se <condição 2>

Então

Inicio // bloco verdade 1

comando 1

comando n

Fim // bloco verdade 1

Fim_Se

Senão

Se <condição 3>

Então

Inicio // bloco verdade 2

comando 1

comando n

Fim // bloco verdade 2

Senão

Se <condição 4>

Então

Se <condição 5>

Então

comandoV // ComandoVerdade

Fim_Se

Senão

comando F // Comando Falsidade

Fim_Se

Fim_Se

Fim_Se

Page 56: Aula de programacao_final.dizando

Exemplo

Selecção encadeada Heterogênea

Dados três valores A, B, C, verificar se eles podem ser os comprimentos

dos lados de um triângulo, se forem, verificar se compõem um triangulo

equilátero, isósceles ou escaleno. Informar se não compuserem nenhum

triângulo.

Análise:

Triângulo: (A<B+C) e (B<A+C) e (C < A+B) // Todos lados iguais

Equilátero: (A=B) e (B=C)

Isósceles: (A=B) ou (A=C) ou (B=C) //dois lados iguais

Escaleno: (A<>B) e (B<>C) e (A<>C) // todos lados diferentes

Page 57: Aula de programacao_final.dizando

Selecção Encadeada Heterogênea – cont.

Algoritmo triangulo

VAR A, B, C: INTEIRO

INICIO

LEIA (A,B,C)

SE (A<B+C) ) e (B<A+C) e (C < A+B)

Então

SE (A=B) e (B=C)

Então

ESCREVA “ Triângulo Equilátero”

SENÃO

Se (A=B) ou (A=C) ou (B=C)

Então

ESCREVA “ Triângulo Isósceles”

Senão

ESCREVA “ Triângulo Escaleno”

Fim_Se

Fim_Se

SENÃO

ESCREVA “ Estes valores não formam um triângulo”

FIM_SE

FIM

Page 58: Aula de programacao_final.dizando

Selecção encadeada Homogênea

Estrutura de Selecção

Chamamos de estrutura de selecção encadeada

homogénea a construção de diversas estruturas

de Selecção encadeadas que seguem um

determinado padrão lógico.

Page 59: Aula de programacao_final.dizando

Selecção encadeada Homogênea – Se Então Se

Suponhamos que pretendemos executar um comando cmd num algoritmo

se forem satisfeitas as condições condição1, condição2, condição3. Então

temos:

Se < condição1 >

Então Se < condição2>

Então Se < condição3>

Então cmd;

Fim_Se

Fim_Se

Fim_Se

Equivalente a:

Se (<condição1> e <condição2> e <condição3> )

Então cmd;

Fim_Se

Esta construção segue um padrão:

Após cada Então existe outro Se

Não existem “Senões”

O cmd é executado somente

quando todas as condições forem

ao mesmo tempoVerdadeiras

Page 60: Aula de programacao_final.dizando

Selecção encadeada Homogênea – Se Senão Se

Suponhamos que em determinado algoritmo uma variável X possa

assumir apenas 3 valores, V1, V2 e V3, e que exista um comando

diferente que será executado para cada valor armazenado em X:

Não se trata de uma estrutura encadeada

Todas as condições serão avaliadas, portanto

ocorrerá testes desnecessário

Para reduzir a quantidade de testes será

necessário transforma-lo em estrutura encadeada

Se ( X =V1 )

Então C1

Fim_Se

Se (X =V2 )

Então C2

Fim_Se

Se (X =V3 )

Então C3

Fim_Se

Se ( X = V1 )

Então C1

Senão Se ( X =V2 )

Então C2

Senão Se ( X =V3 )

Então C3

Fim_Se

Fim_Se

Fim_Se

Page 61: Aula de programacao_final.dizando

Quando um conjunto de valores discretos precisa ser testado e acções

diferentes são associados a esses valores, estamos diante de uma selecção

encadeada homogénea do tipo Se-Senão-Se.

Esta situação é frequente na construção de algoritmos que dependem de

alternativas, logo, utilizaremos uma específica para estes casos, a selecção

de múltipla escolha.

Escolha X

caso V1: C1;

caso V2: C2;

caso V3: C3;

Fim_escolha

Selecção de multipla escolha: ESCOLHA …

CASO

Caso o conteúdo da variável X seja igual ao

valor Vn, então, o comando Cn será

executado; caso contrário, serão

inspeccionados os outros casos até ser

encontrada uma igualdade ou terminarem os

casos.

Page 62: Aula de programacao_final.dizando

Para executar um comando que possui mais de um valor em

que se verifica sua necessidade, agrupamos todos esses valores

em um único caso.

Para executar um comando que se verifica com todos os

valores, excepto os discriminados caso a caso, incluímos outra

situação: caso contrário

Escolha X

caso V1: C1;

caso V2, V3: C2;

caso V4: C3;

caso contrário: C4;

Fim_escolha

Selecção de multipla escolha – Cont.

Page 63: Aula de programacao_final.dizando

Construa um algoritmo que, tendo dados de entrada o preço de um produto e o

seu código de origem, mostre o preço junto da sua procedência. Caso o código

não seja nenhum dos especificado, o produto deve ser encarado como

importado. Siga a tabela de códigos a seguir:

Exemplo

Código de Origem Procedência

1 Cunene

2 Uíge

3 Moxico

4 Benguela

5 ou 6 Lunda Norte

7, 8 ou 9 Kuando Kubango

10 até 20 Huambo

25 até 30 Cabinda

Page 64: Aula de programacao_final.dizando

Exemplo

Algoritmo preco_origem

VAR preco: REAL

origem: INTEIRO

INICIO

leia(preco, origem)

escolha origem

caso 1: Escreva(preco, “ – produto de Cunene”)

caso 2: Escreva(preco, “ – produto de Uíge”)

caso 3: Escreva(preco, “ – produto de Moxico”)

caso 4: Escreva(preco, “ – produto de Benguela”)

caso 5,6: Escreva(preco, “ – produto de Lunda Norte”)

caso 7,8,9: Escreva(preco, “ – produto de Kuando Kubango”)

caso 10 … 20 : Escreva(preco, “ – produto de Huambo”)

caso 20 … 30 : Escreva(preco, “ – produto de Cabinda”)

caso contrário: Escreva(preco, “ – produto Importado”)

fim_escolha

FIM

Page 65: Aula de programacao_final.dizando

Exercícios

1.Escreva um algoritmo que leia três valores inteiros e diferentes e mostre-os

em ordem decrescente. Utilize para tal uma selecção encadeada.

2.Desenvolva um algoritmo que calcule as raízes de uma equação do 2ºgrau, na

forma Ax2+Bx+C, levando em consideração a existência de raízes reais.

3.Tendo dados de entrada a altura e o sexo de uma pessoa, construa um

algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas:

• Para homens: (72.7 * h) – 58;

• Para mulheres: (62.1 * h) – 44.7;

4.Faça um algoritmo que leia o ano de nascimento de uma pessoa, calcule e

mostre sua idade e, também, verifique e mostre se ela já tem idade para votar

(16 anos ou mais) e para conseguir carta de condução(18 anos ou mais).

5.Escreva um algoritmo que leia o código de um determinado produto e mostre

a sua classificação. Utilize a seguinte tabela como referencias: (exercício 2.6

pag.46)