Vous êtes sur la page 1sur 81

ISCAP

Algoritmia

Pg. 1

Ana Paula Teixeira

Os Computadores e a resoluo de Problemas

ISCAP

PROBLEMA

Fase de Resoluo do Problema

Passo difcil

Soluo em forma de Algoritmo Fase de Implementao

Soluo como um PROGRAMA de Computador


Pg. 2

Ana Paula Teixeira

Os Computadores e a resoluo de Problemas

ISCAP

importante separar as duas fases:


1. Fase de Resoluo do Problema Elaborao de um algoritmo adequado 2. Fase de Implementao Se o Algoritmo satisfaz, ento segue-se a implementao desse algoritmo numa Linguagem de Programao (Programa de Computador) Nota: Se o algoritmo for suficientemente preciso, ento, a codificao quase directa
Pg. 3

Ana Paula Teixeira

Os Computadores e a resoluo de Problemas

ISCAP

De uma forma mais detalhada, poderemos desdobrar estas duas em seis fases para a resoluo do Problema: Definio do Problema Analise do Problema (elaborao do Algoritmo) Codificao do algoritmo em linguagem de Programao Teste do Programa Implementao Documentao

Pg. 4

Ana Paula Teixeira

Os Computadores e a resoluo de Problemas

ISCAP Algoritmo

Definio do PROBLEMA

Anlise do Problema

Codificao

Programa Fonte
Compilao

Negativa

Programa Objecto
Teste do Programa
Implementao:

Avaliao dos Resultados


Pg. 5

Positiva

Colocao em Produo Formao de utilizadores Manuteno e actualizao


Ana Paula Teixeira

Algoritmizar um Problema

ISCAP

Na fase de Resoluo de um Problema, deveremos cumprir os seguintes passos:


1. Descrio do Problema (definio clara dos dados que temos, dados a ler e dados a obter) - Fazer uma aproximao descendente e proceder Modularizao Elaborao da lista de variveis ou dicionrio de dados Construo do Algoritmo (todo o Algoritmo tem um Nome. Ex: Algoritmo Soma) Teste do Algoritmo - traagem do Algoritmo para um conjunto de dados (esta fase muito importante para validao do algoritmo)

2. 3. 4.

Poder ainda ser complementado pela apresentao de um Fluxograma


Pg. 6

Ana Paula Teixeira

O que um Algoritmo?

ISCAP

Um Algoritmo uma sequncia de passos ordenados e sem ambiguidade e que levam resoluo de um problema Exemplos:
Indicaes para chegar a um determinado endereo Instrues para construo de um brinquedo Receita de culinria

Propriedades:
Passos simples e sem ambiguidades Ordem dos passos cuidadosamente definida Passos efectivos - resolver um problema num n finito de passos

Na representao de um Algoritmo, usamos uma linguagem estruturada, muito prxima da natural Pseudo Cdigo
Pg. 7

Ana Paula Teixeira

Principais blocos do Algoritmo

ISCAP

Os algoritmos so formados por conjuntos de passos.


Cada passo numerado e apresenta uma breve descrio da sua funcionalidade

Tipicamente poderemos considerar que um Algoritmo composto pelos seguintes Blocos: 1.Definio de Dados 2.Inicializao de variveis 3. Leitura de Dados 4. Tratamento dos Dados 5. Apresentao de Resultado
Pg. 8

Ana Paula Teixeira

Exemplos de Anlise de Problemas Ex1: Calcular a dcima parte de um valor lido 1. Ler um Nmero 2. Dividir o Nmero lido por 10 3. Escrever o n lido e o resultado Obtido Ex2: Ler apelido e nome e apresentar a sua juno 1. Ler APELIDO 2. Ler NOME 3. Concatenar NOME + + APELIDO 4. Escrever o resultado obtido em 3
Pg. 9

ISCAP

Ana Paula Teixeira

Exemplos de Anlise de Problemas

ISCAP

Ex3: Pretende-se calcular o Preo de Venda (PV) de um artigo, sabendo que este o resultado da soma de: custos de produo (CP), custos de armazenagem (CA) e custos de Mat.Primas (CMP), acrescido de 20% de lucro PV = CP + CA +
CMP + 20% *(CP+CA+CMP) Verso 2 1. Ler CP, CA, CMP 2. Somar os 3 valores 3. Calcular 20% do valor obtido 4. Somar os valores obtidos em 2 e 3 5. Apresentar resultados
Ana Paula Teixeira

Verso 1 1. Ler CP, CA, CMP 2. Calcular valor de PV: PV = CP + CA + CMP +0.2 * (CP+CA+CMP) 3. Apresentar resultados

Pg. 10

Exemplos de Anlise de Problemas

ISCAP

Ex4: Dada um valor em Escudos, converter para Euros. 1. Atribuir a FACTOR um valor 200.482 2. Ler o Valor em Escudos (VAL_ESC) 3. Converter (VAL_EURO =VAL_ESC/FACTOR) 4. Apresentar resultados 5. Terminar

Pg. 11

Ana Paula Teixeira

Exemplos de Anlise de Problemas

ISCAP

Ex5: Dada uma lista de 10 ns, pretende-se determinar o maior valor lido 1. Atribuir a MAXIMO um valor muito pequenino () 2. Repetir 10 vezes:
Ler NUMERO Se o NUMERO lido for superior a MAXIMO Ento MAXIMO toma o valor do NUMERO

3. Apresentar resultados

Pg. 12

Ana Paula Teixeira

Tipos de Dados Dados Simples Numricos


Podero ainda ser de diferentes tipos (Inteiros; Reais)

ISCAP

Dados tipo cadeia de caracteres (Alfanumricos)


Exemplo Nome = ANA

Dados Lgicos
Utilizam-se para estabelecimento de condies

Estruturas de Dados bsicas Vectores X(i), Matrizes Y(a,b) Estruturas Complexas Ficheiros Bases de dados
Pg. 13

Ana Paula Teixeira

Operaes Simbologia utilizada


Adio Subtraco Diviso Multiplicao Potenciao Parentizao Potenciao, raiz quadrada Multiplicao, Diviso Adio, Subtraco + / * ^ 3+2 9-5 15/3 24*5 3^2

ISCAP

(5) (4) (5) (120) (9)

Prioridade das operaes

Pg. 14

Ana Paula Teixeira

Variveis

ISCAP

Os dados necessrios ao processamento de um Programa so armazenados em posies de da memria identificadas por um nome - a Varivel. Quando definimos a varivel, estamos a reservar um endereo de memria onde ir ser guardado o valor dessa mesma varivel. Este valor mutvel, consoante as operaes que vo sendo feitas sobre ele. Exemplos: Y -5 X2 Z0 Y (X+Y) /2 X Y *2 Z Y ^2
Pg. 15

Ana Paula Teixeira

Exerccios

ISCAP

1. Sejam A,B e C reais e I, J e K inteiros A = 4.0 B = 6.0 I= 3 Qual o valor das seguintes Expresses? C A * B -I K B/4 C B/A+1.5 2.Transforme em expresses de computador:
b c e d f a+
b b 2 4ac 2a

( a + b)

c d

3. Em Quais dos seguintes pares importante a ordem das operaes? XY Z Y X Z ZY YZ Z X Y X XY


Pg. 16

Ana Paula Teixeira

Linguagem Algortmica - Instrues


Declarao de variveis N inteiro; R real; C caractere; B booleano; D data Inicializao de variveis N!0 Estruturas sequenciais Leia("Nome", C) Escreva("Nome",C) R ! R *2 + 4/N Estruturas condicionais Se (cond) ento aco1 seno aco2 Fimse

ISCAP

Estruturas Repetitivas N. finito de passos Para i = 1 at n (passo p) Aco Prximo i Controlado por uma condio Enquanto (cond) aces Fim Enquanto Controlado por vrias condies Enquanto (cond e /ou / no cond2) Aces Fim Enquanto

Pg. 17

Ana Paula Teixeira

Fluxogramas - Simbologia

ISCAP

Incio/Fim

Deciso

Processo Documento

Entrada/Sada de Dados

Conector Fluxo

Pg. 18

Ana Paula Teixeira

Tipos de Estruturas de Programao


Sequencial

ISCAP

Conjunto de instrues que visam atingir um objectivo

Condicional
As instrues a executar dependem de pelo menos uma condio lgica que ter que ser avaliada

Repetitiva
Conjunto de instrues que se iro repetir at que seja atingida uma determinada condio. O n. de vezes a repetir as operaes pode ser determinado antes ou durante a execuo.
Pg. 19

Ana Paula Teixeira

Estrutura de Controlo Sequencial

ISCAP

Algoritmo Nome Objectivo: Inicio Escrever o contedo de uma 1. [Declarao e Inicializao de Variveis] varivel Nome string anteriormente inicializada Nome Ana 2. [Apresentao de Resultados]
ESCREVA (Nome)

Fim

Pg. 20

Ana Paula Teixeira

Lista de e Variveis
Algoritmo Nome Nome NOME Tipo Alfa Descrio Nome a escrever

ISCAP

Pg. 21

Ana Paula Teixeira

Inicializar varivel; Escrever o s/valor


Principais Conceitos: Inicializar Escrever

ISCAP

INICIO

NOME ANA

NOME

FIM
Pg. 22

Ana Paula Teixeira

Traagem
Algoritmo Nome Passo 1. 2. Nome Ana Ana Sada

ISCAP

Pg. 23

Ana Paula Teixeira

Estrutura de Controlo Sequencial


Algoritmo Soma
Inicio 1. [Declarao e Inicializao de Variveis] X real, Y real, Soma real Soma ! 0 2. [Leitura de variveis]
LEIA (X) LEIA (Y)

ISCAP Objectivo:

Ler 2 nmero e escrever o valor da soma

3 [Processamento - clculo da soma] SOMA X + Y 4. [apresentao de Resultados]


ESCREVA (A soma de X, com Y SOMA)

Fim
Pg. 24

Ana Paula Teixeira

Lista de e Variveis
Algoritmo Nome Nome X Y Soma Tipo Real Real Real Descrio 1 Numero lido 2 Numero lido

ISCAP

Resulltado da soma dos 2 ns lidos

Pg. 25

Ana Paula Teixeira

Ler 2 Ns e Escrever a sua Soma


Principais Conceitos: Inicializar Ler Calcular Escrever INICIO X0 Y0 Soma 0 X, Y

ISCAP

Soma X + Y

Soma

FIM
Pg. 26

Ana Paula Teixeira

Traagem
Algoritmo Soma Dados para teste: X=56, Y=33 Passo 1. 2. 3. 4. 5.
Pg. 27

ISCAP

X 0 56

Y 0 33

SOMA 0

Sada

89
A soma de 56 com 33 89

Fim
Ana Paula Teixeira

Exerccios

ISCAP

Elabore um Algoritmo estruturado para os exemplos 1, 2 , 3 e 4 vistos anteriormente


Dever apresentar A lista de variveis Algoritmo e traagem para os seguintes valores: Exemplo 1 " Dados: 4500 Exemplo 2 " Dados: Cunha, Andr Exemplo 3 " Dados: 400; 600; 700; 350 Exemplo 4 " Dados: 1000
Pg. 28

Ana Paula Teixeira

Exercicios

ISCAP

Escreva um algoritmo que leia uma temperatura em graus Celsius e converta para graus Farneith. Faa a traagem para 37.5 Escreva um algoritmo, que dados os valores dos lados de um rectngulo, calcule a sua rea e o seu permetro.. Faa a traagem para L1=5, L2=8. Escreva um algoritmo, que leia as notas de um aluno (5 disciplinas) e calcule a mdia da turma

Pg. 29

Ana Paula Teixeira

Estrutura de Controlo Condicional

ISCAP

Se Condio Ento Processo para Condio Verdadeira Seno Processo para Condio Falsa Fim se Exemplo (Ler um nmero e verificar a sua paridade)
Se Nmero/2 = Int (Nmero/2) Ento Escreva (O nmero , Numero par!) Seno Escreva (O nmero , Numero impar!) Fim se
Pg. 30

Ana Paula Teixeira

Estrutura de Controlo Condicional


Algoritmo Positividade (verso 1.0) Inicio
1. [Declarao de Variveis] Numero real, Mensagem caractere 2. [Leitura do Nmero]
LEIA (Numero)

ISCAP Objectivo: Ler 1 nmero e escrever se positivo ou no

3 [Verificao da positividade e apresentao de resultados] Se Numero > 0 Ento ESCREVA ( O nmero , Numero , positivo) Seno ESCREVA ( O nmero , Numero , no positivo) Fim se Fim
Pg. 31

Ana Paula Teixeira

Estrutura de Controlo Condicional


Algoritmo Positividade (verso 2.0) Inicio
1. [Declarao de Variveis] Numero real, Mensagem caractere 2. [Leitura do Nmero]
LEIA (Numero)

ISCAP Objectivo: Ler 1 nmero e escrever se positivo ou no

3 [Processamento - Verificao da positividade] Se Numero > 0 Ento Mensagem positivo Seno Mensagem no positivo Fim se 4. [Apresentao de Resultados]
ESCREVA ( O nmero , Numero, , Mensagem)
Pg. 32

Fim

Ana Paula Teixeira

Lista de e Variveis
Algoritmo Nome

ISCAP

Nome Numero
Mensagem

Tipo Real Alfa

Descrio Numero lido Descrio da positividade do numero lido

Pg. 33

Ana Paula Teixeira

Ler um N e Escrever a sua Positividade (verso 1)


Principais Conceitos: Alternativa (Se;Ento;Seno) Numero INICIO

ISCAP

No

Numero > 0

Sim

No Positivo

Positivo

FIM
Pg. 34

Ana Paula Teixeira

Traagem
Passo NUMERO MENSAGEM NUMERO>0

ISCAP

Algoritmo Positividade (verso 1.0) (Dados para teste:Nmero =-7


Sada

1. 2. 3.

0 -7 Falso no positivo
O nmero -7 no positivo

4. 5.
Pg. 35

Fim
Ana Paula Teixeira

Traagem

ISCAP

Algoritmo Positividade (verso 1.0) Dados para teste:Nmero = 34


Passo NUMERO MENSAGEM NUMERO>0 Sada

1. 2. 3.

0 34 Verdadeiro positivo
O nmero 34 positivo

4. 5.
Pg. 36

Fim
Ana Paula Teixeira

Traagem

ISCAP

Algoritmo Positividade (verso 1.0) Dados para teste:Nmero = 0


Passo NUMERO MENSAGEM NUMERO>0 Sada

1. 2. 3.

0 0 Falso no positivo
O nmero 0 no positivo

4. 5.
Pg. 37

Fim
Ana Paula Teixeira

Estrutura de Controlo Condicional composta


Se Condio1 Ento Processo p/ Condio1 Verdadeira Seno Se Condio2 Ento Processo p/ Condio2 Verdadeira Seno Processo p/ Condio2 Falsa Fim se Fim se

ISCAP

Exemplo (Ler um nmero e verificar a sua positividade)


Se Numero >0 Ento Seno Escreva ( Numero positivo!) Se Num < 0 Ento Escreva (Numero negativo!) Seno Escreva (Numero nulo!) Fim se Fim se
Pg. 38

Ana Paula Teixeira

Estrutura de Controlo Condicional composta Algoritmo Positividade (verso 3.0)


Inicio 1. [Declarao de Variveis] Mensagem caractere, Numero real 2. [Leitura do Nmero]
LEIA (Numero)

ISCAP Objectivo:

Ler 1 nmero e indicar a sua positividade

3 [Processamento - Verificao da positividade]


Se Numero > 0 Ento Mensagem positivo Seno Se Numero = 0 Ento Mensagem nulo Seno Mensagem negativo Fim se
Fim se
Pg. 39

....

Ana Paula Teixeira

Lista de e Variveis
Algoritmo Nome

ISCAP

Nome Numero Mensagem

Tipo Real Alfa

Descrio Numero lido Descrio da positividade do numero lido

Pg. 40

Ana Paula Teixeira

Ler um N e Escrever a sua Positividade (verso 3)


Principais Conceitos: Alternativa composta (Se;Ento;Seno(Se...))
No

ISCAP

INICIO Numero
Sim

Numero > 0

Numero = 0
Sim No

N Positivo

N Nulo

N Negativo

FIM
Pg. 41

Ana Paula Teixeira

Traagem

ISCAP

Algoritmo Positividade (verso 3.0) Dados para teste:Nmero = -7


Passo NUMERO MENSAGEM NUMERO NUMERO
>0 =0 Sada

1. 2. 3.

0 -7 Falso
Falso

negativo 4.
Pg. 42

O nmero -7 negativo
Ana Paula Teixeira

Traagem

ISCAP

Algoritmo Positividade (verso 3.0) Dados para teste:Nmero = 34


Passo NUMERO MENSAGEM NUMERO NUMERO
>0 =0 Sada

1. 2. 3.

0 34
Verdadeiro

positivo 4.
Pg. 43

O nmero 34 positivo
Ana Paula Teixeira

Traagem

ISCAP

Algoritmo Positividade (verso 3.0) Dados para teste:Nmero = 0


Passo NUMERO MENSAGEM NUMERO NUMERO=
>0 0 Sada

1. 2. 3.

0 0 Falso
Verdadeiro

nulo 4.
Pg. 44

O nmero 0 nulo
Ana Paula Teixeira

Exerccios

ISCAP

Escreva um algoritmo que leia um nmero e verifique se divisvel por 5e 7 simultaneamente.Faa a traagem para os n.s 15 e 35. Escreva um algoritmo que calcule a mdia das idades de uma populao de 15 pessoas e escreva uma mensagem de acordo com a situao (Mdia < 25 Jovem, Mdia <40 Adulta, outras Idosa. Faa a traagem para (12,8,2,6,5,18,54,65,5,10,48,47,7,4,18,17,12,13) Altere o Algoritmo anterior criando mais uma classe de classificaes: Muito Jovem, se Mdia < 14 .

Pg. 45

Ana Paula Teixeira

Estrutura de Repetio Enquanto...


1.1. [Inicializar varivel de controlo de ciclo]

ISCAP

Enquanto Condio
1.2. [Operaes a realizar dentro do ciclo] [Leituras, clculos,...] 1.3. [Actualizao da varivel de Controlo do Ciclo] 1.4. [Terminar ciclo ]

Fim Enquanto
Ana Paula Teixeira

Pg. 46

Estrutura de Repetio Para I ...


Para I = X1 at Xn
[Operaes a realizar dentro do ciclo - [Leituras clculos,...]

ISCAP

Prximo I

Exemplo: Para I = 1 at 10
Ler (Numero) Soma Soma + Numero

Proximo I
Escrever (Soma)
Pg. 47

Ana Paula Teixeira

Estrutura de Repetio Seleccionar caso

ISCAP

Seleccionar Caso Opo Caso Opo = 1 procedimento A Caso Opo = 2 procedimento B Caso Seno procedimento ERRO Fim Seleccionar

Exemplo: Seleccionar Caso Opo Caso Opo = 1 ADICIONAR Caso Opo = 2 ALTERAR Caso Seno ERRO Fim Seleccionar

Pg. 48

Ana Paula Teixeira

Estruturas de Repetio
Algoritmo Soma de 50 nmero
Inicio 1. [Declarao e inicializao de Variveis] Numero real, Soma real, contador inteiro, Soma 0 2. [Ciclo de Processa/ -Leitura dos ns e clculo da soma] 2.1. [Inicializar varivel de controlo de ciclo]
Contador 0; Enquanto Contador < 50 2.2. [Ler nmero] Leia( Numero] [Actualizao do valor da Soma] Soma Soma + Numero 2.3. [Actualizao da varivel de Controlo do Ciclo] Contador Contador + 1 2.4.. [Terminar ciclo ] Fim Enquanto 3. [Apresentao de Resultados] Escreva(a soma dos 50 ns lidos , Soma)

ISCAP Objectivo: Ler 50 nmeros e escrever o valor da sua soma

Fim
Pg. 49

Ana Paula Teixeira

Estruturas de Repetio
Algoritmo Mximo
Inicio
1. [Declarao e inicializao de Variveis] Maximo real, Numero real, ; Contador inteiro Maximo - 999999999 ; Contador 0
2. [Processamento - Determinao do mximo] 2.1. [Ciclo de Repetio]

ISCAP Objectivo: Ler 10 nmeros escrever o mximo valor lido

Enquanto Contador < 10


2.2. [Leitura do Nmero]

LEIA (Numero)
2.3. [Verificao de valor]

Se Numero > Maximo


Ento Maximo Numero

Fim se
2.4. [Actualizao da varivel de Controlo do Ciclo]

Contador Contador + 1
2.5. [Terminar ciclo ]

Fim Enquanto 3. [Apresentao de Resultados] ESCREVA ( O mximo valor lido foi , Maximo) Fim
Ana Paula Teixeira

Pg. 50

Lista de e Variveis
Algoritmo Mximo
Nome Nmero Mximo Tipo Real Real Descrio Numero lido Mximo valor encontrado

ISCAP

Contador

Inteiro

Varivel de controlo do ciclo - conta o n de repeties do ciclo

Pg. 51

Ana Paula Teixeira

Ler 10 ns e escrever valor do Maior


Principais Conceitos: Ciclo de Repetio Enquanto Cond Sim Numero Numero >Mximo Sim Mximo=Numero No INICIO Mximo - Numero 0 Contador 0 Contador <10 No

ISCAP

Mximo

FIM Contador=Contador+1
Pg. 52

Ana Paula Teixeira

Exerccios

ISCAP

1. Escreva um algoritmo que leia uma lista de valores e determine o Mximo, o Mnimo e a Soma desses valores. A lista termina quando o valor lido for 999999. 2.1. Altere o algoritmo do ponto 1. de modo a que aps a leitura de uma lista de valores seja perguntado ao utilizador se este pretende ler uma nova lista. 2.2. Altere o algoritmo do ponto 1. de modo a que aps a leitura de um valor e seu processamento, seja perguntado ao utilizador se este pretende continuar ou no. 3. Escreva um algoritmo que calcule as razes reais de uma equao de 2 grau. Aps a execuo para uma equao dever ser perguntado ao utilizador se este pretende continuar ou no.
Ana Paula Teixeira

Pg. 53

Exerccios

ISCAP

4. Escreva um algoritmo que leia uma Lista de nmeros cujo tamanho determinado pelo utilizador e calcule o mximo n lido. 5. Escreva um algoritmo que leia o nome da disciplina e as notas de um aluno,calcule a mdia e determine a sua aprovao ou no no Curso. O Aluno considera-se aprovado se a sua mdia for no inferior a 12 valores. A leitura termina quando o nome lido for FIM O algoritmo deve permitir o clculo para vrios alunos. 6. Escreva um algoritmo que permita calcular o total da despesa feita num supermercado. Dever ler o nome dos itens, a quantidade e o preo unitrio. A leitura para cada cliente termina quando for lido o nome FIM.Deve permitir o clculo para vrios clientes.
Pg. 54

Ana Paula Teixeira

Exerccios

ISCAP

7. A empresa XPTO, SA distribuidora de componentes para automveis, pretende fazer a anlise de vendas do ano anterior. Para cada venda efectuada, existe informao seguinte: Nome do Cliente Zona Geogrfica (1- Norte; 2 - Sul; 3 - Centro) Famlia do Produto (1- Pneus; 2 - Jantes) Tipo de veculo (1- Ligeiros; 2 - Pesados) Quantidade, Valor Total As estatsticas pretendidas, so as seguintes: a) Valor Total de Vendas por Zona e Total Geral b) Total por Famlia de Produtos (Quantidade e Valor) c) Total por Tipo de veculo (Quantidade e Valor) Escreva um algoritmo para resoluo deste problema.
Pg. 55

Ana Paula Teixeira

Exerccios

ISCAP

8. Considere uma Empresa que comercializa dois tipos de Produtos - A e B, para os quais se conhece o preo unitrio e a quantidade existente em stock. Tipo de Produto Preo Quantidade A 500 2000 B 300 5000 Para cada nova encomenda necessrio conhecer os seguintes dados: N. Cliente; Tipo Produto; Quantidade Encomendada Escreva um algoritmo que permita fazer a gesto das Encomendas desta Empresa.

Pg. 56

Ana Paula Teixeira

Exerccios

ISCAP

a) Pretende-se que para cada encomenda seja verificada a quantidade existente para o Tipo de Produto, e se : #a quantidade for Zero (0), emita uma mensagem No h stock para satisfazer a Encomenda; #caso a quantidade existente seja inferior solicitada, ento a encomenda ser satisfeita parcialmente, dando tambm lugar emisso de uma mensagem: Satisfao parcial da Encomenda Na satisfao da Encomenda, dever actualizar sempre o Stock restante para o Tipo de Produto. Todas as Facturas devero referir : # O Cliente, o tipo de Produto, a Quantidade satisfeita (quer seja total ou parcial) e o Valor a pagar b) Apresente um resumo final que informe das quantidades e valores facturados para cada Tipo de Produto, bem como os totais gerais.
Pg. 57

Ana Paula Teixeira

ISCAP

Algoritmia/V.B.A.

Pg. 58

Ana Paula Teixeira

Programao em VBA

ISCAP

O que uma macro ? Uma macro uma sequncia de comandos. As macros podem ser utilizadas para automatizar tarefas repetitivas que envolvem a execuo de vrios comandos por parte do utilizador. O que o VBA - Visual Basic for Applications ? O VBA uma linguagem de programao integrada no Excel e noutras aplicaes da Microsoft. As macros criadas em Excel so constitudas por instrues de VBA.

Pg. 59

Ana Paula Teixeira

Programao em VBA

ISCAP

Procedimentos Os procedimentos so mdulos de cdigo do Visual Basic que executam uma determinada aco. Uma macro um exemplo de um procedimento Existem dois tipos bsicos de procedimentos em VBA:
Procedimentos que retornam ou devolvem um valor designados por Function Procedimentos que no retornam um valor designados por Sub

Estrutura de um procedimento:
Instrues de incio e fim Nome Argumentos Cdigo do VBA Valor devolvido (apenas nos procedimentos tipo Function) Function
Ana Paula Teixeira

Pg. 60

Programao em VBA
Function Soma (a, b) Soma = a + b End Function

ISCAP

Exemplo de procedimento function (retorna valor)

Exemplo de procedimento sub (no retorna valor)


Sub SomaValores() A=inputBox(Nmero ? ) Q=A^2 MsgBox (Q) End Sub Obs.: A instruo InputBox atribui variavel A o valor introduzido A instruo MsgBox cria uma caixa de sada com o valor de Q
Pg. 61

Ana Paula Teixeira

Linguagem Algortmica / VBA


[Declarao de variveis] N inteiro; R real; C caractere; B booleano; D data [Inicializao de variveis ] N!0 [Estruturas sequenciais] Leia("Nome", C) Escreva("Nome",C) R ! R *2 + 4/N [Estruturas condicionais] Se (cond) ento aco1 seno aco2 Fimse
Pg. 62

ISCAP

Declarao de variveis Dim N as intiger, Dim R as long, Dim C as string; Dim B as boolean, D as date Inicializao de variveis N=0 Estruturas sequenciais C = InputBox ("Nome") MsgBox ("Nome & C) R = R *2 + 4/N Estruturas condicionais If (cond) then aco1 else aco2 Endif
Ana Paula Teixeira

Linguagem Algortmica / VBA


[Estruturas Repetitivas N. finito de passos ] Para i = 1 at n (passo p) Aces Prximo i [Controlado p/1 condio] Enquanto (cond) aces Fim Enquanto

ISCAP

Estruturas Repetitivas N. finito de passos For i = 1 to n (step p) Aces Next i Controlado p/1 condio While (cond) aces Wend

[Controlado por + condies] Controlado por + condies Enquanto (cond e/ou cond2) While (cond and /or cond2) Aces Aces Fim Enquanto Fim Enquanto

Pg. 63

Ana Paula Teixeira

Algoritmia / V.B.A.(exemplos)
Pseudo-Cdigo Visual Basic
$ Inicio do Programa Sub Nome() $ Declarao de Variavis $ Inicio do Programa Algoritmo Nome INICIO $ Declarao de Variavis NUMERO inteiro(real) DATANASC data NOME caractere $ Expresses SOMA ! A + B $ Leitura LEIA ( NUMERO) LEIA ( Nome Cliente?, NOME) $ Fim do Programa SADA
Pg. 64

ISCAP

Dim NUMERO As Integer (Double, Long, Currency)

Dim DataNasc As Date Dim NOME As String $ Expresses SOMA = A + B $ Leitura NUMERO = InputBox (Numero?) NOME = InputBox ( Nome Cliente ) $ Fim do Programa End Sub
Ana Paula Teixeira

Algoritmia / V.B.A.(exemplos)
Pseudo-Cdigo Visual Basic

ISCAP

$ Sada de Dados $ Sada de Dados ESCREVA ( NUMERO) MsgBox Numero & NUMERO ESCREVA ( A Soma , SOMA) MsgBox A Soma & SOMA $ Estrutura Condicional SE..ENTO $ Estrutura Condicional SE...ENTO Se NUMERO < 0 If NUMERO < 0 Then Ento ESCREVA ( Negativo) MsgBox Numero Negativo Fim Se End If $ Estr.Cond. SE.... ENTO....SENO $ Estr.Cond. SE.... ENTO....SENO Se NUMERO < 0 If NUMERO < 0 Then Ento ESCREVA ( Negativo) MsgBox Nmero Negativo else Seno ESCREVA (NoNegativo) MsgBox Nmero no Negativo Fim Se End If

Pg. 65

Ana Paula Teixeira

Algoritmia / V.B.A.(exemplos)
Pseudo-Cdigo
$ Estr.Cond. SE.... ENTO....SENO SE...

ISCAP

Visual Basic
$ Estr.Cond.SE.... ENTO....SENO SE... If N = 0 Then MsgBox ("Nulo") Else
If N < 0 Then MsgBox ("Negativo") Else MsgBox ("Positivo")

Se N =0 Ento ESCREVA(Nulo) Seno Se N < 0 Ento ESCREVA (Negativo) Seno ESCREVA (Positivo) Fim se Fim Se
$ Ciclo Enquanto <Cond> N !0 Enquanto N < = 5 ESCREVA (N) N <-- N + 1 Fim Enquanto
Pg. 66

End If End If $ Ciclo Enquanto <Cond> Repetir N=0 While N < = 5 MsgBox N N=N+1 Wend
Ana Paula Teixeira

Algoritmia / V.B.A.(exemplos)
Pseudo-Cdigo
$ Para ... at <Condio> Para I = 1 at 5passo 1 ESCREVA (N) Prximo I $ Seleccionar caso <Condio> Seleccionar Caso Opo Caso Opo = 1 ADICIONAR Caso Opo = 2 ALTERAR Caso Seno ERRO Fim Seleccionar
Pg. 67

ISCAP

Visual Basic
$ Para ... at <Condio> For I = 1 to 5 step 1 MsgBox N Next I $ Seleccionar caso <Condio> Select Case Opo Case Opo = 1 ADICIONAR Case Opo = 2 ALTERAR Case Else ERRO End Case
Ana Paula Teixeira

Tipos de Dados em VBA (mais utilizados)

ISCAP

Boolean (0 e 1) Integer (-31.768 a 32.767) Long (-2.147.483.648 a 2.147.483.647) Double (-1,79769313486231E308 a 1,79769313486232E308) Currency(-922.337.203.685.477,5808 a 922.337.203.685.477,5807) Date (de 1 de Janeiro de 100 a 31 de Dezembro de 9999) String (de 0 a aproximadamente 2 bilhes)

Pg. 68

Ana Paula Teixeira

Exemplos em VBA
Escreve o valor de uma varivel
Sub Escreve() Dim nome As String * 20 nome = "PAULA" MsgBox nome End Sub

ISCAP

Soma de 2 Numeros
Sub Soma() Dim numero1 As Integer, numero2 As Integer, Total As double numero1 = InputBox("Escreva o Primeiro Nmero") numero2 = InputBox("Escreva o Segundo Nmero") Total = numero1 + numero2 MsgBox "A Soma de " & numero1 & " com " & numero2 & " : " & Total End Sub
Pg. 69

Ana Paula Teixeira

Soma n Numeros - Fim quando N lido =0

ISCAP

Sub Soma_n() Dim Numero as Integer. Dim Lidos as integer, Dim Total as double Total = 0 Lidos = 0 Numero =InputBox("Escreva o Nmero") While Numero <> 0 Total = Total + Numero Lidos = Lidos + 1 Numero = InputBox("Escreva o Nmero ( 0 p/ Terminar )") Wend MsgBox ("A Soma dos " & Lidos & " nmeros lidos " & " " & Total) End Sub
Pg. 70

Ana Paula Teixeira

Sequncias de Somas de Nmeros


(cada sequncia termina em 0)

ISCAP

Sub Seq_Soma_n() Dim Continuar as string, Total as double, Numero as integer, Contador as integer Continuar = SIM While Continuar = SIM Total = 0 Numero = 1 Contador = -1 While Numero <> 0 Numero = InputBox("Escreva o Nmero ( 0 para Terminar )") Contador = Contador + 1 Total = Total + Numero Wend MsgBox "A Soma dos " & Contador & " nmeros & " : " & Total Continuar = InputBox("Para soma de nova sequncia, escreva SIM' ") Wend End Sub
Pg. 71

Ana Paula Teixeira

Sequencias de Mximo de 3 Numeros


Sub Maximo_3() Continuar = 1 While Continuar = 1 Maximo = -9999999 Numero = 0 Contador = 0 While Contador <3 Numero = InputBox("Escreva o Nmero") If Maximo < Numero Then Maximo = Numero End If Contador= Contador +1 Wend MsgBox " O Mximo valor lido foi " & Maximo Continuar = InputBox("Para nova sequncia, escreva '1' ") Wend End Sub
Pg. 72

ISCAP

Ana Paula Teixeira

Sequencias de Mximo de Numeros


( o utilizador que define o fim da lista)
Sub Mximo_n() Continuar = SIM While Continuar = SIM Maximo = -99999999 Seguinte = 1 Numero = 0 While Seguinte = 1 Numero = InputBox("Escreva o Nmero") If Maximo < Numero Then Maximo = Numero End If Seguinte = InputBox(Para mais ns para esta sequncia escreva '1' ") Wend MsgBox "O Mximo valor lido foi " & Maximo Continuar = InputBox("Para soma de nova sequncia, escreva SIM' ") Wend End Sub
Pg. 73

ISCAP

Ana Paula Teixeira

Factorial de um Nmero

ISCAP

Pretende-se construo de um Programa, que leia um nmero e calcule o seu Factorial. Aps a apresentao do resultado, dever perguntar ao utilizador se pretende continuar
Notas: S so vlidos nmeros Positivos O Factorial de 0 1

N!= N* (N-1)* (N-2)* (....) * 2

Pg. 74

Ana Paula Teixeira

Factorial de um Nmero (verso 1)


Sub Factorial() Dim Numero As Integer, Cont As Integer, Factorial As Double, continuar As String continuar = "SIM" While continuar = "SIM" Factorial = 1 Numero = InputBox("Escreva o Nmero") Cont = Numero If Numero > 2 Then While Cont > 1 Factorial = Factorial * Cont Cont = Cont - 1 Wend Else: Factorial = 1 End If
Pg. 75

ISCAP

If Numero < 0 Then MsgBox ("O nmero dever ser Positivo!!!") Else: MsgBox ("O Factorial de " & Numero & " " & Factorial) End If continuar = InputBox("Para soma de nova sequncia, escreva SIM' ") Wend End Sub

Ana Paula Teixeira

Factorial de um Nmero (verso 2)


Sub Factorial_1() Dim Numero As Integer, Cont As Integer, Factorial As Double, continuar As String continuar = "SIM" While continuar = "SIM" Factorial = 1 Numero = InputBox("Escreva o N.") Cont = Numero If Numero >= 0 Then If Numero >= 2 Then While Cont > 1 Factorial = Factorial * Cont Cont = Cont - 1 Wend Else: Factorial = 1 End If
Pg. 76

ISCAP

MsgBox ("O Factorial de " & Numero & " " & Factorial) Else: MsgBox ("O nmero dever ser Positivo!!!") End If continuar = InputBox("Para soma de nova sequncia, escreva SIM' ") Wend End Sub

Ana Paula Teixeira

Parque de Estacionamento

ISCAP

Pretende-se construo de um Programa, que leia as Horas de Entrada e de Sada num parque de estacionamento e calcule o valor a pagar. A tabela de preos a seguinte:

1. hora : 120 2. hora : 150 seguintes: 180


Se a permanncia for inferior a 1 hora, ser pago o valor correspondente a 1 hora O tempo de permanncia arredondado para a hora inferior, caso a parte fraccionria seja inferior a 0.05
Pg. 77

Ana Paula Teixeira

Parque de Estacionamento
Sub parque() Dim Hora_E As Double, Hora_S As Double, Tempo As Double Dim Custo As Double, continuar As String continuar = "SIM" While continuar = "SIM" Hora_E = InputBox("Hora de Entrada") Hora_S = InputBox(" Hora de Sada") Tempo = Hora_S - Hora_E If Tempo < 1 Then Tempo = 1
ElseIf Tempo - Int(Tempo) <= 0.05 Then

ISCAP

If Tempo = 1 Then Valor = 120 ElseIf Tempo = 2 Then Valor = 270 Else: Valor = (Tempo - 2) * 180 + 270 End If MsgBox ("O valor a pagar " & Valor) continuar = InputBox("Para soma de nova sequncia, escreva SIM' ") Wend End Sub

Tempo = Int(Tempo) Else: Tempo = Int(Tempo) + 1 End If


Ana Paula Teixeira

Pg. 78

Funo Preo Final

ISCAP

Objectivo:Escrever uma Funo que dado o Preo de um Artigo e a % de desconto, calcule o valor a pagar.

Function PRECO_FINAL(Valor, Desconto) Preco_Final = Valor * (1-Desconto/100) End Function


Objectivo:Escrever uma Funo que dado um Apelido e um Nome apresente o nome Completo

Function NomeFinal(Apelido, Nome) NomeFinal = Nome + " "+ Apelido End Function
Pg. 79

Ana Paula Teixeira

Funo IVA
Function IVA(Valor, Codigo) If Codigo = 0 Then IVA = Valor ElseIf Codigo = 1 Then IVA = Valor * 0.05 ElseIf Codigo = 2 Then IVA = Valor * 0.12 ElseIf Codigo = 3 Then IVA = Valor * 0.17 ElseIf Codigo = 4 Then IVA = Valor * 0.3 End If End Function
Pg. 80

ISCAP Objectivo: Escrever uma Funo que dado um valor e o cdigo de IVA, calcule o valor do IVA a pagar

Ana Paula Teixeira

ISCAP

Pg. 81

Ana Paula Teixeira

Vous aimerez peut-être aussi