Sumário
Algoritmia e Programação
Vitor Pereira




Conceitos sobre a unidade curricular e a
licenciatura
Introdução à programação de computadores
Algoritmos diversos
O Visual Basic e o Visual Studio
Vitor Pereira [[email protected]]
Docente
Algoritmia e Programação
Conceitos sobre a unidade curricular
e a licenciatura

Docente: Prof. Vítor Pereira


Gabinete 8 – Edifício D
Email: [email protected]





Use o Assunto para resumir o conteúdo do email.
Assine o email indicando o seu nome, número e curso.
Nota 1: Utilize o email para esclarecer dúvidas sobre a ficha de
exercícios.
Nota 2: Não utilize o email para assuntos fora do âmbito da unidade
curricular ou de docência.
Nota 3: questões sobre a unidade curricular mas específicas ao
regulamento institucional devem ser colocadas na secretaria (por
exemplo, “tive a nota X. tenho oral?”)
Vitor Pereira [[email protected]]
1
Algoritmia e Programação


Objectivo: Tomar consciência das capacidades e
limitações do computador na resolução de
problemas do mundo real, utilizando uma linguagem
de programação simples mas poderosa para criar
aplicações úteis.
Site da unidade curricular (UC):

Considerações sobre as Licenciaturas






http://alunos.fam.ulusiada.pt/~d1227/ap/
3 anos.
2 semestres por ano (6 no total, portanto).
5 UCs por semestre (30 no total, portanto).
15 semanas de aulas teórico-práticas (TP).
20 semanas de aulas de orientação-tutória (OT) (as últimas 5
coincidem com as avaliações).
40 horas de estudo por semana:


15 horas de contacto: 3 horas por UC (2 horas TP + 1 hora OT)
+
25 horas de estudo individual
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Aulas TP e OT


Avaliação Geral
TP: Teórico-Práticas

Aula onde o docente expõe a matéria teórica necessária à
compreensão dos conhecimentos a serem transmitidos,
complementada pela demonstração de exercícios práticos.

Dois regimes

Aula usada para esclarecimento de dúvidas e orientação
do estudo, onde o centro do processo ensinoaprendizagem é o estudante.



Avaliação contínua + Frequência
Elementos de avaliação contínua: pontos escritos, trabalhos
individuais/grupo, intervenção oral, visitas estudo, outros elementos.
Ponderação da informação final de frequência:
Nota da avaliação contínua: 60%; nota da frequência: 40%
Regime B

Exame + Oral (para notas iguais ou superiores a 8 valores)
Mais informações:


Vitor Pereira [[email protected]]


OT: Orientação-Tutória

Regime A
http://www.fam.ulusiada.pt/ingresso/regulamentos.htm
Regulamentos disponíveis na página web da unidade curricular
Vitor Pereira [[email protected]]
2
Avaliação Contínua de Algoritmia
e Programação


Dois pontos escritos: 75%


Datas

Ver ficheiro no site da unidade curricular.
Outros elementos: 25%




Bibliografia

Participação em trabalhos/exercícios práticos;
Participação em iniciativas e trabalhos desenvolvidos nas aulas;
Intervenções orais;
Nível de expressão literária, incluindo o aspecto formal da exposição oral ou
redacção, a pontuação e a ortografia.

Bibliografia Principal:

Vitor Pereira, “O Guia Prático do Visual Basic 2010”, Centro Atlântico.

http://www.centroatlantico.pt/
Disponível no site da unidade curricular:


programa da unidade curricular: informações sobre a unidade curricular,
incluindo todos os detalhes sobre a bibliografia.
syllabus: planeamento das aulas e respectiva bibliografia recomendada.
Nota: está disponível na reprografia da Universidade um
texto sobre a introdução à algoritmia/programação.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Linguagem de Programação



Faculdade de Engenharia e Tecnologias
Visual Basic 2010 Express (grátis).
Descarregue a partir da Internet o ambiente de desenvolvimento integrado
Visual Studio (tamanho: 700 MB);

http://www.microsoft.com/express/Windows/
Em alternativa, copie o Visual Studio a partir dos servidores da
Universidade:
1.
2.
3.
4.
5.
6.

Diretor da Faculdade:


Prof. Doutor Rui Silva
Email: [email protected]
Abra o explorador do Windows (Os Meus Documentos)
Na barra de endereço digite: \\caldo\ciul
Na janela de login que aparece insira o seu nome de utilizador e palavrapasse
Abra a pasta Software
Copie a pasta com o Visual Studio para uma pen
Copie da pen para o SEU computador e execute o ficheiro setup.exe
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
3
Faculdade de Engenharia e Tecnologias

1º Ciclo (Licenciaturas)





em
em
em
em
Engenharia
Engenharia
Engenharia
Engenharia
2º Ciclo (Mestrados)
Eletrónica e Informática
e Gestão Industrial
Civil
Mecânica

Mestrado
Mestrado
Mestrado
Mestrado
Mestrado

Doutoramento em Engenharia e Gestão Industrial





Licenciatura
Licenciatura
Licenciatura
Licenciatura
Algoritmia e Programação
Introdução à programação de
computadores
em Gestão de Energia
em Engenharia e Gestão Industrial
em Gestão de Operações
em Engenharia Electrónica e Informática
em Automação Industrial
3º Ciclo (Doutoramento)
Vitor Pereira [[email protected]]
Sumário
1.
2.
3.
4.
5.
Diagrama de um Computador
Introdução à Programação de Computadores
Introdução à Informática
Algoritmia
Dados, Tipos de Dados e Operações
Primitivas
Variáveis, Constantes e Operadores
Vitor Pereira [[email protected]]
Entrada de Dados
(input)
Processamento
Saída de Dados
(output)
Vitor Pereira [[email protected]]
4
Programação de Computadores
Definições


Linguagens de Programação

Simplicidade/A
mbiguidade
São conjuntos de palavras utilizadas na escrita de
programas, de acordo com um léxico próprio sujeito a uma
determinada estrutura e, na maior parte das vezes,
vocacionadas para uma particular área de assuntos
Enunciado
do Problema
Em Linguagem
Natural
Programa

Conjunto de instruções com um sequência lógica e
previamente estabelecida que permite a execução de
tarefas pelo computador
Algoritmo
Da Resolução
em Linguagem
Pseudo-Natural
Vitor Pereira [[email protected]]



É a única linguagem que o computador entende e tem por
base zeros e uns (sistema binário).
Os zeros e uns (0,1) representam a passagem de corrente
de baixa e alta tensão pelo cabo de alimentação do
computador.
Linguagem orientada para a máquina cujas instruções podem
ser directamente utilizadas pelo computador.
Depende de computador para computador, isto é, existem
diferentes versões de linguagem máquina.
Vitor Pereira [[email protected]]
Complexidade/O
bjetividade
Programa
em
Linguagem
Máquina
Vitor Pereira [[email protected]]
Linguagem Máquina

Programa
em
Linguagem Formal
Classificação de Linguagens

Existem dois grandes tipos:




Linguagens de alto nível
Linguagens de baixo nível
de acordo com a proximidade que têm da linguagem
humana.
Linguagem de baixo nível: orientadas para a
máquina (computador), difícil de entender por um
ser humano. Exemplo: LD A,B; ADD A,C
Linguagem de alto nível: fáceis de entender por um
ser humano. Exemplo: soma=a+b+c
Vitor Pereira [[email protected]]
5
Linguagens de Programação
Classificação de Linguagens
Linguagem
Nível
Classificação
Função
Assembly, C
Baixo,
Médio
Linguagem
Máquina e
Assembler
Desenvolvimento de
sistemas
Algol, APL,
Pascal, C,
Fortran,
Basic, PL/1
Médio, Alto
Cobol, PL/1,
Basic
Logo, ADA,
Lisp, RPG,
Prolog
Alto
Alto
Linguagens
Científicas
Linguagens
“comerciais”
Linguagens
“inteligentes”
Trabalhos
académicos e
investigação
científica
Programa de
gestão e
comércio
Inteligência
artificial





Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Linguagens de Programação






C, médio/alto nível, linguagem bastante flexível, semelhante
à linguagem Pascal.
C++: extensão da linguagem C orientada aos objetos.
C#: linguagem recente da Microsoft derivada das linguagens
C e C++, Java e Visual Basic, entre outras.
Borland Delphi: a versão Delphi 2007 suporta a linguagem de
programação Delphi (Object Pascal) e o C++/C#. Usado em
aplicações de bases de dados
J#: contra-ataque da Microsoft à linguagem Java.
Java: linguagem popular orientada aos objetos e otimizada
para a Internet desenvolvida pela Sun Microsystems.
Vitor Pereira [[email protected]]
Assembler: baixo nível, orientada para a máquina.
ADA (Lady Ada Lovelace, 1860): em honra da matemática e
primeira programadora.
Algol (Algorithmic Oriented Language): linguagem de alto
nível para expressar algoritmos.
APL (A Programming Language): Alto nível, vocacionada
para a utilização de vectores, matrizes e funções
matemáticas.
Basic (Beginner’s All-purpose Symbolic Instruction Code):
linguagem de alto nível e de fácil compreensão.
Linguagens de Programação





Cobol (Common Business Oriented Language): orientada
para aplicações comerciais.
Fortran (Formula Translation System): de alto nível, destinada
a aplicações técnico-científicas.
Pascal (Blaise Pascal, 1640, matemático): linguagem
estruturada e de alto nível.
PL/1 (Programming Language One): alto nível, orientada para
o problema e aplicações comerciais.
RPG (Report Program Generator): orientada para a
administração.
Vitor Pereira [[email protected]]
6
Compiladores
Fases da Actividade de Programação
Definição do problema
Planificação da resolução
Implementação – codificação
Teste e depuração
Documentação
Manutenção
1.
2.
3.
4.
5.
6.


Software que permite traduzir um dado programa
escrito numa dada linguagem de programação para
linguagem máquina.
Infelizmente, por falta de padronização a 100%
existem diferentes dialectos para uma mesma
linguagem de programação, todos eles com
pequenas diferenças relativamente aos outros.

Exemplos: Basic, Basica, GWBasic, Turbo Basic, MS
Quick Basic.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Programas

Programa fonte: programa original, escrito numa
qualquer linguagem de programação.


Programação
São guardados em ficheiros com extensão BAS, VB, C,
CS, etc., de acordo com a linguagem.
Programa objecto: programa em linguagem
máquina resultado da compilação e que pode ser
executado.
Vitor Pereira [[email protected]]




Engloba todo o conjunto de trabalhos de concepção, escrita e
teste de programas.
O método mais comum é o da programação estruturada,
designado por método Top-Down (isto é, refinar
sucessivamente cada passo da solução).
Top-Down. Permite o estabelecimento de módulos e figuras
lógicas padrão, com o objectivo de reduzir o grau de
incerteza dos resultados e o tempo dos testes. Emprega o
mínimo de estruturas lógicas, usando estruturas condicionais
e de repetição.
Outro método comum é o da programação modular.
Vitor Pereira [[email protected]]
7
Estrutura Genérica de Programa
Cabeçalho
Corpo
geral do
programa
Identificação do Programa
Identificação dos Dados
Início
Operação 1 a efetuar
Operação 2 a efetuar
...
Operação n a efetuar
Fim
Módulo A
partes do
programa com
função específica
Módulo N
Introdução à Informática: Computador
Início Parte A

Fim parte A

Efectua tarefa a1
Efectua tarefa a2
...
Efectua tarefa an
Início Parte N
Efectua tarefa n1
...
Efectua tarefa nm

Fim parte N
Vitor Pereira [[email protected]]
Diagrama de Blocos de um
Computador Digital
1
2
...
Memória
Unidade Central de
Processamento
(Microprocessador)
Dispositivos de
Input/Output
Vitor Pereira [[email protected]]



n

Vitor Pereira [[email protected]]
O computador é um dispositivo lógico programável
de uso geral capaz de executar várias funções e
tomar decisões para alterar a execução do
programa.
É necessário, geralmente, conceitos e
conhecimentos de duas disciplinas diferente:
conceitos de hardware da electrónica e de
programação da informática.
O hardware é a estrutura física do computador; A
programação fá-lo funcionar: Uma área sem a outra
não faz sentido.
Diagrama de Blocos de um
Computador Digital
A UCP está associada ao cérebro humano: é aqui
que todas as decisões são tomadas
A Memória armazena a sequência de comandos
que indicam o que fazer (programa) bem como
dados necessários à execução do programa.
Os dispositivos de I/O são necessários para que a
tarefa tenha utilidade: teclado, monitor, etc.
Estes três componentes comunicam entre si através
de um conjunto de linhas que servem como meio de
comunicação.
Vitor Pereira [[email protected]]
8




Diagrama de Blocos de um
Computador Digital
Unidade Central de
Processamento (UCP)
Memória: cada célula tem um número identificador ou
endereço.
A cada endereço está associado um conteúdo, que é o valor
armazenado naquela célula de memória
O que significa o conteúdo de cada célula? Números sem
significado para nós; para a UCP representam um conjunto
preciso de comandos que a instruem a executar uma
sequência de operações.
Estes números representam os códigos das operações para
as várias instruções do conjunto de instruções da UCP.
Unidade Central de Processamento
Unidade Aritmética e
Lógica (UAL)
Unidade de Controlo
(UC)
Registos
(área de armazenamento temporário de dados)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
UCP



Bits e Bytes
Unidade Aritmética e Lógica (UAL). Área onde são
realizadas as operações sobre os dados; operações
aritméticas: soma e subtracção, etc.; operações
lógicas: E (AND), OU (OR), NÃO (NOT).
Registos: São áreas de armazenamento de dados
temporários durante a execução do programa.
Unidade de Controlo (UC). Envia sinais para sincronizar
e controlar todas as operações do computador.
Controla o fluxo de dados entre o microprocessador, a
memória, e os dispositivos I/O.
Vitor Pereira [[email protected]]





Unidade básica de informação é o bit – 0/1: (binary
digit – dígito binário). 1 byte=8 bits
“Este computador tem um processador Pentium de
32 bits, 128 megabytes de RAM e um disco rígido
de 40 gigabytes.”
Servem para medir a capacidade da memória
(RAM/ROM), de discos e disquetes e o tamanho
ocupado por ficheiros.
Um computador é uma máquina ON/OFF.
Os circuitos lógicos que controlam as operações do
computador produzem +5V ou 0V.
Vitor Pereira [[email protected]]
9
Porquê usar o sistema binário?

Circuitos do computador apenas têm de manipular 2
dígitos, em vez de 10





Desenho é simplificado
Menor custo
Rentabilidade melhorada
Componentes electrónicos
operam num modo binário
Tudo o que pode ser feito
na base 10 pode também
ser feito em binário.
aceso
ligado
on
verdadeiro
1
apagado
desligado
off
falso
0
Memória Principal




Representação de dados: sistema binário
Subdivisão mais comum: cada endereço armazena
1 byte.
Códigos: número de dígitos binários determinam o
número de valores de códigos possíveis
n dígitos binários permitem 2n códigos (4 bits  16
códigos; 8 bits  256 códigos, etc.)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Potências de Base 2









Nome Abreviatura Tamanho
Kilo K 210=1,024
Mega M 220=1,048,576
Giga G 230=1,073,741,824
Tera T 240=1,099,511,627,776
Peta P 250=1,125,899,906,842,624
Exa
E 260=1,152,921,504,606,846,976
Zetta Z 270=1,180,591,620,717,411,303,424
Yotta Y 280=1,208,925,819,614,629,174,706,176
Vitor Pereira [[email protected]]
Tipos de Dados

O computador manipula e armazena vários
tipos de dados diferentes:





Números inteiros sem sinal (positivos)
Números inteiros com sinal (positivos e negativos)
Números fraccionários
Valores lógicos (verdadeiro/falso)
Caracteres não numéricos (letras, sinais de
pontuação, caracteres especiais)
Vitor Pereira [[email protected]]
10
Valores e significado de 3 bits
String
de bits
000
001
010
011
100
101
110
111
Inteiro
sem
sinal
0
1
2
3
4
5
6
7
Inteiro
com
sinal
+0
+1
+2
+3
-4
-3
-2
-1
Unicode
Fracção
sem sinal
Cor
Cidade

0
1/8
¼
3/8
½
5/8
3/4
7/8
Preto
Castanho
Vermelho
Laranja
Amarelo
Verde
Azul
Violeta
Porto
Lisboa
Braga
Famalicão
Coimbra
Faro
Guimarães
Beja



É o código usado pela maior parte dos computadores e
que representa todos os caracteres, independentemente
da língua, programa ou sistema operativo.
Cada carácter ocupa 2 bytes/16 bits. Logo, pode
representar 65536 códigos possíveis (216).
Alfabeto em maiúsculas e minúsculas, numerais, sinais
de pontuação e outros caracteres não imprimíveis (CR =
carriage return e LF = line feed).
Dígitos e alfabeto estão ordenados sequencialmente.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmia



“Os Computadores são máquinas estúpidas”

Não pode haver ambiguidade nas instruções que damos ao
computador; não pode haver a possibilidade de
interpretações alternativas.
Exemplo de instrução imprecisa : “calcula a nota média deste
teste”:




Vitor Pereira [[email protected]]
Infelizmente, os computadores fazem aquilo que lhes mandamos
fazer, não necessariamente, aquilo que queremos que eles façam.
Onde estão as notas?
Quantas são?
O que fazer com os alunos que faltaram?
etc.
Vitor Pereira [[email protected]]
11
Resolução do Problema e
Programação
Programação de Computadores


Sequência de instruções escritas numa dada
linguagem de programação, que descrevem
acções a serem executadas pelo computador,
visando a resolução de um problema.
A programação de computadores pode ser difícil:



Problema
Difícil
Os bons programadores são bem pagos.
É uma actividade complexa que combina vários processos
mentais.
É possível, no entanto, torná-la mais simples (técnica do
“dividir para conquistar”: dividir um problema complexo em
várias sub-tarefas menos complexas).
Programa de Computador
(Solução)
Vitor Pereira [[email protected]]
Consiste num processo de duas fases:


Fase resolução do problema. Objectivo: produzir
uma solução para o problema em forma
algorítmica.
Fase implementação. Objectivo: implementar o
algoritmo numa determinada linguagem de
programação
Vitor Pereira [[email protected]]
Solução na Forma
Algorítmica
Fase implementação
Vitor Pereira [[email protected]]
Desenvolvimento de Programas de
Computador

Fase resolução do
problema
Fase Resolução do Problema




Não é fácil!
Não existe uma fórmula, algoritmo, ou método que
garanta uma solução para o problema.
É fundamental que os programadores principiantes
pratiquem as suas habilidades de resolução de
problemas e construam uma base de experiências
por forma a poderem resolver novos problemas
propostos.
Existem alguns princípios orientadores por forma
a facilitar resolução de problemas...
Vitor Pereira [[email protected]]
12
Princípio Orientador




“DIVIDIR PARA CONQUISTAR”
Problemas difíceis são tornados mais simples se forem
divididos em problemas mais simples, isto é, problemas para
os quais seja mais fácil encontrar uma solução.
De seguida, as resoluções dos vários problemas mais
simples são combinadas de uma forma organizada para
atingir a resolução do problema original.
Níveis de Detalhe

Os algoritmos podem ser expressos em vários
níveis de detalhe.
O problema é, ele próprio, uma solução, apesar
de a um nível geral ou abstracto;
A implementação final é a solução com mais nível
de detalhe;
No meio encontram-se outras soluções, com
outros níveis de abstracção.



Outro princípio é reconhecer semelhanças entre um dado
problema e problemas resolvidos anteriormente.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmos


Algoritmos
Sequência finita e ordenada de passos não
ambíguos sob a forma de instruções, que
conduzem à resolução de um problema num tempo
finito
Propriedades dos algoritmos:

As instruções têm de pertencer às operações básicas
(primitivas) que o computador conhece;


O computador pode não saber multiplicar mas pode, contudo,
realizar multiplicações através de somas.
A resolução tem de ser conseguida num tempo finito.


Uma sequência de instruções para calcular todos
os número primos não é um algoritmo.
Exemplo de Solução finita mas sequência de
instruções infinita.

1.
2.
3.


Vitor Pereira [[email protected]]
Exemplo: dividir um número positivo X por 5:
Q  0.
X  X – 5. Q  Q + 1
Se 0 < X < 4 termina. O quociente é Q e o resto é X. Se
não, retorna ao passo 2.
Funciona se X  5;
Não funciona se 0 < X < 4.
Vitor Pereira [[email protected]]
13
Algoritmos

Resultados corretos para X > 0:
1.
2.



Formas de Expressar Algoritmos
3.
Q  0.
Se 0 < X < 4 termina. O quociente é Q e o resto é X.
Se não, X  X – 5. Q  Q + 1
Retorna ao passo 2.
Algoritmos “corretos” também podem ser
melhorados.
Algoritmos robustos devem garantir que os valores
introduzidos produzem resultados corretos.
A formulação de algoritmos corretos e robustos é
um dos mais importantes aspetos da programação

Descrição narrativa

Fluxograma

Linguagem algorítmica



Uma descrição verbal dos passos que levam à
resolução do problema.
Forma gráfica da descrição de um problema
Uma mistura entre a linguagem natural e a
precisão lógica de esquemas como os
fluxogramas.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Descrição Narrativa




Exemplos: Receitas de Culinária
Outro exemplo:

Receita de Culinária
Identificação do Programa
Bacalhau à Brás

Ler um conjunto de quatro notas. Calcular a média
somando-as e dividindo o resultado por 4. Se esta
média for inferior a 10, mostre a média com uma
mensagem de não aprovado; senão mostre a média
com uma mensagem de aprovado.
A linguagem natural é imprecisa: pode haver
ambiguidade e/ou perda de informação.
Usa muitas palavras.
Vitor Pereira [[email protected]]
Identificação dos Dados
600 gramas de bacalhau
 0,5 dl de azeite
 30 gramas de margarina
 1 dente de alho
 1 cebola grande
 150 gramas de chouriço de carne
 750 gramas de batatas
 6 ovos
 sal e pimenta q.b. (quanto basta)
 salsa e azeitonas

Vitor Pereira [[email protected]]
14
Receita de Culinária
Corpo Geral do Programa
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Limpe o bacalhau, retire-lhe todas as espinhas e corte-o em cubos com 1 cm de lado.
Corte o chouriço também em pequenos dados iguais.
Descasque as batatas, corte-as igualmente em pequeninos cubos, lave-as muito bem,
escorra-as e frite-as; tempere-as depois de fritar (com sal).
REPITA o Passo 5 seis vezes
Parta um ovo para dentro de um recipiente.
Bata os ovos.
Pique grosseiramente a cebola e o dente de alho, deite-os num tacho largo (ou numa
frigideira), leve ao lume a refogar e, logo que comece a querer alourar, junte o chouriço e
o bacalhau e vá mexendo sempre, sobre o lume, durante 2 minutos.
Junte depois as batatas, mexa muito bem mais um minuto e, por fim, junte os ovos
batidos.
Vá mexendo com cuidado até os ovos estarem mais ou menos passados, a seu gosto.
Deite então numa travessa e sirva quente, polvilhado com salsa picada e azeitonas.
SE gostar de vinho maduro ENTÃO aconselha-se vinho alentejano; SENÃO beba o que
tiver disponível.
Fluxograma



“Uma imagem vale por mil palavras”

Um mapa de uma cidade ou um diagrama para montagem
de um produto são exemplos de imagens que valem por
mil palavras.
Um Fluxograma é uma forma gráfica que representa
a descrição de um problema
Mostra a lógica do algoritmo, salientando os passos
individuais e as suas interconexões, isto é, a forma
como o controlo passa de uma acção para a
seguinte.
Vitor Pereira [[email protected]]
Fluxogramas: Símbolos
Vitor Pereira [[email protected]]
Fluxograma: Exemplo Simples
Início

Cálculo

Decisão

Entrada de dados (input)

Saída de dados (output)

Fluxo de dados
nota1, nota2,
nota3, nota4
Vitor Pereira [[email protected]]
Ler as notas
Média(nota1+nota2+
nota3+nota4)/4.0
Sim
Média
<10?
“Reprovou com a
nota”, Média
Fim
Calcular a média
Não
“Parabéns! Passou
com a nota”, Média
Mostrar o output
Vitor Pereira [[email protected]]
15
Linguagem Algorítmica



1.
2.
3.
4.
Os algoritmos são descritos de uma forma linear: fáceis de
ler e compreender.
Usa uma sequência de passos numerados escritos de uma
forma prosaica.
Também conhecido por pseudocódigo.
Ler um conjunto de quatro notas
Calcular a sua média, somando e dividindo por quatro
Se a média for inferior a 10, mostrar a mensagem “Não
Aprovado”;
senão, mostrar a mensagem “Aprovado”
Fim
Problema

2.
3.
Buscar os itens necessários
Pesar a farinha
Guardar os itens

A ordem da resolução é importante!
1.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Refinar Passo 1 do Algoritmo
1.1 Buscar o saco de farinha
1.2 Buscar a balança
1.3 Buscar a taça
Pesar meio quilo de farinha para uma taça.
Refinar Passo 2 do Algoritmo
2.1
Pesar a taça e memorizar o peso
2.2
Deitar um pouco de farinha na taça
2.3
ENQUANTO não existir exactamente meio quilo de
farinha na taça, adicionar ou remover um pouco de farinha
Nota: foi usado um sistema de numeração
hierárquico (estes passos são um
refinamento do passo 1).
Vitor Pereira [[email protected]]




O computador pode repetir uma ou mais instruções enquanto
uma determinada condição for verdadeira.
Os programadores usam o termo ciclo para se referirem às
repetições.
Um ciclo é, portanto, uma estrutura de controlo da
sequência de um algoritmo
O passo 2.3 pode ainda ser refinado
Vitor Pereira [[email protected]]
16
Refinar o passo 2.3
2.3 ENQUANTO o peso da taça, medido pela balança, não for igual ao peso
da taça mais meio quilo:
SE o peso da taça e da farinha for inferior ao peso da taça mais meio
quilo
ENTÃO adicione um pouco de farinha à taça;
SENÃO remova um pouco de farinha da taça.

Atente na nova estrutura de controlo da sequência de um
algoritmo. Uma condição é avaliada e de seguida um
conjunto de duas alternativas é executado. A estrutura
SE...ENTÃO...SENÃO está contida dentro do ciclo. A
condição associada ao SE é avaliada repetidas vezes.
Algoritmo Final
1.1
1.2
1.3
2.1
2.2
2.3
Buscar o saco de farinha
Buscar a balança
Buscar a taça
Pesar a taça e memorizar o peso
Deitar um pouco de farinha na taça
ENQUANTO o peso da taça, medido pela balança, não for igual ao
da taça mais meio quilo:
SE o peso da taça e da farinha for inferior ao peso da
taça mais meio quilo
ENTÃO adicione um pouco de farinha à taça;
SENÃO remova um pouco de farinha da taça.
3.1 Guardar a balança
3.2 Guardar a farinha
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmo 94 (versão 1)

1.
2.


Variáveis
Calcular 94 (nove à quarta), isto é, 9999.

Calcular 9999
Mostrar o resultado

O computador usa dados armazenados em
memória e armazena os resultados também em
memória.
Para que o resultado do cálculo do passo 1 possa
ser usado no passo 2 é necessário uma variável.
Vitor Pereira [[email protected]]
peso


É uma entidade à qual está associado um valor
armazenado em memória.
O valor armazenado pode variar mas num dado
instante apenas um valor está disponível.
Uma variável é especificada através de um nome
(ou identificador).
Por exemplo, para atribuir o valor zero a uma
variável Soma é:
Soma  0
Vitor Pereira [[email protected]]
17
Cálculo de 94
1.
2.


Cálculo de 94 (continuação)
Produto  9*9*9*9
Mostrar o valor armazenado na variável Produto
Note a utilização do operador * (asterisco) para a
multiplicação.
O exemplo seguinte mostra uma alternativa,
ilustrando como armazenar e mais tarde obter o
valor de uma variável (este algoritmo já está
terminado)
1.1
1.2
1.3
1.4
1.5
2.


Produto  1
Produto  Produto * 9
Produto  Produto * 9
Produto  Produto * 9
Produto  Produto * 9
Mostrar o valor de Produto
Os passos são executados pela ordem que aparecem.
Combinando o cálculo da potência uma multiplicação de cada
vez com a noção de ciclo enquanto permite a criação de um
algoritmo mais genérico (ver acetato seguinte)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Tabela de Traçagem do Algoritmo
(incompleta)
Algoritmo 94 (versão 2)
1.
2.
3.
4.
5.
6.
Base  9
Expoente  4
Produto  1
Contador  1
Repete Enquanto Contador <= Expoente
5.1 Produto  Produto * Base
5.2 Contador  Contador + 1
Mostrar os valores de Base, Expoente e Produto
Passo
Base
Expoente
Produto
Contador
1
9
?
?
?
3
9
4
1
?
4
1
2
4
5
5.1
5.2
5
5.1
Vitor Pereira [[email protected]]
9
4
9
4
9
9
9
9
9
4
4
4
4
?
1
9
1
9
81
Resultado
?
1
9
Teste
Ciclo
1
2
2
2
True
True
Vitor Pereira [[email protected]]
18
Algoritmo Soma Primeiros 100
Números Inteiros
Algoritmo Potenciação
Escrever (“Qual a base?”)
Ler (Base)
Escrever (“Qual o expoente?”)
Ler (Expoente)
Produto  1
Contador  1
Repete Enquanto Contador <= Expoente
1.
2.
3.
4.
5.
6.
7.
8.
7.1 Produto  Produto * Base
7.2 Contador  Contador + 1
Calcular a soma dos primeiros 100 números inteiros
(1+2+3+...+98+98+100)

Total  0
Contador  1
Repete Enquanto Contador <= 100
1.
2.
3.
4.
3.1 Total  Total + Contador
3.2 Contador  Contador + 1
Escrever(Total)
Crie uma tabela de traçagem deste algoritmo

Escrever(Base, Expoente, Produto)
Vitor Pereira [[email protected]]

Vitor Pereira [[email protected]]
Dados, Tipos de Dados e
Operações Primitivas
O computador manipula informação ou dados:

Inteiros (sem parte fraccional)

Reais (contêm sempre parte decimal)

Booleanos (tipos de dados lógicos)

Texto/Caracteres (cadeias de caracteres)

Exemplo: 13 7 -6 208 -295 7830 -1

Exemplo: 10.0 23.8 2.672 -8.910 -7.7 3.14159265

Verdadeiro, Falso (em Inglês, True, False)



Caracteres alfabéticos, dígitos e caracteres especiais
São colocados entre aspas (“”)
Exemplo: “Universidade Lusíada” “2003” “3 + 4 é igual a 7”
Vitor Pereira [[email protected]]
Tipos de Dados Primitivos

Dados



Numéricos


Inteiros
Reais
Alfanuméricos (Cadeias de Caracteres; Strings)
Lógicos
Vitor Pereira [[email protected]]
19




Expressões,Variáveis,
Constantes e Operadores
As expressões combinam variáveis, operadores e
constantes para produzir um resultado.
As variáveis são nomes usados para representar
posições na memória onde estão dados que serão
processados.
As constantes são símbolos usados para
representar dados.
Os operadores são usados para combinar as
variáveis e constantes fornecendo um valor como
resposta.
Exemplos de Expressões

0.5 * base * altura

(nota1 + nota2) / 2.0

(temperatura > 0) e (quantidade < limite)

A>B

0.3*x*x – 2*x + 3
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Expressões




Variáveis
As expressões são escritas sempre na mesma linha.
Os símbolos usados para multiplicação e divisão são
“*” e “/”, respectivamente.
Aquando da avaliação de uma expressão, avalia-se
primeiro as operações de maior prioridade, por
exemplo (multiplicação e divisão).
Altera-se a ordem de avaliação de uma expressão
usando parêntesis. Exemplo: (a+b)/c
Vitor Pereira [[email protected]]


Uma variável é uma entidade que possui um
valor e é conhecida pelo programa por um
nome.
Em matemática, o conceito é familiar:

Num triângulo rectângulo, com lados a, b e c, o
teorema de Pitágoras dá-nos a relação:
a2=b2+c2
a
b
c
Vitor Pereira [[email protected]]
20
Variáveis




Nomes de Variáveis
Uma relação expressa através de variáveis define a
fórmula geral que pode ser aplicada a cálculos
específicos.
Se o lado a é 5 e o lado b é 4, então usando a
fórmula temos:
(5)2=(4)2+c2





c=3

Se o lado b é 5 e o lado c é 12, então usando a
fórmula temos:
a2=(5)2+(12)2
Regras de construção de nomes de variáveis:
Devem começar por uma letra e ser seguido de qualquer
número de letras, números ou “_”. O espaço não é
permitido.
Não há diferença entre minúsculas e maiúsculas
Exemplos de nomes válidos:


a=13

Triângulo diferente mas a fórmula geral é a mesma
para o cálculo.

total
lado2
x_ao_quadrado
a123
um_nome_longo
caixa_preta
Exemplos de nomes inválidos



3lado
x+y
soma total
não começa com uma letra
“+” não é permitido (é usado para a soma)
não são permitidos espaços
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Constantes





Constantes: Exemplos
As constantes aparecem em expressões do tipo
base * altura * 0.5
Nesta expressão temos a variável base multiplicada pela
variável altura e o resultado multiplicado pela constante
0.5.
Cada variável representa uma posição de memória.
As constantes são armazenadas junto com o código do
programa, não ocupando espaço da área onde estão os
dados.
As constantes também têm associado um tipo de dados
(inteiro, real, lógico, caracteres).
Vitor Pereira [[email protected]]

Inteiras

Reais

Caracteres


+256 128 -32768 555 -12345

3.141516 -22.354 +0.567 128.0

“a” “!” “ ” “a-z”
“Computador” “12345” “Universidade Lusíada”

True False (Verdadeiro Falso)

Lógico
Vitor Pereira [[email protected]]
21
Operadores


Classificação dos Operadores
São símbolos que indicam a operação que deve ser
realizada entre os operandos (constantes e/ou
variáveis).
Exemplos de operadores:



+ – * /
= > <
^
(exponenciação; 2^3=8)

De acordo com o tipo de operandos envolvidos.

Aritméticos
Lógicos
Relacionais
Caracteres

Exemplos:




Aritméticos, quando os operandos são dados aritméticos.

Vitor Pereira [[email protected]]
Lógicos, quando os operandos são dados lógicos.

Exemplos:




optou ou saiu
maior e aprovado
não terminou
(OR)
(AND)
(NOT)

Exemplos:


Classificação dos Operadores


Relacionais, quando comparamos dados de tipos
compatíveis e o resultado é um valor lógico.
a > 10
x < -1

Caracteres, quando os operandos são dados do tipo carácter
(varia de linguagem para linguagem).
Um exemplo de operação comum em várias linguagens é a
concatenação (isto é, juntar) de cadeias de caracteres
através do símbolo &.
Dadas as seguintes cadeias de caracteres “Programação”,
“de“, “Computadores” e “ “


Vitor Pereira [[email protected]]
a+b
4.0 * raio
Vitor Pereira [[email protected]]
Classificação dos Operadores


A operação
“Programação” & “ “ & “de“ & “ “ & “Computadores”
Cria a cadeia de caracteres
“Programação de Computadores”
Vitor Pereira [[email protected]]
22
Representação de Expressões
Aritméticas
Expressão Matemática
A BC
Expressão Computacional
4
x y
A+B*C
b*b – 4*a*c
1
b
a
1/a*b
1
ab

Não existem operações implícitas como em 4ac, que significa
4 vezes a vezes c.

4 / (x + y)
b 2  4 ac
Expressões Aritméticas: Observações
A solução deve ser 4*a*c
Cuidado com expressões do tipo:

A expressão computacional correta é (a+b)/(c-d)

A expressão a + b / c – d equivale a:
1/(a*b)
Vitor Pereira [[email protected]]
Operadores Relacionais

Usados para fazer comparação entre dados
compatíveis.
Operador
Matemático
=

<

>

Operador
Algorítmico
=
<>
<
<=
>
>=
Significado
Igual a
Diferente de
Menor que
Menor ou igual a
Maior que
Maior ou igual a
Vitor Pereira [[email protected]]
ab
cd

a
b
d
c
Vitor Pereira [[email protected]]
Precedência dos Operadores
Por ordem decrescente de precedência; operadores na mesma linha têm precedência
igual
Operador
Significado
Associatividade
^
–
*, /
Exponenciação
Sinal menos (unário)
Multiplicação e divisão
EsquerdaDireita
+, –
>, <, >=, <=,
Adição, subtracção
Operadores relacionais
EsquerdaDireita
<>
EsquerdaDireita
Vitor Pereira [[email protected]]
23
Interacção com o Utilizador
Algoritmia e Programação

Mostrar dados no ecrã: função Escrever.


Sintaxe: Escrever(dados)
Exemplos:


Algoritmos diversos


Escrever(“Visual Basic”)
Escrever(10 + 20)
Escrever(“O resultado é ”, res)
Ler dados do teclado: função Ler.


Sintaxe: Ler(variavel)
Exemplos:


Ler(x)
Ler(x, y, z)
Vitor Pereira [[email protected]]
Estrutura Sequencial
Algoritmo: média de 2 valores (v1)
Var
Real: x, y, media
Início
Instrução 1
Escrever(“Insira
Ler(x)
Escrever(“Insira
Ler(y)
media  (x + y)
Escrever(“Média:
Instrução 2
...
Instrução n
Fim
Vitor Pereira [[email protected]]
o 1º valor: ”)
o 2º valor: ”)
/ 2
”, media)
Vitor Pereira [[email protected]]
24
Algoritmo: média de 2 valores (v2)
Algoritmo: média de 2 valores (v3)
Var
Real: x, y
Var
Real: x, y
Escrever(“Insira o 1º valor: ”)
Ler(x)
Escrever(“Insira o 2º valor: ”)
Ler(y)
Escrever(“Média: ”, (x + y) / 2)
Ler(x)
Ler(y)
Escrever(“Média: ”, (x + y) / 2)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Estrutura de Decisão


Sintaxe Algoritmia/VB:
Se <condição> Então
<instruções se condição Verdadeira>
Senão
<instruções se condição Falsa>
Fim Se
If <condição> Then
<instruções>
Else
<instruções>
End If
Uma condição é uma expressão cujo resultado ou é Verdadeiro ou é
Falso. Exemplos:
Fluxograma
False
instrução(ões)
condição
True
instrução(ões)
x>0
nota >= 10
salario < 1000
x=y
x <> y
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
25
Algoritmo: aprovado ou reprovado
Var
Algoritmo: maior de 2 valores
Var
Inteiro: nota
Real: x, y, maior
Ler(x)
Ler(y)
Se x > y Então
Ler(nota)
Se nota >= 10 Então
maior  x
Escrever(“Aprovado”)
Senão
Senão
maior  y
Fim Se
Escrever (“O maior é ”, maior)
Escrever(“Reprovado”)
Fim Se
Vitor Pereira [[email protected]]
Algoritmo: maior de 3 valores (v1)
Vitor Pereira [[email protected]]
Algoritmo: maior de 3 valores (v2)
Var
Var
Ler(x)
Ler(y)
Ler(z)
Se x > y Então
Ler(maior)
Ler(y)
Se y > maior Então
Real: x, y, z, maior
Real: maior, y, z
maior  y
Fim Se
Ler(z)
Se z > maior Então
maior  x
Senão
maior  y
maior  z
Fim Se
Se z > maior Então
Fim Se
maior  z
Fim Se
Escrever (“O maior é ”, maior)
Escrever (“O maior é ”, maior)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
26
Algoritmo: maior de 3 valores (v3)
Var
Var
Real: x
Real: maior, corrente
Ler(maior)
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Algoritmo: positivo/negativo ou zero
Ler(x)
Se x > 0 Então
Escrever(“Positivo”)
SenãoSe x < 0 Então
Código Igual
Escrever(“Negativo”)
Senão
Escrever(“Zero”)
Fim Se
Escrever (“O maior é ”, maior)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmo: classificar nota (v1)
Var
Inteiro: nota
Ler(nota)
Se nota <= 4 Então
Escrever(“Muito Insuficiente”)
SenãoSe nota < 10 Então
Escrever(“Insuficiente”)
Nota
0…4
5…9
10…14
15…17
18…20
Classificação
Muito Insuficiente
Insuficiente
Suficiente
Bom
Muito Bom
SenãoSe nota <= 14 Então
Algoritmo: classificar nota (v2)
Var
Inteiro: nota
Ler(nota)
Se nota >= 18 Então
Escrever(“Muito Bom”)
SenãoSe nota >= 15 Então
Escrever(“Bom”)
Nota
0…4
5…9
10…14
15…17
18…20
Classificação
Muito Insuficiente
Insuficiente
Suficiente
Bom
Muito Bom
SenãoSe nota >= 10 Então
Escrever(“Suficiente”)
Escrever(“Suficiente”)
SenãoSe nota <= 17 Então
SenãoSe nota >= 5 Então
Escrever(“Bom”)
Escrever(“Insuficiente”)
Senão
Senão
Escrever(“Muito Bom”)
Escrever(“Muito Insuficiente”)
Fim Se
Fim Se
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
27
Algoritmo: Bónus

Versão 1
Crie um algoritmo que leia o nome de um
empregado, o número de horas extras
trabalhadas, e o número de horas de faltas e
calcule um bónus de Natal, de acordo com a
seguinte tabela:
EXTRAS – 2/3 * FALTAS
> 20 horas
>15 e <= 20 horas
>10 e <= 15 horas
>5 e <= 10 horas
<= 5 horas
Bónus a Pagar
€50
€40
€30
€20
€10
Vitor Pereira [[email protected]]
Var
Real: extras, faltas, bonus
Texto: nome
Ler(nome, extras, faltas)
Se extras – 2 / 3 * faltas > 20 Então
bonus  50
SenãoSe extras – 2 / 3 * faltas > 15 Então
bonus  40
SenãoSe extras – 2 / 3 * faltas > 10 Então
bonus  30
SenãoSe extras – 2 / 3 * faltas > 5 Então
bonus  20
Senão
bonus  10
Fim Se
Escrever(nome, “ recebe um bónus de ”, bonus, “ Euros”)
Versão 2
Condições Compostas
Var
Real: extras, faltas, bonus, temp
Texto: nome
Ler(nome, extras, faltas)
temp  extras – 2 / 3 * faltas
Se temp > 20 Então
bonus  50
SenãoSe temp > 15 Então
bonus  40
SenãoSe temp > 10 Então
bonus  30
SenãoSe temp > 5 Então
bonus  20
Senão
bonus  10
Fim Se
Escrever(nome, “ recebe um bónus de ”, bonus, “ Euros”)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]

Operadores Lógicos:

Exemplos:

And (E), Ou (Ou), Not (Não)
x > 0 And x < 100
idade >= 18 And idade <= 30
preco < 100 Or preco > 900
opcao = 1 Or opcao = 2 Or opcao = 3
nota = 8 Or nota = 9
Not (nota = 8 Or nota = 9)
Vitor Pereira [[email protected]]
28
Estrutura de Repetição


Sintaxe Algoritmia/VB:
Para var = inicio Até fim [Passo valor]
<instruções a repetir>
Proximo
Exemplos:
Fluxograma
For var = inicio To fim [Step valor]
<instruções a repetir>
Next
Para var =
inicio Até fim
Falso
Verdadeiro
Para i = 1 Até 10
Escrever(i)
Proximo
instrução(ões)
Para i = 1 Até 10 Passo 3
Escrever(i)
Proximo
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmo: ler 5 notas e mostrar, para cada
nota, “Aprovado” ou “Reprovado”
Exemplos
Para i = 1 Até 10 Passo 5
Escrever(i)
Proximo
Var
Inteiro: nota
Para i = 1 Até 5
Ler(nota)
Se nota >= 10 Então
Para i = 10 Até 0 Passo -2
Escrever(i)
Proximo
Escrever (“Aprovado”)
Senão
Escrever (“Reprovado”)
Para i = 10 Até 1
Escrever(i)
Proximo
Fim Se
Proximo
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
29
Algoritmo: ler 5 notas e mostrar a
contagem de positivas e negativas
Algoritmo: ler n notas e mostrar a
contagem de positivas e negativas
Var
Inteiro: contapos, contaneg, nota
Var
Inteiro: contapos, contaneg, n, nota
contapos  0
contaneg  0
Para i = 1 Até 5
Ler(nota)
Se nota >= 10 Então
contapos  contapos +
Senão
contaneg  contaneg +
Fim Se
Proximo
Escrever(“Nº positivas = ”,
Escrever(“Nº negativas = ”,
contapos  0
contaneg  0
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos +
Senão
contaneg  contaneg +
Fim Se
Proximo
Escrever(“Nº positivas = ”,
Escrever(“Nº negativas = ”,
1
1
contapos)
contaneg)
Vitor Pereira [[email protected]]
Repetição (Ciclos controlados por
uma sentinela)

Sintaxe Algoritmia/VB
Repete Enquanto <condição>
Do While <condição>
Fim Enquanto
Loop
<instruções a repetir>

Exemplo
x  1
Enquanto x <= 10
Escrever(x)
x  x + 1

Fim Enquanto
Equivalente a:
1
1
contapos)
contaneg)
Vitor Pereira [[email protected]]
Fluxograma
iniciação
<instruções a repetir>
condição
Falso
Verdadeiro
[inicia a variável de ciclo]
[condição de controlo do ciclo]
[incrementa a variável]
instruções a repetir
incremento/decremento
Para i = 1 Até 10
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
30
Algoritmo: ler um nº desconhecido de notas e mostrar
a contagem de positivas e negativas
Var
Inteiro: contapos, somapos, n, nota
contapos  0
somapos  0
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
Var
Inteiro: contapos, contaneg, nota
contapos  0
contaneg  0
Escrever(“Insira uma nota (-1 para terminar)”)
Ler(nota)
Enquanto nota <> -1
Se nota >= 10 Então
contapos  contapos + 1
Senão
contaneg  contaneg + 1
Fim Se
Escrever(“Insira uma nota (-1 para terminar)”)
Ler(nota)
Fim Enquanto
Escrever(“Nº positivas = ”, contapos)
Escrever(“Nº negativas = ”, contaneg)
Algoritmo: ler n notas e mostrar a
média das positivas
contapos  contapos + 1
somapos  somapos + nota
Fim Se
Proximo
Escrever(“Média positivas = ” , somapos / contapos)
Vitor Pereira [[email protected]]
Algoritmo: ler n notas e mostrar a média
das positivas e das negativas.
Var
Inteiro: contapos, somapos, contaneg, somaneg, n, nota
contapos  0
somapos  0
contaneg  0
somaneg  0
Ler(n)
Vitor Pereira [[email protected]]
(continuação)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos
somapos  somapos +
Senão
contaneg  contaneg
somaneg  somaneg +
Fim Se
Proximo
+ 1
nota
+ 1
nota
Escrever(“Média positivas = ”, somapos / contapos)
Escrever(“Média negativas = ”, somaneg / contaneg)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
31
Algoritmo: maior de 3 valores (v1)
Var
Algoritmo: maior de 3 valores (v2)
Var
Real: x, y, z, maior
Real: maior, y, z
Ler(x)
Ler(y)
Ler(z)
Se x > y Então
Ler(maior)
Ler(y)
Se y > maior Então
maior  x
maior  y
Senão
Fim Se
Ler(z)
Se z > maior Então
maior  y
Fim Se
Se z > maior Então
maior  z
maior  z
Fim Se
Escrever (“O maior é ”, maior)
Fim Se
Escrever (“O maior é ”, maior)
Vitor Pereira [[email protected]]
Algoritmo: maior de 3 valores (v3)
Vitor Pereira [[email protected]]
Algoritmo: maior de 3 valores (v4)
Var
Var
Ler(maior)
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Ler(maior)
Para i = 1 Até 2
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Proximo
Real: maior, corrente
Real: maior, corrente
Escrever (“O maior é ”, maior)
Escrever (“O maior é ”, maior)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
32
Algoritmo: maior de n valores (v1)
Var
Nota: Real.MinValor representa o menor valor possível que se pode
armazenar num real (~ -1.8E+308; VB = Double.MinValue).
Real: maior, corrente
Inteiro: n
Ler(n)
Ler(maior)
Para i = 2 Até n
Algoritmo: maior de n valores (v2)
[número de valores a ler]
[lê o primeiro valor]
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Proximo
Escrever(“O maior é ”, maior)
Vitor Pereira [[email protected]]
Var
Real: maior, corrente
Inteiro: n
Ler(n)
[número de valores a ler]
maior  Real.MinValor
[inicia maior]
Para i = 1 Até n
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Proximo
Escrever(“O maior é ”, maior)
Vitor Pereira [[email protected]]
Algoritmo: factorial



Ler n notas e mostrar a contagem e respectiva
percentagem de positivas e negativas
Var
Ler um valor e calcular o seu factorial.
Definição:
n! = n * (n-1) * (n-2) * … * 2 * 1
Exemplo: 5! = 5*4*3*2*1 = 120
Var
Inteiro: n, factorial
Ler(n)
factorial  1
Para i = n Até 1 Passo -1
factorial  factorial * i
Proximo
Escrever(n, “! = ”, factorial)
Vitor Pereira [[email protected]]
Inteiro: contapos, contaneg, n, nota
contapos  0
contaneg  0
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos + 1
Senão
contaneg  contaneg + 1
Fim Se
Proximo
Escrever(“Nº positivas = ”, contapos)
Escrever(“% positivas = ”, Round(contapos / (contapos + contaneg) * 100))
Escrever(“Nº negativas = ”, contaneg)
Escrever(“% negativas = ”, Round(contaneg / (contapos + contaneg) * 100))
Vitor Pereira [[email protected]]
33
Algoritmo: Amplitude Térmica

Este algoritmo determina a amplitude térmica
entre 5 temperaturas registadas, isto é, a
diferença entre a maior e a menor dessas
temperaturas.
Var
Real: temp, maior, menor
Ler(maior)
[lê a primeira temperatura ...]
menor  maior
[... e inicia as variáveis maior e menor]
Para i = 2 Até 5
Ler(temp)
Se temp > maior Então
maior  temp
Fim Se
Se temp < menor Então
menor  temp
Fim Se
Proximo
Escrever(“A amplitude é ”, maior - menor)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmo: processamento mensal de
salários



Crie um algoritmo que leia a informação associada a n
colaboradores, consistindo no número de empregado
(numero), valor recebido por hora (valorhora) e horas
trabalhadas este mês (horas).
De seguida calcule o valor a pagar por colaborador
(valorpagar) bem como o total da massa salarial a
pagar pela empresa (totalpagar).
O pagamento é feito da seguinte forma: até 160 horas
o valor a receber é o valor/hora multiplicado pelo
número de horas; acima deste valor, os colaboradores
recebem o valor/hora pelas primeiras 160 horas e 1.5x
para cada hora adicional.
Vitor Pereira [[email protected]]
Var
Inteiro: n, numero
Real: valorhora, horas, valorpagar, totalpagar
totalpagar  0.0
Ler(n)
Para i = 1 Até n
Ler(numero, valorhora, horas)
Se horas <= 160 Então
valorpagar  valorhora * horas
Senão
valorpagar  valorhora * 160 + 1.5 * valorhora * (horas - 160)
Fim Se
Escrever(numero, valorhora, horas, valorpagar)
totalpagar  totalpagar + valorpagar
Proximo
Escrever(“Total Massa Salarial = ”, totalpagar)
Vitor Pereira [[email protected]]
34
Algoritmia:
Conceitos mais importantes
Decisões
Algoritmo: maior de 2 valores
Algoritmo: maior de 3 valores
Real: maior, corrente
Real: x, maior
Ler(maior)
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Escrever(“Insira o 1º valor: ”)
Ler(maior)
Escrever(“Insira o 2º valor: ”)
Ler(x)
Se x > maior Então
maior  x
Fim Se
Escrever (“O maior é ”, maior)
Código Igual
Escrever (“O maior é ”, maior)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
35
Algoritmo: positivo/negativo ou zero
Real: x
Algoritmo: classificar nota (v1)
Inteiro: nota
Ler(nota)
Se nota <= 4 Então
Ler(x)
Se x > 0 Então
Escrever(“Muito Insuficiente”)
SenãoSe nota < 10 Então
Escrever(“Positivo”)
Escrever(“Insuficiente”)
SenãoSe x < 0 Então
SenãoSe nota <= 14 Então
Nota
0…4
5…9
10…14
15…17
18…20
Escrever(“Suficiente”)
Escrever(“Negativo”)
SenãoSe nota <= 17 Então
Senão
Escrever(“Bom”)
Senão
Escrever(“Zero”)
Escrever(“Muito Bom”)
Fim Se
Fim Se
Vitor Pereira [[email protected]]
Algoritmo: classificar nota (v2)
Inteiro: nota
Ler(nota)
Se nota >= 18 Então
Escrever(“Muito Bom”)
SenãoSe nota >= 15 Então
Escrever(“Bom”)
SenãoSe nota >= 10 Então
Classificação
Muito Insuficiente
Insuficiente
Suficiente
Bom
Muito Bom
Nota
0…4
5…9
10…14
15…17
18…20
Classificação
Muito Insuficiente
Insuficiente
Suficiente
Bom
Muito Bom
Vitor Pereira [[email protected]]
Algoritmo: classificar nota (v3)
Inteiro: nota
Texto: tipo
Ler(nota)
Se nota <= 4 Então
tipo  “Muito Insuficiente”
SenãoSe nota < 10 Então
Nota
0…4
5…9
10…14
15…17
18…20
Classificação
Muito Insuficiente
Insuficiente
Suficiente
Bom
Muito Bom
tipo  “Insuficiente”
Escrever(“Suficiente”)
SenãoSe nota <= 14 Então
SenãoSe nota >= 5 Então
tipo  “Suficiente”
Escrever(“Insuficiente”)
SenãoSe nota <= 17 Então
Senão
tipo  “Bom”
Escrever(“Muito Insuficiente”)
Senão
Fim Se
tipo  “Muito Bom”
Vitor Pereira [[email protected]]
Fim Se
Escrever(nota, “ é ”, tipo)
Vitor Pereira [[email protected]]
36
Algoritmo: Bónus

Crie um algoritmo que leia o nome de um
empregado, o número de horas extras
trabalhadas, e o número de horas de faltas e
calcule um bónus de Natal, de acordo com a
seguinte tabela:
EXTRAS – 2/3 * FALTAS
> 20 horas
>15 e <= 20 horas
>10 e <= 15 horas
>5 e <= 10 horas
<= 5 horas
Bónus a Pagar
€50
€40
€30
€20
€10
Vitor Pereira [[email protected]]
Real: extras, faltas, bonus, temp
Texto: nome
Ler(nome, extras, faltas)
temp  extras – 2 / 3 * faltas
Se temp > 20 Então
bonus  50
SenãoSe temp > 15 Então
bonus  40
SenãoSe temp > 10 Então
bonus  30
SenãoSe temp > 5 Então
bonus  20
Senão
bonus  10
Fim Se
Escrever(nome, “ recebe um bónus de ”, bonus, “ Euros”)
Vitor Pereira [[email protected]]
Algoritmo: classificar n notas em
“Aprovado” ou “Reprovado”
Repetições
Inteiro: n, nota
Texto: tipo
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
tipo  “Aprovado”
Senão
tipo  “Reprovado”
Fim Se
Escrever(tipo)
Proximo
Vitor Pereira [[email protected]]
37
Algoritmo: ler n notas e mostrar a
contagem de positivas e negativas
Algoritmo: ler um nº desconhecido de valores
Inteiro: n, nota, contapos, contaneg
// Estrutura de um ciclo controlado por uma sentinela
contapos  0
contaneg  0
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos +
Senão
contaneg  contaneg +
Fim Se
Proximo
Escrever(“Nº positivas = ”,
Escrever(“Nº negativas = ”,
Escrever(“Insira um valor (-1 para terminar)”)
Ler(valor)
Enquanto valor <> -1
// Processar valor (classificar, contar, somar, calcular, …)
Escrever(“Insira um valor (-1 para terminar)”)
Ler(valor)
Fim Enquanto
1
1
// Mostrar valores calculados
contapos)
contaneg)
Vitor Pereira [[email protected]]
Algoritmo: ler um nº desconhecido de notas e mostrar
a contagem de positivas e negativas
Algoritmo: ler n notas e mostrar a
média das positivas
Inteiro: n, nota, contapos, somapos
Inteiro: contapos, contaneg, nota
contapos  0
contaneg  0
Escrever(“Insira uma nota (-1 para terminar)”)
Ler(nota)
Enquanto nota <> -1
Se nota >= 10 Então
contapos  contapos + 1
Senão
contaneg  contaneg + 1
Fim Se
Escrever(“Insira uma nota (-1 para terminar)”)
Ler(nota)
Fim Enquanto
Escrever(“Nº positivas = ”, contapos)
Escrever(“Nº negativas = ”, contaneg)
Vitor Pereira [[email protected]]
contapos  0
somapos  0
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos + 1
somapos  somapos + nota
Fim Se
Proximo
Escrever(“Média positivas = ” , somapos / contapos)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
38
Algoritmo: ler n notas e mostrar a média
das positivas e das negativas.
Inteiro: n, nota, contapos, somapos, contaneg, somaneg
contapos  0
somapos  0
contaneg  0
somaneg  0
Ler(n)
(continuação)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos
somapos  somapos +
Senão
contaneg  contaneg
somaneg  somaneg +
Fim Se
Proximo
+ 1
nota
Escrever(“Média positivas = ”, somapos / contapos)
Escrever(“Média negativas = ”, somaneg / contaneg)
Vitor Pereira [[email protected]]
Algoritmo: maior de n valores (v1)
Inteiro: n
Real: maior, corrente
Ler(n)
Ler(maior)
Para i = 2 Até n
+ 1
nota
Vitor Pereira [[email protected]]
Algoritmo: maior de n valores (v2)
Nota: Real.MinValor representa o menor valor possível que se pode
armazenar num real (~ -1.8E+308; VB = Double.MinValue).
[número de valores a ler]
[lê o primeiro valor]
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Proximo
Escrever(“O maior é ”, maior)
Vitor Pereira [[email protected]]
Inteiro: n
Real: maior, corrente
Ler(n)
[número de valores a ler]
maior  Real.MinValor
[inicia maior]
Para i = 1 Até n
Ler(corrente)
Se corrente > maior Então
maior  corrente
Fim Se
Proximo
Escrever(“O maior é ”, maior)
Vitor Pereira [[email protected]]
39
Algoritmo: factorial



Ler n notas e mostrar a contagem e respetiva
percentagem de positivas e negativas
Ler um valor e calcular o seu factorial.
Definição:
Inteiro: contapos, contaneg, n, nota
contapos  0
contaneg  0
Ler(n)
Para i = 1 Até n
Ler(nota)
Se nota >= 10 Então
contapos  contapos + 1
Senão
contaneg  contaneg + 1
Fim Se
Proximo
Escrever(“Nº positivas = ”, contapos)
Escrever(“% positivas = ”, Round(contapos / n * 100))
Escrever(“Nº negativas = ”, contaneg)
Escrever(“% negativas = ”, Round(contaneg / n * 100))
n! = n * (n-1) * (n-2) * … * 2 * 1
Exemplo: 5! = 5*4*3*2*1 = 120
Inteiro: n, factorial
Ler(n)
factorial  1
Para i = n Até 1 Passo -1
factorial  factorial * i
Proximo
Escrever(n, “! = ”, factorial)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Algoritmo: Amplitude Térmica

Este algoritmo determina a amplitude térmica
entre 5 temperaturas registadas, isto é, a
diferença entre a maior e a menor dessas
temperaturas.
Vitor Pereira [[email protected]]
Real: temp, maior, menor
Ler(maior)
[lê a primeira temperatura ...]
menor  maior
[... e inicia as variáveis maior e menor]
Para i = 2 Até 5
Ler(temp)
Se temp > maior Então
maior  temp
Fim Se
Se temp < menor Então
menor  temp
Fim Se
Proximo
Escrever(“A amplitude é ”, maior - menor)
Vitor Pereira [[email protected]]
40
Algoritmo: processamento mensal de
salários



Crie um algoritmo que leia a informação associada a n
colaboradores, consistindo no número de empregado
(numero), valor recebido por hora (valorhora) e horas
trabalhadas este mês (horas).
De seguida calcule o valor a pagar por colaborador
(valorpagar) bem como o total da massa salarial a
pagar pela empresa (totalpagar).
O pagamento é feito da seguinte forma: até 160 horas
o valor a receber é o valor/hora multiplicado pelo
número de horas; acima deste valor, os colaboradores
recebem o valor/hora pelas primeiras 160 horas e 1.5x
para cada hora adicional.
Inteiro: n, numero
Real: valorhora, horas, valorpagar, totalpagar
totalpagar  0.0
Ler(n)
Para i = 1 Até n
Ler(numero, valorhora, horas)
Se horas <= 160 Então
valorpagar  valorhora * horas
Senão
valorpagar  valorhora * 160 + 1.5 * valorhora * (horas - 160)
Fim Se
Escrever(numero, valorhora, horas, valorpagar)
totalpagar  totalpagar + valorpagar
Proximo
Escrever(“Total Massa Salarial = ”, totalpagar)
Vitor Pereira [[email protected]]

Diapositivo propositadamente deixado em branco
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]

Diapositivo propositadamente deixado em branco
Vitor Pereira [[email protected]]
41
Sumário
Algoritmia e Programação
O Visual Basic e o Visual Studio



2.
3.
4.
5.
6.





Decisões
Se determinada condição for verdadeira, o computador executa um conjunto de
instruções. Se a condição for falsa, o computador executa outras instruções.
Repetições
Permitem executar um conjunto de instruções um determinado número de vezes. Por
exemplo, calcular a média final para 20 estudantes.
Vitor Pereira [[email protected]]

For…Next, Do While…Loop
Procedimentos: Subrotinas e Funções
Vectores
Strings
Vitor Pereira [[email protected]]
Principais Tópicos da Programação
1.
Permitem armazenar valores na memória do computador.
Permitem realizar cálculos (adição, multiplicação, …) e comparações (maior que,
diferente, …).
If…Then…Else e Select Case
Estruturas de repetição (ciclos)
Tipos de Dados
Permitem adequar os valores a armazenar e respectivas operações.


Variáveis
Operadores
Aritméticos, relacionais, atribuição, lógicos, funções matemáticas.
Estruturas de decisão
Principais Tópicos da Programação
Existem instruções para escrever no ecrã e para ler valores do teclado.



Interacção com o utilizador
Numéricos, texto, booleano, datas, estruturas




Variáveis e Literais
Operadores


1.
Principais tópicos da programação
Introdução ao Visual Studio
Tipos de dados
2.
3.
Interacção com o utilizador
Console.WriteLine("Programação em Visual Basic")
Dim x as Integer
x = Console.ReadLine
Console.WriteLine("O quadrado do valor lido é: " & x * x)


Variáveis
Exemplos: x, y, z, a, b, c, nota, valor, media, soma, total, nome, …
Tipos de Dados
Dim
Dim
Dim
Dim
Números inteiros (Integer). Número reais (Double). Caracteres (String), …
x As Integer
a, b, c As Integer
valor, media As Double
nome As String
Vitor Pereira [[email protected]]
42
O Visual Studio
Principais Tópicos da Programação
4.
5.

Operadores
Decisões
Se nota >= 10 Então
If nota >= 10 Then
Senão
Else
Fim Se
End If
x = 1
Faz Enquanto x <= 10
Escreve(x)
x  x + 1
Fim Enquanto
x = 1
Do While x <= 10
Console.WriteLine(x)
x = x + 1
Loop
Escreve("Aprovado")
Escreve("Reprovado")
6.

z=-a+b*c/2^d
Repetições
Console.WriteLine("Aprovado")
É um ambiente de desenvolvimento integrado
(Integrated Development Environment - IDE). Inclui,
entre outras, as seguintes características:


Console.WriteLine("Reprovado")



Editor de código (incluindo a ferramenta IntelliSense)
Suporte para diversas linguagens de programação (Visual
Basic, C++, C#)
Compilador (programa que converte o código em
linguagem máquina).
Debugger (permite executar linha a linha)
Acesso à plataforma .NET (uma biblioteca de classes)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Menu File

New Project/Open Project/Close Project

Save All






O projecto em Disco
Permitem criar um projecto novo, abrir um existente, ou fechar o projecto activo.
Guarda o projecto em disco (sugere-se o uso do disco rígido e não uma pen).
Por omissão o projecto é guardado em:
Os Meus Documentos\Visual Studio 2010\Projects
Depois de guardar o projecto uma vez, o Visual Studio grava o projecto
automaticamente sempre antes de o executar.
Atenção: NÃO use a opção “Save Module1 As…”, uma vez que não guarda o projecto
todo!
Exit


Fecha o Visual Studio.
Nota: Ao fechar um projecto/ficheiro que não foi gravado o Visual Studio pergunta se
pretende guardar (Save) ou não (Discard).
Vitor Pereira [[email protected]]





Consiste num conjunto de pastas e ficheiros.
Para abrir um projecto pode fazer duplo
clique nos ficheiros com extensão .sln
(solução) ou .vbproj (projecto).
O código reside nos ficheiros .vb.
O executável encontra-se na pasta
bin\Release (ou bin\Debug) com o nome
<nomedoprojecto>.exe.
ATENÇÃO: Para copiar um projecto deve
copiar toda esta estrutura.
Vitor Pereira [[email protected]]
43
Menu Edit


Menu View
Undo (Ctrl+Z)/Redo
Copy/Cut/Paste/Delete


Ctrl+C/Ctrl+X/Ctrl+V/Del

Nota: o editor está optimizado para manipular linhas. Para copiar, cortar
ou eliminar UMA ÚNICA LINHA, coloque o cursor nessa linha sem
seleccionar qualquer texto e pressione o atalho pretendido.
Select All (Ctrl+A)

Quick Find (Ctrl+F)/Quick Replace (Ctrl+H)

Comment Selection/Uncomment Selection


Selecciona todo o código

Procurar e Substituir


Other Windows > Solution Explorer



Other Windows > Error List


Comentar/remover os comentários do código seleccionado.
Acessível pela barra de ferramentas:
Explorador da Solução: permite gerir os ficheiros que
fazem parte da solução (eliminar, adicionar, renomear).
Nota: se abrir um projecto e a janela de código não
aparecer, abra o Solution Explorer e faça duplo clique em
Module1.vb.
Mostra a janela com a listagem dos erros do programa.
Faça duplo clique sobre um erro para identificar a linha
associada.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Menu Debug
IntelliSense
Ajuda na codificação: desenvolvimento mais rápido e reduz erros.

Debug = remover os bugs (erros do programa).
Start Without Debugging (Ctrl+F5)

Start Debugging (F5)

Step Into (F8)

Step Over (Shift+F8)

Toggle Breakpoint (F9)


Windows > Locals



Compila e executa o programa sem informação de debugging.

Inicia o debugging.



Executa a próxima linha. Se a instrução for um método então o controlo passa para
dentro do método.
Executa a próxima linha. Se a instrução for um método então executa o método sem
visualizar o código.

Com a opção pretendida seleccionada, pressione a tecla que vem depois
dessa selecção:




Adiciona/remove um ponto de paragem.


Mostra uma janela com o valor das variáveis locais.

Vitor Pereira [[email protected]]
Carácter
. (ponto final)
“ (aspas)
(
=
+,-,*,/,^, etc.
Enter
Exemplo
Conso.
Console.“
Math.(
s=
soma=n+
x = Console.R
Texto Visualizado
Console.
Console.WriteLine“
Math.Sqtr(
soma=
soma=nota1+
x = Console.ReadLine
Vitor Pereira [[email protected]]
44
Tipos de Dados I

Tipos de Dados II
Numéricos





Inteiros
Integer

Tipo de dados com melhor desempenho.
Permite armazenar valores de -2.147.483.648 a 2.147.483.647

De -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Long

Não Inteiros

Double

Decimal




Armazena cerca de 18 dígitos. Sujeito a erros de arredondamento.
Maior valor positivo: 1,79769313486231570E+308
Texto

String

Lógicos

Boolean



Armazena até 29 dígitos.
Adequado para cálculos financeiros, pois não permite erros de arredondamento.
Permite armazenar de zero até cerca de 2 mil milhões de caracteres
(letras, dígitos, sinais de pontuação, etc.).
Permite armazenar os valores True ou False.
Permitem manipular informação do tipo verdadeiro/falso, sim/não,
ligado/desligado.
Exemplo:
Dim ligado As Boolean
ligado = False
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Datas




Estrutura Date: Propriedades
Tipo de dados Date
Declarar e iniciar variáveis:
Dim d1 As Date
Dim d2 As Date = #12/25/2010#
Dim d3 As Date = #12/25/2010 10:00:00 AM#
Dim d4 As Date = #12/25/2010 10:00:00 PM#



Year








Datas literais (constantes) são especificadas dentro de cardinais e no
formato #mes/dia/ano#.
Propriedades Today e Now:

Propriedade
Date
Day
DayOfWeek
DayOfYear
Hour
Millisecond
Minute
Month
Now
Second
TimeOfDay
Today
UtcNow

Date.Today: retorna a data corrente
Date.Now: retorna a data e hora corrente
Vitor Pereira [[email protected]]




Descrição
Retorna a componente data desta instância.
Retorna o dia do mês representado por esta instância.
Retorna o dia da semana representado por esta instância.
Retorna o dia do ano representado por esta instância.
Retorna a hora da data representada por esta instância.
Retorna os milissegundos da data representada por esta instância.
Retorna os minutos da data representada por esta instância.
Retorna o mês da data representada por esta instância.
Retorna um Date que possui a data e hora locais actuais do computador.
Retorna os segundos da data representada por esta instância.
Retorna a hora do dia para esta instância.
Retorna a data actual.
Retorna um objecto Date que possui a data e hora, em Tempo Universal
Coordenado (UTC), actuais do computador.
Retorna o componente ano da data representada por esta instância.
Vitor Pereira [[email protected]]
45
Datas: exemplo
Estrutura Date: Métodos















Método
AddDays
AddHours
AddMilliseconds
AddMinutes
AddMonths
AddSeconds
AddYears
DaysInMonth
IsLeapYear
Subtract
ToLongDateString
ToLongTimeString
ToShortDateString
ToShortTimeString
Descrição
Adiciona o número especificado de dias ao valor desta instância.
Adiciona o número especificado de horas ao valor desta instância.
Adiciona o número especificado de milissegundos ao valor desta instância.
Adiciona o número especificado de minutos ao valor desta instância.
Adiciona o número especificado de meses ao valor desta instância.
Adiciona o número especificado de segundos ao valor desta instância.
Adiciona o número especificado de anos ao valor desta instância.
Retorna o número de dias do mês e ano especificados.
Retorna um Boolean que indica se o ano especificado é um ano bissexto.
Subtrai a hora especificada ou duração desta instância.
Converte a data corrente para uma representação data longa, do tipo string, equivalente.
Converte a data corrente para uma representação hora longa, do tipo string, equivalente.
Converte a data corrente para uma representação data curta, do tipo string, equivalente.
Converte a data corrente para uma representação hora curta, do tipo string, equivalente.
Dim d1 As Date = #12/31/2020 11:59:59 PM#
Dim d2 As Date = #12/25/2020#
Dim d3 As Date = Date.Now
Console.WriteLine(d1)
Console.WriteLine(d1.ToShortDateString())
Console.WriteLine(d1.ToShortTimeString())
d1 = d1.AddSeconds(1)
Console.WriteLine(d1.ToLongDateString())

Output
31-12-2020 23:59:59
31-12-2020
23:59
sexta-feira, 1 de Janeiro de 2021
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Estruturas





Estruturas: exemplo
Isto é, tipo de dados definido pelo programador.
São declaradas fora de qualquer subrotina/função
(método) mas dentro do módulo.
Podem conter atributos (dados) e métodos
(operações).
Atributos e métodos são designados
indiferenciadamente como membros.
Acesso aos membros é feito com o operador ponto
(.):

variavel.membro
Module Module1
Structure Estudante
Dim nome As String
Dim saldo As Decimal
End Structure
Sub Main()
Dim x As Estudante
x.nome = "Ana Beatriz"
x.saldo = 100
Console.WriteLine("Nome: " & x.nome & " Saldo: " & x.saldo)
End Sub
End Module
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
46
Conversões I

Permitem alterar um valor de um tipo de dados para
outro tipo de dados. Por exemplo:


Conversões II


De Double para Integer
De String para Double

Implícitas/Explícitas: feitas automaticamente pelo VB ou
realizadas à custa de uma função.
Por promoção/despromoção: de um tipo mais “pequeno”
para um “maior” (de Integer para Long, por exemplo), ou o
oposto.



Variáveis


CInt
CLng
CDbl
CDec
CStr
Converte para Integer
Converte para Long
Converte para Double
Converte para Decimal
Converte para String
Exemplos:

Dim d As Double = 12.21
Dim i As Integer = CInt(d)
Vitor Pereira [[email protected]]
Declarar Variáveis
Definição: é uma entidade à qual está
associado um valor em memória.
Em VB, todas as variáveis têm
obrigatoriamente que ser declaradas antes de
serem usadas.
Exemplos:



Vitor Pereira [[email protected]]



Conversões

Funções de conversão do VB
x, y, z, a, b, c, nota, valor, media, soma, total,
nome, …
Vitor Pereira [[email protected]]






Declarar = Criar = Dimensionar
Sintaxe:
Dim <variável> [, <variável> …] As <tipodedados>
<variável> é o nome da variável escolhida pelo programador.
<tipodedados> é um dos tipos de dados existentes: Integer,
Long, Double, String, Date, …
Podem ser declaradas várias variáveis do mesmo tipo de
dados na mesma instrução.
Para renomear uma variável clique com o botão direito do
rato e escolha Rename.
Vitor Pereira [[email protected]]
47
Nomes de Variáveis
(e outros elementos)


O VB é case-insensitive. Isto é, não distingue entre
maiúsculas e minúsculas.
Exemplo: as variáveis idade, IDADE e Idade
referem-se todas à mesma entidade.


Esfera de Acção das Variáveis


Nota: C# (lê-se “C Sharp”) e Java são exemplos de
linguagens de programação case-sensitive.
Regras de atribuição de nomes às variáveis:


Deve começar com uma letra do alfabeto (A…Z);
Apenas pode conter letras (A…Z), dígitos (0…9) e o
carácter sublinhado (_).
Depois de criar uma variável, que instruções lhe podem aceder?
Esfera de acção (ou alcance):

Bloco

Procedimento

Módulo




Uma variável declarada dentro de um bloco só pode ser acedida pelo código dentro
desse bloco que se encontre após a declaração da variável.
Blocos mais comuns: If…End If, Select Case…End Select, For…Next, Do…Loop
Uma variável declarada numa subrotina/função, mas fora de qualquer bloco, é
acedida pelo código desse procedimento que se encontra após a declaração da
variável.
Uma variável declarada fora de qualquer procedimento é visível em todo o código do
módulo, incluindo código que aparece antes da declaração da variável.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Literais (Constantes)

Definição: um literal é um valor fixo que é representado no
código através de uma forma passível de ser entendido por
um ser humano.
Constantes

Use constantes com nomes para facilitar a
leitura e manutenção do código.
Exemplo:

Exemplos: 24 e “Visual Basic”

Valores sem parte fraccionária: -123, 0, 1024.
Const meses As Integer = 12
Const semanas As Integer = 52

Valores com parte fraccionária: 10.0, 3.14, -9.99.
Const dias = 365

Texto delimitado por aspas: “Visual Basic”, “Lusíada”.

Delimitado por cardinais: #12/31/2020#

Integer

Double

String

Datas

' dias é do tipo Integer (inferência do tipo de dados)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
48
Conversão entre Expressões Matemáticas e
Expressões Computacionais
Expressões

Uma expressão é uma combinação de




Variáveis
Operadores
Literais
Exemplo:

No exemplo anterior existem:
area = base * altura / 2






No VB, as expressões matemáticas:

três variáveis: area, base e altura.
três operadores: =, * e /.
uma constante: 2

São escritas numa única linha (isto é, não existe o
traço de fração);
Não possuem operações implícitas, como xy, que
deve ser convertido para x*y;
Só utilizam parênteses curvos (não existem
parênteses rectos como na matemática);
Não podem ter variáveis com letras gregas (a, b,
etc.) ou constantes (como p).
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Comentários




Inferência de Tipos de Dados
Permitem adicionar texto para ajudar a documentar o código.
 Um programador que consulte código desenvolvido por outro
programador entende mais facilmente o objectivo das instruções.
 O programador que desenvolveu o código pode, passado algum
tempo, recordar-se qual a lógica associada à resolução do problema.
Uma plica (') permite iniciar um comentário. Exemplo

' Calcula a área do triângulo
area = base * altura / 2

Nota 1: A plica encontra-se na mesma tecla que o caráter ?
Nota 2: Utilize os comandos da barra de ferramentas:
Vitor Pereira [[email protected]]

Exemplos
Dim
Dim
Dim
Dim
i =
d =
str
l =
10
10.0
= "Visual Basic"
30000000000
'
'
'
'
Integer
Double
String
Long
Útil em ciclos For Each, por exemplo.
Exemplo:
For Each x In vector
 Se vector for Integer, x é Integer; se vector for Double,
x é Double, se vector for String, x é String, …
Vitor Pereira [[email protected]]
49
Operadores


Operador Atribuição
Definição: é um símbolo que realiza uma
operação em um ou mais operandos.
Podem ser divididos em


Unários

Requerem apenas um operando. Exemplos:
b = - a
y = Not x
Binários




' negação
' Não lógico

Requerem dois operandos. Exemplos:
m = n
c = a + b
z = x And y


' atribuição
' adição (e atribuição)
' E lógico (e atribuição)
Permite atribuir um valor a uma variável.
Símbolo: =
Exemplo:
area = base * altura / 2
Do lado esquerdo do = só pode estar uma variável.
Do lado direito do = pode estar uma expressão matemática,
por muito complexa que seja.
A atribuição é uma operação destrutiva, isto é, o valor
anterior é perdido.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Categorias de Operadores

Principais categorias:

Aritméticos

Relacionais

Lógicos

Atribuição

Funções Matemáticas
Aritméticos
Operador

+, -, *, /, …
+-

>, >=, <, <=, <>, =

And, Or, Not
+*/

=, +=, -=, *=, /=, …

^
Math.Cos, Math.Sin e Math.Tan (co-seno, seno e tangente), Math.Sqrt
(square root = raiz quadrada), Math.Round (arredondar)
Vitor Pereira [[email protected]]
\
Mod
Descrição
Exemplos
Identidade e Negação (operadores
unários)
Se x=-5, então:
+x = +(-5) = -5
-x = -(-5) = 5
Exponenciação. Operador que eleva
uma expressão a um valor.
2^3 = 8
5^2 = 25
Adição, Subtracção,
Multiplicação e Divisão (Real)
Divisão inteira. Devolve um quociente
inteiro, ignorando o resto.
5/2 = 2.5
-2*-3 = 6
10\3 = 3
5\2 = 2
10 Mod 3 = 1
Resto da divisão inteira. Divide dois
números e devolve o resto dessa divisão. 20 Mod 4 = 0
Vitor Pereira [[email protected]]
50
Relacionais
(resultado: True ou False)
Operador
Descrição
=
(Igual)
Devolve True se os operandos forem iguais; False caso
contrário.
<>
(Diferente)
Devolve True se os operandos forem diferentes; False
caso contrário.
>
(Maior do que)
Devolve True se o operando da esquerda for maior do
que o operando da direita; False caso contrário.
>=
(Maior ou igual)
Devolve True se o operando da esquerda for maior ou
igual do que o operando da direita; False caso
contrário.
<
(Menor do que)
<=
(Menor ou igual)
Devolve True se o operando da esquerda for menor do
que o operando da direita; False caso contrário.
Devolve True se o operando da esquerda for menor ou
igual do que o operando da direita; False caso
contrário.
Exemplos
10=20 (False)
20=10 (False)
10=10 (True)
10<>20 (True)
20<>10 (True)
10<>10 (False)
10>20 (False)
20>10 (True)
10>10 (False)
10>=20 (False)
20>=10 (True)
10>=10 (True)
10<20 (True)
20<10 (False)
10<10 (False)
10<=20 (True)
20<=10 (False)
10<=10 (True)
And/Or
A
B
A And B
A Or B
F
V
F
V
V
V
V
V
F
V

Not
F
F
F
F
Not A
V
F
F

Nota: A e B são duas condições.



Português
E (conjunção)
OU (disjunção)
NÃO (negação)
Visual Basic
And
Or
Not
Exemplo:
If x > y And x > z Then
…
End If

Vitor Pereira [[email protected]]
Atribuição
(X e Y são reais com os valores 5 e 10)
Operador
F
V
A

Vitor Pereira [[email protected]]
Lógicos: Tabelas de Verdade

Lógicos
Atribuição simples
+=
Adiciona e atribui
-=
Subtrai e atribui
*=
/=
V
\=
^=
Vitor Pereira [[email protected]]
Descrição
=
Exemplos
X=2
X = 20
X -= 1
X -= Y
X=4
X = -5
X += 2
X += X + Y
Multiplica e atribui
X *= X
Divide e atribui
(o quociente é inteiro)
Y \= 3
Y \= X + 1
Divide e atribui
(o quociente é real)
Exponencia e atribui
Resultado
X=2
X=2*Y
X /= 2
X ^= 2
Y ^= X - 1
X=7
X = 20
X = 25
X = 2.5
Y=3
Y = 1 (e não 3)
X = 25
Y = 10000
(e não
99999)
Vitor Pereira [[email protected]]
51
A Classe Math


Funções Matemáticas (Math.)
Acesso a funções predefinidas básicas.
Digite Math. para seleccionar uma função:
Nome da Função
Abs
Cos, Sin, Tan
Log
Calcula o logaritmo na base 10 de um valor.
Max, Min
Calculam o valor máximo e mínimo entre dois valores.
Round
Arredonda um valor para o inteiro mais próximo ou para
um número especificado de casas decimais.
Constante que representa o valor de p.
PI
Sqrt
Calcula a raíz quadrada (SQuare RooT) de um valor.
Truncate
Retorna a parte inteira de um valor.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Decisão: If…Then…Else
Precedência dos Operadores
Operador
Significado

Associatividade
^
–
*, /
Exponenciação
Negação (unário)
Multiplicação e divisão
EsquerdaDireita
EsquerdaDireita

+, –
>, <, >=, <=,
Adição, subtracção
Operadores relacionais
EsquerdaDireita

<>, =

Vitor Pereira [[email protected]]
Calculam, respectivamente, o co-seno, seno e tangente de
um ângulo (em radianos).
Calcula o logaritmo natural de um valor.
Log10
Por ordem decrescente de precedência; operadores na
mesma linha têm precedência igual
Significado
Calcula o valor absoluto (módulo) de um valor.
Sintaxe:
If <condição1> Then
' instruções a executar se condição1 for verdadeira
ElseIf <condição2> Then
' instruções a executar se condição2 for verdadeira
Else
' instruções a executar caso todas as condições anteriores falhem
End If
As componentes ElseIf e Else são opcionais (use tantos
ElseIf quantos forem necessários).
Apenas é permitido um Else e terá que ser a última das
alternativas.
Digite if seguido de dois TABs para inserir uma decisão.
Vitor Pereira [[email protected]]
52
If…Then…Else: exemplo
Dim nota As Integer = 15
Decisão: Select Case

If nota <= 4 Then
Console.WriteLine("Muito Insuficiente")
ElseIf nota < 10 Then
Console.WriteLine("Insuficiente")
ElseIf nota < 15 Then
Console.WriteLine("Suficiente")
Else
Console.WriteLine("Bom")
End If



Sintaxe:
Select Case <expressaodeteste>
Case <listaexpressoes>
' instruções se <listaexpressoes> for Verdadeiro para <expressaodeteste>
…
Case Else
' instruções a executar se todas as condições anteriores falharem
End Select
<expressaodeteste> é uma variável de cujo valor dependem as instruções a
executar. Use tantas componentes Case quantas forem necessárias.
As instruções associadas à componente Case Else serão executadas caso todas
as <listaexpressoes> falharem.
<listaexpressoes> pode ser:



Um conjunto de valores separados por vírgula: valor1, valor2, … , valorn.
Um intervalo de valores: inicio To fim.
Uma condição envolvendo um operador relacional (>, >=, <, <=). Exemplo: <= 10.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Select Case: exemplo
' Digite sel seguido de dois TABs para inserir um Select Case.
For i = 1 To 10
Select Case i
Case 1
Console.WriteLine("Igual a 1")
Case 2
Console.WriteLine("Igual a 2")
Case 3, 4, 5
Console.WriteLine("Igual a 3 ou 4 ou 5")
Case Else
Console.WriteLine("Diferente de 1 a 5")
End Select
Next
Repetições (Ciclos)

For…Next



Do While…Loop



Realizado zero ou mais vezes.
Usado normalmente em ciclos controlados por uma sentinela (repetir
instruções um número indeterminado/desconhecido de vezes).
For Each…Next


Vitor Pereira [[email protected]]
Realizado zero ou mais vezes.
Frequentemente usado para repetir instruções um número
determinado/conhecido de vezes (por exemplo, 10 ou n).
Realizado zero ou mais vezes.
Usado para percorrer todos os elementos de uma colecção, como um vector.
Vitor Pereira [[email protected]]
53
Repetição: For…Next

' Ciclo realizado 10 vezes: 1 a 10.
For i = 1 To 10
Console.WriteLine(i)
Next
Sintaxe:
For variavel [As tipodedados] = inicio To fim [Step incremento]
<instruções a repetir>
Next

<variavel>: variável usada para contar o número de repetições.
<tipodedados>: tipo de dados numérico da variável (Integer ou Double,
por exemplo). É opcional.
<inicio>: valor de início da contagem.
<fim>: valor de fim da contagem.
<incremento>: valor do incremento à variável.

Digite for seguido de dois TABs para inserir o ciclo for.




For…Next: exemplos
' Ciclo realizado 10 vezes: 10 a 1.
For i = 10 To 1 Step -1
Console.WriteLine(i)
Next
' Ciclo NÃO realizado.
For i = 10 To 1
Console.WriteLine(i)
Next
Vitor Pereira [[email protected]]
Repetição: Do While…Loop




Sintaxe Do While…Loop:
Do While <condição>
' instruções a repetir
Loop
O ciclo é repetido enquanto (while) a condição for Verdadeira.
Quando a condição se tornar falsa, o programa continua na
instrução imediatamente a seguir à linha com o Loop.
Digite dowhile seguido de TAB para o Visual Basic inserir um
ciclo Do While…Loop.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Do While…Loop: exemplo
' Este programa lê um número desconhecido de valores.
' Lê um valor.
Console.Write("Insira um valor (-1 para terminar): ")
Dim valor As Integer = Console.ReadLine()
Dim conta As Integer = 0
' Repete enquanto o valor for diferente de -1 (que é a sentinela).
Do While valor <> -1
conta += 1
' Conta mais um valor lido.
' Lê mais um valor.
Console.Write("Insira um valor (-1 para terminar): ")
valor = Console.ReadLine()
Loop
Console.WriteLine("Foram lidos " & conta & " valores.")
Vitor Pereira [[email protected]]
54
Repetição: For Each…Next

Usado quando se pretende, cumulativamente:






Aceder a todos os elementos de um vector (e não apenas a uma parte);
Percorrer o vector do início para o fim (e não do fim para o início);
Apenas ler os valores (e não modificá-los).
Sintaxe:
For Each <variavel> In <vector>
' instruções a repetir
Next
<variavel> é uma variável que vai tomar todos os valores do vector.
<vector> é o vector/colecção a percorrer.
For Each…Next: exemplo
' Ver também exemplo com vectores.
' Este programa lê um texto e mostra-o invertido.
Console.Write("Insira um texto: ")
Dim str As String = Console.ReadLine()
' Inverte os caracteres.
Dim inverte As String = ""
For Each letra In str
inverte = letra & inverte
Next
Console.WriteLine("Texto invertido: " & inverte)
Vitor Pereira [[email protected]]
Subprogramas




Funções e Subrotinas: Diferenças
Também designados por procedimentos ou métodos.
Definição: é um bloco de instruções, independente e
delimitado, que executa uma tarefa específica, como parte de
um programa.
Tipos de procedimentos:


Vitor Pereira [[email protected]]


Subrotinas
Funções

Permitem dividir o programa: mais fácil de codificar e testar.
Permitem a reutilização de código.
Escondem detalhes da codificação.

Vantagens:



Vitor Pereira [[email protected]]
Uma função devolve um valor para a instrução que a
chamou.
Exemplos:
nome = Console.ReadLine()
res = Math.Sqrt(x)
area = AreaCirculo(raio)
media = Media(notas)
Uma subrotina não devolve nenhum valor.

Exemplos:
Console.WriteLine(“Visual Basic”)
ImprimeRelatorio()
CalculaTotaisMensais(clientes)
Por outras palavras, uma função tem sempre um tipo e um
valor de retorno associados, enquanto que uma subrotina
não devolve qualquer valor.
Vitor Pereira [[email protected]]
55
Características dos Métodos I




Cada método tem que ter um nome único, o qual
serve para a sua invocação algures no programa a
que pertence.
Um método pode ser chamado a partir de outro
método.
Um método deve realizar UMA ÚNICA TAREFA bem
definida.
Um método deve comportar-se como uma “caixa
negra”. Não interessa como funciona, o que
interessa é que o resultado final seja o esperado,
sem efeitos colaterais.
Características dos Métodos II




O código de um método deve ser o mais independente
possível do resto do programa, e deve ser tão genérico
quanto possível, para poder ser reutilizado noutros projectos.
Um método pode receber valores que alterem o seu
comportamento de forma a adaptar-se facilmente a situações
distintas.
Uma função deve retornar, para o procedimento que a
chamou, um valor como resultado do seu trabalho.
O código de um método só é executado quando é chamado
pelo programa onde se encontra.
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Como Funciona um Método



Sempre que um método é chamado, o procedimento que o
chamou é suspenso temporariamente. Em seguida são
executadas as instruções presentes no corpo do método.
Uma vez terminado o método, o controlo de execução do
programa volta ao local em que este foi chamado.
O programa que invoca o método pode enviar argumentos,
que são recebidos pelo método. Estes são recebidos e
armazenados em variáveis locais que são automaticamente
iniciadas com os valores enviados. A estas variáveis dá-se o
nome de parâmetros.
Vitor Pereira [[email protected]]
Classificação de Métodos I

Quanto ao valor de retorno:



Não retornam valor (ou seja, subrotinas):
Console.WriteLine()
Retornam um valor (funções):
Dim str As String = Console.ReadLine()
Dim d As Double = Math.Sqrt(10)
Número de parâmetros:

Zero, um, dois, três, quatro, cinco, seis, …
Dim str As String = Console.ReadLine()
Dim d1 As Double = Math.Sqrt(10)
Dim d2 As Double = Math.Round(3.1415, 3)
Vitor Pereira [[email protected]]
56
Classificação de Métodos II


Tipo de dados retornado:

Integer, Double, String, Date, Boolean, estrutura, vector de qualquer
tipo de dados, …
Dim res As Double = Math.Sqrt(10);
Dim pos As Integer = str.IndexOf("idade");
Dim existe As Boolean = str.Contains("dade");
Tipo de método:

Partilhado. Pertence à classe. Sintaxe: classe.metodo

De instância. Pertence ao objecto. Sintaxe: variavel.metodo
Dim str As String = String.Concat("string", 123, 456.7)
str = String.Format("{0:X}", 255)
Dim i As Integer = str.IndexOf("idade")
Dim existe As Boolean = str.Contains("dade")
Declaração de Métodos

Subrotinas

Funções



Vitor Pereira [[email protected]]


Function <NomeDaFunção>(<listadeparâmetros>) As <tipodedados>
End Function
<NomeDaSubrotina>/<NomeDaFunção> é o nome da subrotina/função
escolhido pelo programador.
<listadeparâmetros> é uma lista opcional de parâmetros (valores) que o
procedimento recebe do procedimento que o chama.
<tipodedados> é o tipo de dados do valor que a função retorna.
Nomes de Métodos I
A instrução Return permite terminar o procedimento,
passando o controlo de execução do programa para
o local em que o método foi chamado.
Em funções devem possuir uma expressão que
retorne um valor. Sintaxe:

End Sub
Vitor Pereira [[email protected]]
A instrução Return

Sub <NomeDaSubrotina>(<listadeparâmetros>)
Return resultado
Podem existir vários Return num procedimento.
Vitor Pereira [[email protected]]



A escolha do nome de um método obedece às
mesmas regras apresentadas para a criação de
nomes de variáveis.
O nome de um método deve ser único (não pode ser
igual ao nome de outro método ou de uma variável).
O nome de um método deve especificar aquilo que o
procedimento na realidade faz e deve ser de fácil
leitura e interpretação.
Vitor Pereira [[email protected]]
57
Nomes de Métodos II

Use a técnica conhecida por Pascal Casing,
(origem na linguagem de programação Pascal).


Tudo em minúsculas excepto a primeira letra de cada
palavra.
Exemplos:






VolumeCilindro
AlcanceProjectil
CalculaTotaisMensais
CalculaBonusColaboradores
ImprimeRelatorioMensal
LeDadosClientes
Métodos: exemplos
' Retorna a média de três valores.
Function Media3(ByVal x As Double, ByVal y As Double, ByVal z As Double) As Double
' Variável temporária para cálculo da média
Dim media As Double = (x + y + z) / 3
' Retorna a média
Return media
End Function
' Recebe um valor e retorna o quadrado do valor.
Function Quadrado(ByVal n As Double) As Double
' Como se trata de um cálculo trivial,
' não é necessário uma variável temporária.
Return n * n
End Function
' As funções podem chamar outras funções.
Function Cubo(ByVal n As Double) As Double
' Chama a função Quadrado.
Return Quadrado(n) * n
End Function
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Vectores

Declaração:

Declaração e iniciação:

Exemplos:
Vectores: exemplo
' Dimensionar vector para armazenar 10 inteiros.
Dim notas(9) As Integer
Dim <variavel>(<ultimoindice>) As <tipodedados>
Dim <variavel>() As <tipodedados> = {<valores>}




' Ler as notas para o vector
For i = 0 To notas.Length - 1
Console.Write("Insira a nota " & i + 1 & ": ")
Dimensionar vector para 10 inteiros. Índices 0 a 9:
Dim notas(9) As Integer
Dimensionar e iniciar 4 Double:
Dim valores() As Double = { 1.1, 2.2, 3.3, 4.4 }
Dimensionar 20 strings:
Next
Dim nomes(19) As String
Dimensionar 10 elementos da estrutura Estudante:
Dim turma(9) As Estudante
Vitor Pereira [[email protected]]
' Ler nota
notas(i) = Console.ReadLine()
Vitor Pereira [[email protected]]
58
Ciclo: For Each

Usado quando se pretende, cumulativamente:





For Each: exemplo
Aceder a todos os elementos de um vector (e não apenas a uma parte);
Percorrer o vector do início para o fim (e não do fim para o início);
Apenas ler os valores (e não modificá-los).
' Assume a existência de um vector chamado notas
' (ver exemplo com vectores)
Sintaxe:
' Calcula a média de todas as notas
Dim soma As Integer = 0
<variavel> é uma variável que vai tomar todos os valores do vector.
<vector> é o vector/colecção a percorrer.
For Each nota In notas
' Soma todas as notas
soma += nota
Next

For Each <variavel> In <vector>
' instruções a repetir
Next
Console.WriteLine("Média: " & soma / notas.Length)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Manipulação de Strings

Operações Básicas:





Criar strings
Comparar strings
Obter o número de caracteres de uma string
Procurar texto (strings) dentro de strings
Extrair texto (strings) de strings
Vitor Pereira [[email protected]]
Criar strings


Declaração e Iniciação
Dim tipo As String
tipo = "Universidade"
Dim nome As String = "Lusíada"
Concatenação (operador &)
nome = tipo & " " & nome
' nome = "Universidade Lusíada"
Vitor Pereira [[email protected]]
59
Comparar strings


Comprimento de uma String
Pode-se comparar/relacionar strings, por exemplo para
se fazer uma ordenação alfabética, utilizando o método
Compare:
Exemplo:
Dim str1, str2 As String
str1 = "Programação"
str2 = "Visual"
If String.Compare(str1, str2) = 0 Then
' str1 é igual a str2
ElseIf String.Compare(str1, str2) < 0 Then
' str1 é "menor" do que str2
Else
' str1 é "maior" do que str2
End If


A propriedade Length dá o comprimento
(número de caracteres) de uma string:
Exemplo:
Dim str As String = "Visual Basic"
Console.WriteLine ("Comprimento: " & str.Length)
' Output: Comprimento: 12
str = ""
Console.WriteLine ("Comprimento: " & str.Length)
' Output: Comprimento: 0
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Procurar texto numa string


A função IndexOf permite procurar uma string dentro de
outra string (dá-nos a posição da string procurada na
string a procurar; se a string a procurar não existir, a
posição é -1):
Exemplo:
' procurar uma string dentro de outra
Dim str As String = "Visual Basic"
Dim pos As Integer = str.IndexOf("Basic")
' pos = 7 (posição a partir da qual se encontra a
string procurada)
Vitor Pereira [[email protected]]
Extrair um carácter de uma string


A utilização de parênteses curvos permite o acesso aos
caracteres de uma string (o primeiro carácter está na
posição zero; o último na posição Length-1):
Exemplo:
' escreve um carácter por linha
Dim str As String = "Visual Basic"
Console.WriteLine (str(0))
For i = 1 To str.Length - 1
Console.WriteLine(str(i))
Next
Vitor Pereira [[email protected]]
60
Extrair substrings de strings


O método SubString permite extrair uma string de
dentro de outra string:
Exemplo:
A classe String

Métodos de classe.

Métodos de variável (ou
instância).
Dim str As String = "Visual Basic"
Dim pos As Integer = str.IndexOf(" ")
' extrai uma string a partir da primeira
' posição (0) com o comprimento pos
Dim primeira As String = str.SubString(0, pos)
' extrair a segunda palavra
Dim segunda As String = str.SubString(pos + 1)
Vitor Pereira [[email protected]]
Vitor Pereira [[email protected]]
Métodos Predefinidos


Nenhum destes métodos altera a string original.


Utilize o operador atribuição (=) para guardar o resultado da operação
(na mesma ou outra string).
Exemplo: str = str.ToLower
Principais métodos predefinidos







EndsWith – verifica se uma string termina com outra string.
StartsWith – verifica se uma string começa com outra string.
Insert – insere uma string numa determinada posição.
Remove – remove um determinado número de caracteres.
Replace – substitui numa string uma determinada string por outra.
ToUpper/ToLower – converte para maiúsculas/minúsculas.
Trim – elimina espaços à esquerda e à direita de uma string.
Vitor Pereira [[email protected]]
Métodos por Categoria
Categoria
Métodos
Remover caracteres
Trim, Remove
Criar strings
Comparar
Procurar
Converter
Extrair caracteres
(substrings)
Inserir/Substituir
&, &=, Format, Concat, Join
Compare, StartsWith, EndsWith
Contains, IndexOf, LastIndexOf
ToUpper, ToLower
(), Substring
Insert, Replace
Vitor Pereira [[email protected]]
61
Download

Algoritmia e Programação Sumário Algoritmia e Programação