Академический Документы
Профессиональный Документы
Культура Документы
ÍNDICE
OBJETIVOS DO CURSO....................................................................................................................................................4
MÓDULOS DO CURSO...................................................................................................................................................4
LÓGICA..............................................................................................................................................................................5
O QUE É LÓGICA?............................................................................................................................................................5
A LÓGICA NO DIA-A-DIA..................................................................................................................................................5
TRANSFORMANDO A LÓGICA EM ALGORITMO.................................................................................................................6
O que é Algoritmo?....................................................................................................................................................6
CONCEITOS PRELIMINARES....................................................................................................................................10
TIPOS..............................................................................................................................................................................10
CONSTANTES..................................................................................................................................................................11
VARIÁVEIS.....................................................................................................................................................................12
Declarando Variáveis...............................................................................................................................................12
EXPRESSÕES ARITMÉTICAS.............................................................................................................................................13
Operadores Aritméticos............................................................................................................................................13
Funções Matemáticas...............................................................................................................................................14
Prioridade de Resolução..........................................................................................................................................15
EXPRESSÕES LÓGICAS....................................................................................................................................................15
Operadores Relacionais...........................................................................................................................................15
Operadores Lógicos.................................................................................................................................................16
COMANDO DE ATRIBUIÇÃO............................................................................................................................................17
COMANDOS DE ENTRADA E SAÍDA................................................................................................................................18
Entrada de Dados.....................................................................................................................................................18
Saída de Dados.........................................................................................................................................................18
BLOCOS..........................................................................................................................................................................19
ESTRUTURAS DE CONTROLE...................................................................................................................................19
ESTRUTURA SEQÜENCIAL..............................................................................................................................................19
ESTRUTURA DE SELEÇÃO...............................................................................................................................................21
Seleção Simples........................................................................................................................................................23
Seleção Composta....................................................................................................................................................24
Seleção Encadeada...................................................................................................................................................27
Seleção de Múltipla Escolha....................................................................................................................................31
ESTRUTURA DE REPETIÇÃO............................................................................................................................................33
Repetição com Teste no Início..................................................................................................................................33
Repetição com Teste no final....................................................................................................................................34
Repetição com Variável de Controle........................................................................................................................39
ESTRUTURAS DE DADOS............................................................................................................................................40
VARIÁVEIS COMPOSTAS HOMOGÊNEAS.........................................................................................................................40
Vetores......................................................................................................................................................................40
Matrizes....................................................................................................................................................................44
VARIÁVEIS COMPOSTAS HETEROGÊNEAS......................................................................................................................46
Registros...................................................................................................................................................................46
ARQUIVOS.......................................................................................................................................................................51
ABRINDO UM ARQUIVO..................................................................................................................................................53
FECHANDO UM ARQUIVO...............................................................................................................................................54
COPIANDO UM REGISTRO...............................................................................................................................................54
GUARDANDO UM REGISTRO...........................................................................................................................................55
ACESSO SEQÜENCIAL.....................................................................................................................................................56
ACESSO DIRETO.............................................................................................................................................................58
MÓDULOS.......................................................................................................................................................................60
O QUE É MÓDULO?.........................................................................................................................................................60
ESCOPO DE VARIÁVEIS..................................................................................................................................................61
PASSAGEM DE PARÂMETROS..........................................................................................................................................62
Página 1
Curso de Lógica de Programação
RETORNANDO VALORES DE UM MÓDULO.....................................................................................................................64
ESTRUTURA DE DADOS AVANÇADA.......................................................................................................................65
LISTAS............................................................................................................................................................................65
Inserção de Elementos em uma Lista.......................................................................................................................66
Remoção de Elementos em uma Lista......................................................................................................................68
FILAS..............................................................................................................................................................................69
Inserção de Elementos em uma Fila........................................................................................................................70
Remoção de Elementos em uma fila.........................................................................................................................71
PILHAS............................................................................................................................................................................72
Inserção de Elementos em uma Fila........................................................................................................................73
Removendo Elementos de uma Pilha.......................................................................................................................74
ÁRVORES........................................................................................................................................................................74
INTRODUÇÃO À LINGUAGENS DE PROGRAMAÇÃO........................................................................................78
LINGUAGEM DE PROGRAMAÇÃO....................................................................................................................................78
COMPILADOR..................................................................................................................................................................78
CÓDIGO FONTE...............................................................................................................................................................79
EXECUTÁVEL..................................................................................................................................................................79
SISTEMA OPERACIONAL.................................................................................................................................................79
LINGUAGEM DE MÁQUINA.............................................................................................................................................80
LINGUAGENS PARA DOS................................................................................................................................................80
LINGUAGENS PARA WINDOWS.......................................................................................................................................80
LINGUAGEM DE FORMATAÇÃO.......................................................................................................................................80
LINGUAGEM VISUAL......................................................................................................................................................81
LINGUAGEM ORIENTADA A OBJETOS.............................................................................................................................81
LINGUAGEM ESTRUTURADA..........................................................................................................................................81
LINGUAGEM NÃO ESTRUTURADA..................................................................................................................................81
BANCO DE DADOS..........................................................................................................................................................82
TABELA DE CLASSIFICAÇÃO..........................................................................................................................................82
INTRODUÇÃO AO VISUAL BASIC............................................................................................................................83
CARACTERÍSTICAS DA LINGUAGEM VISUAL BASIC.......................................................................................................83
COMANDOS DO VISUAL BASIC.......................................................................................................................................83
For ... Next................................................................................................................................................................83
For ... Each...............................................................................................................................................................84
While ... Wend...........................................................................................................................................................85
Do While / Loop........................................................................................................................................................85
Do / Loop Until.........................................................................................................................................................86
If / Then / Else / End If..............................................................................................................................................87
IIf..............................................................................................................................................................................88
Select Case / End Select...........................................................................................................................................88
INTRODUÇÃO AO DELPHI.........................................................................................................................................89
CARACTERÍSTICAS DA LINGUAGEM DELPHI..................................................................................................................89
COMANDOS DO DELPHI..................................................................................................................................................90
If ... Then...................................................................................................................................................................90
Case ...of...................................................................................................................................................................91
Repeat ... Until..........................................................................................................................................................92
While ... Do...............................................................................................................................................................93
For ... Do..................................................................................................................................................................93
INTRODUÇÃO A LINGUAGEM ORIENTADA A OBJETOS...................................................................................95
OBJETO...........................................................................................................................................................................95
PROPRIEDADES...............................................................................................................................................................95
MÉTODOS.......................................................................................................................................................................96
EVENTOS........................................................................................................................................................................96
CLASSES DE OBJETOS.....................................................................................................................................................96
ENCAPSULAMENTO.........................................................................................................................................................96
HERANÇA.......................................................................................................................................................................97
POLIMORFISMO...............................................................................................................................................................97
Página 2
Curso de Lógica de Programação
ÍNDICE DE EXEMPLOS
Algoritmos
Visual Basic
Delphi
Página 3
Curso de Lógica de Programação
OBJETIVOS DO CURSO
O que é lógica
O que é raciocínio lógico
O que é algoritmo
Como fazer um algoritmo
Conceitos Básicos de Programação
O que são e quais são as Estruturas de Controle
O que são e quais são as Estruturas de Dados
O que é Arquivo
O que é Módulo
Aspectos Básicos sobre Estrutura de Dados Avançada
Conceitos Gerais das Linguagens de Programação
Conceitos Básicos da Programação Orientada a Objetos
Características Básicas da Linguagem DELPHI
Comandos da Linguagem DELPHI
Características Básicas da Linguagem VISUAL BASIC
Comandos da Linguagem VISUAL BASIC
MÓDULOS DO CURSO
1 - Lógica
2 - Conceitos Básicos
3 - Estruturas de Controle
4 - Estrutura de Dados
5 - Arquivos
6 - Módulos
7 - Estrutura de dados Avançada
8 - Introdução ao DELPHI
9 - Introdução ao VISUAL BASIC
10 - Conceitos Gerais das Linguagens de Programação
11 - Introdução à Linguagem Orientada a Objetos
Página 4
Curso de Lógica de Programação
LÓGICA
O que é Lógica?
Exemplos:
A Lógica no dia-a-dia
Exemplos:
Página 5
Curso de Lógica de Programação
O que é Algoritmo?
“Algoritmo é uma seqüência de passos que visam atingir um objetivo bem definido.”
Algoritmos são comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela
está descrita uma série de ingredientes e uma seqüência de diversos passos - ações - necessários para
que se consiga fazer determinado tipo de bolo - que é o objetivo bem definido e aguardado por todos.
Ou então um mapa para chegar à escola, que também possui uma seqüência de passos a
serem seguidos e um objetivo bem definido. Para melhor entendimento do conceito de algoritmo,
vamos tornar mais claro alguns outros conceitos, como, por exemplo, o de ação:
Em resumo, um Algoritmo fixa uma série de passos a ser executada, com o objetivo de
encontrar, como resultado final, a solução de um problema.
Vamos, então, descrever uma atividade bem cotidiana, como, por exemplo, abrir uma
porta. Muitas vezes fazemos este tipo de atividade inconscientemente, sem percebermos seus pequenos
detalhes.
pegue a chave;
coloque-a na fechadura da porta;
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta.
Página 6
Curso de Lógica de Programação
Neste algoritmo representamos uma seqüência de ações que são realizadas
involuntariamente, fazendo com que o algoritmo seja seguido por qualquer pessoa, estabelecendo um
padrão de comportamento (qualquer pessoa agiria da mesma maneira).
Reexaminando o algoritmo anterior, notamos que ele tem um objetivo bem definido: abrir
uma porta. Porém, e se a chave escolhida não for a certa? Aconteceria um erro no meio da execução
dos passos e o objetivo final (abrir a porta) não seria alcançado.
Como solução para esse problema, podemos efetuar um teste, verificando se a chave é a
certa:
pegue a chave;
coloque-a na fechadura da porta;
se a chave for a certa, então:
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta.
Deste modo estamos associando algumas ações à condição (chave é a certa), ou seja, se
esta for verdadeira, conseguiremos abrir a porta:
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta.
Mas, e se a condição (chave é a certa) for falsa (chave errada)? Não acontecerá erro
durante a execução da seqüência de passos mas também o objetivo final não será alcançado pois a
porta não será aberta. Precisamos então colocar os passos a serem executados caso a chave escolhida
seja a errada.
pegue a chave;
coloque-a na fechadura da porta;
se a chave for a certa, então:
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta;
se a chave for errada:
pegue outra chave;
coloque-a na fechadura da porta;
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta;
O que ocorreu neste algoritmo foi a inclusão de um teste seletivo (condição) que determina
qual ou quais ações serão executadas (note que anteriormente todas o eram), dependendo do resultado
da inspeção da condição.
Página 7
Curso de Lógica de Programação
Como cada pessoa pensa e age de maneira diferente, existem várias formas de resolver um
mesmo problema. Isto significa que para este problema poderíamos ter diversas soluções diferentes e
corretas (se todas atingissem o mesmo resultado), e portanto somente o bom senso é capaz de indicar
qual delas é a mais adequada.
Esta algoritmo parece solucionar bem o problema mas ele não prevê a possibilidade de
que a nova chave também não seja a certa e, portanto, não atinja o objetivo nesta situação específica.
Devemos então pegar outra chave diversas vezes, se necessário, até que encontremos a certa:
pegue a chave;
coloque-a na fechadura da porta;
se a chave for a certa, então:
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta;
se a chave for errada:
pegue outra chave;
coloque-a na fechadura da porta;
se a chave for a certa, então:
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta;
se a chave for errada:
pegue outra chave;
coloque-a na fechadura da porta;
se a chave for a certa, então:
.
.
.
(Até quando?)
Portanto, não precisamos escrever várias vezes esta determinada seqüência. Basta, após a
ação “coloque-a na fechadura da porta” executarmos o teste “ se a chave for errada”. Desta forma, esta
seqüência será realizada o número de vezes necessário, sendo escrita apenas uma vez. Só precisamos
determinar um limite para tal repetição para garantir que ela pare quando encontrarmos a chave certa.
Página 8
Curso de Lógica de Programação
A condição (chave errada) permaneceu, e estabelecemos uma seqüência repetitiva que será
finalizada assim que a condição for falsa (chave certa).
pegue a chave;
coloque-a na fechadura da porta;
enquanto a chave for errada, faça:
pegue outra chave;
coloque-a na fechadura da porta;
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta;
pegue a chave;
coloque-a na fechadura da porta;
enquanto a chave for errada, faça:
pegue outra chave;
coloque-a na fechadura da porta;
gire a chave;
tire a chave da fechadura;
segure a maçaneta;
gire a maçaneta;
pegue a chave;
coloque-a na fechadura da porta;
enquanto a chave for errada, faça:
.
.
.
pegue a chave;
coloque-a na fechadura da porta;
enquanto a chave for errada, faça:
.
.
.
Para abrir dez portas teríamos que repetir dez vezes o algoritmo, como mostrado acima? É
claro que não. Basta executarmos o mesmo algoritmo quantas vezes for necessário - no caso, dez:
Página 9
Curso de Lógica de Programação
Enquanto a condição (quantidade de portas abertas menor que dez) for verdadeira, as ações
para abrir uma porta serão executadas. Caso a condição for falsa, ou seja, todas as dez portas já estão
abertas (quantidade de portas abertas igual a dez), nada mais será executado.
Este exemplo foi desenvolvido a partir do problema de se abrir uma porta. Foram descritas
todas as ações necessárias para chegar a este objetivo, ou seja, foi escrito um algoritmo para este fim.
Nota:
Inicialmente tínhamos apenas um pequeno conjunto de ações que deveriam ser executadas
todas passo a passo, uma após a outra, seqüencialmente compondo uma estrutura seqüencial.
Quando percebemos que nem todas as ações deveriam ser executadas, associamos uma
condição a um conjunto de ações que só seria executado conforme o resultado do teste da condição.
Desta forma, construímos uma estrutura seletiva.
Depois nos deparamos com a necessidade de repetir várias vezes um mesmo conjunto de
ações. Para não precisarmos escrever várias vezes o mesmo trecho do algoritmo, criamos uma
estrutura de repetição de modo que este trecho fosse executado diversas vezes enquanto uma
condição não fosse satisfeita.
É muito simples o ato de se abrir uma porta, tanto para nós como para qualquer outra
pessoa. Poderíamos realiza-lo inconscientemente, baseando-nos em nossas próprias experiências. Mas
um computador não tem conhecimento prévio e nem adquire experiências, portanto devemos descrever
detalhadamente todos as ações que ele deverá realizar para alcançar o objetivo final, levando-se em
conta todos os obstáculos que podem surgir e a forma para resolve-los. É nisto que se baseia o
atividade de programar.
CONCEITOS PRELIMINARES
Tipos
1. Inteiro: toda informação numérica que pertença ao conjunto dos números inteiros
relativos (negativa, nula ou positiva).
Página 10
Curso de Lógica de Programação
Exemplos:
2. Real: toda informação numérica que pertença ao conjunto dos números reais (negativa,
nula ou positiva).
Exemplos:
Exemplos:
Exemplos:
Constantes
Página 11
Curso de Lógica de Programação
As informações constantes de tipo caractere serão delimitadas por um par de aspas (“ “)
para serem diferenciadas de outros tipos de informação. Por convenção, as informações de tipo lógico
são sempre verdadeiras ou falsas.
Exemplos:
Variáveis
Uma informação é considerada variável quando tem a possibilidade de ser alterada durante
o decorrer do tempo. No caso da programação, é quando ela pode ter seu valor alterado durante a
execução do programa.
Vamos supor que precisássemos armazenar a média anual de temperatura. Não poderíamos
usar uma constante, pois o valor da média mudaria a cada ano. Usaríamos, então, um parâmetro para
armazenar o valor da média atual. Este parâmetro poderia ser chamado de MÉDIA. Este nome, que
poderíamos dizer que é o nome da variável que guardará o valor da média anual, é um identificador.
Para criar um identificador, devemos seguir as seguintes regras de formação:
Exemplos:
Declarando Variáveis
Página 12
Curso de Lógica de Programação
Exemplos:
inteiro: A;
real: X, Y, RESULTADO, VALOR;
caractere: NOME, TELEFONE, DATA;
lógico: RESPOSTA;
A é uma variável que só pode armazenar informação, ou valor, do tipo inteiro. A variável
NOME só pode guardar informação do tipo caractere, assim como a variável RESPOSTA só armazena
valores lógicos.
Devemos tomar o cuidado de não darmos o mesmo nome para duas ou mais variáveis, ou
seja, de declararmos duas ou mais variáveis com o mesmo nome pois, quando uma delas for
referenciada, o computador não saberá qual variável usar. Além disso, só poderemos guardar
informações em variáveis do mesmo tipo.
Expressões aritméticas
Expressões aritméticas são aquelas cujos operadores são aritméticos e cujos operandos são
constantes e/ou variáveis numéricas (tipo inteiro ou real).
Operadores Aritméticos
+ Adição
- Subtração
Multiplicação
/ Divisão
** Potenciação
// Radiciação
Regra de formação de expressões aritméticas:
Exemplos:
Página 13
Curso de Lógica de Programação
Existem outras operações matemáticas não-convencionais cujos nomes dos operadores são:
Exemplos :
11 div 2 resulta 5
11 mod 2 resulta 1
19 div 8 resulta 2
19 mod 8 resulta 3
Funções Matemáticas
Nas expressões aritméticas, podemos usar, além das operações básicas citadas acima,
algumas funções da matemática:
Onde x pode ser uma constante, variável, expressão aritmética ou também outra função
matemática.
Exemplos:
int(2.867) retorna 2
frac(2.867) retorna 867
ard(1.79) retorna 2
ard(1.43) retorna 1
abs(-8) retorna 8
sinal(-3) retorna -1
Página 14
Curso de Lógica de Programação
Prioridade de Resolução
Como já foi dito, em uma mesma expressão aritmética, podemos ter diferentes operações
e/ou funções matemáticas. Portanto, na hora da resolução precisamos obedecer a uma ordem de
prioridade existente, para não afetarmos o resultado final. A seguinte tabela representa esta ordem de
prioridade:
Quando duas operações possuem a mesma prioridade, resolvemos primeiro aquelas cujos
operadores estão mais à esquerda da tabela, a não ser que usemos parênteses mais internos, o mudaria
a prioridade descrita na tabela.
Expressões Lógicas
Expressões lógicas são aquelas cujos operadores são lógicos e/ou relacionais e cujos
operandos são relações e/ou variáveis e/ou constantes do tipo lógico.
Operadores Relacionais
Operadores relacionais são utilizados para fazerem comparações entre dois valores do
mesmo tipo. Estes valores podem ser constantes, variáveis ou expressões aritméticas. O resultado de
uma comparação é sempre um valor lógico. Os operadores relacionais são:
= Igual
> Maior
< Menor
<> Diferente
>= Maior ou igual
<= Menor ou igual
Exemplos:
Página 15
Curso de Lógica de Programação
15 > 10 V
4 =5 F
33 mod 4 <> 1 F
13 div 2 >= 2 V
Operadores Lógicos
Os operadores lógicos são utilizados para se fazer relações entre duas ou mais proposições
conhecidas, resultando em um valor lógico. Os operadores lógicos são:
e conjunção
ou disjunção (não-exclusiva)
xou disjunção (exclusiva)
não negação
Exemplos:
13 > 20 ou 7 = 7 V
10 >= 4 e 6 <> 6 F
não(2 < 9 ) ou 40 <= 34 F
12 > 2 xou 5 <> 8 F
Para melhor exemplificação, são listadas abaixo as Tabelas Verdade. Cada Tabela Verdade
é o conjunto de todas as possibilidades de combinação de um determinado operador lógico. Note que
as variáveis A e B só podem assumir dois valores, Falso ou Verdadeiro, pois são do tipo lógico:
não
e ou
xou
Página 16
Curso de Lógica de Programação
Exercícios
Equação: X2 + Y > Z
X Y Z
1 2 5 V( ) F( )
4 3 1 V( ) F( )
1 1 2 V( ) F( )
1 2 1 V( ) F( )
(10 mod 7 < 3 xou (10 div 2 = 5 xou 10 mod 3 > 10))
Comando de Atribuição
identificador expressão ;
Exemplo:
real: X, Y;
lógico: RESPOSTA;
X 3,5;
Y 14 div 3 + 0,9;
RESPOSTA X = Y;
De acordo com o exemplo, podemos perceber que as variáveis X e Y devem ser do tipo
real, já que valores reais são atribuídos à elas, e que a variável RESPOSTA deve ser do tipo lógico, já
que um valor lógico foi atribuído à ela. Tudo isso já foi explicitado na declaração das variáveis.
Página 17
Curso de Lógica de Programação
Quando o valor a ser atribuído a uma variável está representado por uma expressão
aritmética ou lógica, estas devem ser resolvidas primeiro, para que depois o resultado possa ser
armazenado na variável. Por exemplo, a variável RESPOSTA receberá verdadeiro se X =Y, caso
contrário, receberá falso.
Às vezes, em um programa, precisamos entrar com alguns dados para que este, depois de
executado, nos retorne outros dados. Por exemplo, um programa que soma dois números escolhidos
pelo usuário. Para poder ser executado, é necessário, antes de mais nada, que o usuário digite os dois
números a serem somados, aí então, o computador pode retornar o resultado (soma). Quando o usuário
digita os dois números a serem somados, ele está executando a entrada de dados. Quando o
computador devolve o resultado da soma para o usuário, ele está executando a saída de dados. Ou seja:
Entrada de Dados Processamento dos Dados Saída de Dados
7 12
7+5
5
Entrada de Dados
Leia ( variável ) ;
,
Exemplos:
leia ( X ) ;
leia ( A, NOTA, VALOR ) ;
Saída de Dados
Escreva ( variável ) ;
constante
expressão
,
Página 18
Curso de Lógica de Programação
Exemplos:
Escreva (Y);
Escreva (A, NOTA, VALOR) ;
Escreva ( “Meu nome é “, NOME ) ;
Escreva (“Você tem “, IDADE, “ anos “ ) ;
Blocos
Um bloco é um conjunto de comandos (ações) com um objetivo definido. Um algoritmo
pode ser considerado um bloco. As variáveis declaradas no interior de um bloco são conhecidas apenas
dentro desse bloco.
Exemplos:
ESTRUTURAS DE CONTROLE
Para que esse conjunto de ações se torne viável, deve existir uma relação lógica no modo
pelo qual essas ações são executadas.
Estrutura Seqüencial
É o conjunto de ações primitivas que serão executadas numa seqüência linear (de cima
para baixo e da esquerda para a direita), na mesma ordem em que foram escritas.
Página 19
Curso de Lógica de Programação
Todas as ações devem ser seguidas por um ponto e vírgula ( ; ), que tem como finalidade
separar uma ação de outra e auxiliar a organização seqüencial das ações, pois após encontrar um ( ; ),
devemos executar o próximo comando da seqüência.
Exemplo:
Temos:
Exercícios
Página 20
Curso de Lógica de Programação
Inicio
Inteiro: X,Y Resposta:
Real: Z
Leia ( X )
Escreva (X, “ao cubo = “, X**3)
Leia ( Y )
Escreva ( X + Y )
Z X/Y
Escreva ( Z )
Z Int( Z )
Escreva ( Z )
Z Z+1
X ( Y + Z ) mod 2
Escreva ( X )
Escreva ( Y )
Escreva ( Z )
Fim
Dados: X = 3
Y=4
Z=?
Página 21
Curso de Lógica de Programação
5) Crie um Algoritmo que calcule a área de uma circunferência, e no final apresente a medida da
área calculada:
Dados: A =
~ * R2
~ = 3,14159
6) Crie um Algoritmo que leia uma temperatura em graus Fahrenheit e apresente essa
temperatura convertida em graus Centígrados.
Página 22
Curso de Lógica de Programação
Estrutura de Seleção
É quando associamos a execução de um conjunto de comandos (ações) a uma determinada
condição, ou seja, se a condição for satisfeita, alguns comandos são executados ou não.
Seleção Simples
se <condição> então
comando; { comando único ( ação primitiva) }
fimse;
Onde:
<condição> é uma expressão lógica que, quando testada, pode gerar como resultado falso
ou verdadeiro.
Se <condição> for verdadeira, a ação primitiva sob a cláusula (comando) será executada.
Se <condição> for falsa, a estrutura é encerrada (fimse) sem executar nenhum comando.
Se <condição> então
início { bloco verdade }
C1;
C2; {seqüência de comandos }
.
.
Cn;
fim {bloco }
fimse;
Exemplo:
início
{ declaração de variáveis }
real : N1, N2, N3, N4, { notas bimestrais }
MA ; { média anual }
leia (N1, N2, N3, N4); {entrada de dados }
MA (N1+N2+N3+N4) / 4; { processamento }
escreva (MA); { saída de dados }
se MA >= 6 então
escreva ("Aluno Aprovado!");
fimse;
fim.
Exemplo 2 - Estrutura de Seleção Simples
Página 23
Curso de Lógica de Programação
Seleção Composta
se <condição> então
início { bloco verdade }
C1;
C2; { seqüência de comandos }
.
.
.
Cn;
fim; { bloco verdade }
senão
C; { comando único }
fimse;
O bloco verdade será executado se <condição> (expressão lógica) for verdadeira. Porém,
se <condição> for falsa, somente o comando C será executado, pois ele pertence à cláusula senão. A
existência do senão caracteriza a seleção composta.
Se existissem vários comandos a serem executados, caso a condição for falsa, a estrutura
do algoritmo ficaria assim:
se <condição> então
início { bloco verdade }
C1;
C2; { seqüência de comandos }
.
.
.
Cn;
fim { bloco verdade }
senão
início { bloco falso }
C1;
C2; { seqüência de comandos }
.
.
.
Cn;
fim { bloco falso }
fimse;
Página 24
Curso de Lógica de Programação
Exemplo:
início
{declaração de variáveis }
real : N1, N2, N3, N4, { notas bimestrais }
MA; { média anual }
leia (N1, N2, N3, N4) ;
MA (N1+N2+N3+N4) / 4 ;
escreva ("Média Anual = ", MA);
se MA >= 6 então
início { bloco verdade }
escreva ("Aluno Aprovado!");
escreva ("Parabéns!");
fim; { bloco verdade }
senão
início { bloco falso }
escreva ("Aluno Reprovado!");
escreva ("Estude Mais!");
fim { bloco falso }
fimse;
fim.
Exercícios
7) Crie um Algoritmo que leia dois valore inteiros. Efetuar a adição e apresentar o resultado,
caso o valor somado seja maior do que 10.
Página 25
Curso de Lógica de Programação
8) Crie um Algoritmo que leia dois valore inteiros. Efetuar a adição e apresentar o resultado da
seguinte forma:
- Caso o resultado seja maior ou igual a 10, deverá ser apresentado somando-se a ele mais 5
- Caso o resultado seja menor que 10 deverá ser apresentado subtraindo-se dele 7
Página 26
Curso de Lógica de Programação
10) Crie um Algoritmo que “leia uma idade” e “imprima na tela” as seguintes mensagens:
- Maior de Idade
- Menor de Idade
Seleção Encadeada
Página 27
Curso de Lógica de Programação
Exemplo:
Exemplo 1:
se X = V1 então
C1;
fimse;
se X = V2 então
C2;
fimse;
se X = V3 então
C3;
fimse;
se X = V4 então
C4;
fimse;
Exemplo 3:
se X = V1 então
C1;
senão
se X = V2 então
C2;
senão
se X = V3 então
C3;
senão
se X = V4 então
C4;
fimse;
fimse;
fimse;
fimse;
Exercícios
11) Faça um algoritmo que calcule o peso ideal de uma pessoa, dependendo do sexo da mesma.
Dados:
- Cálculo do Masculino: P = (72,7 * h) – 58
- Cálculo do Feminino: P = (62,1 * h) – 44,7
Condições:
- S = Sexo
- h = Altura
- P = Peso Ideal
Página 29
Curso de Lógica de Programação
12) Crie um algoritmo que calcule o reajuste de salário de um funcionário:
Dados:
- Reajuste de 15% se o salário for menor que R$ 500,00
- Reajuste de 10% se o salário for maior ou igual a R$ 500,00 mas menor ou igual a R$ 1.000,00
- Reajuste de 5% se o salário for maior que R$ 1.000,00
13) Faça um algoritmo que leia 3 variáveis inteiras, A, B, C, que seriam os lados de um triângulo.
Condições:
1) Para ser Triângulo, cada lado tem que ser menor que a soma dos outros dois
2) Triângulo Equilátero, tem todos os lados iguais]
3) Triângulo Isósceles, tem dois lados iguais
4) Triângulo Escaleno, tem todos os lados diferentes
Página 30
Curso de Lógica de Programação
escolha X
caso V1 : C1;
caso V2 : C2;
caso V3 : C3;
caso V4 : C4;
fimescolha;
Caso o conteúdo da variável X seja igual ao valor V1, então o comando C1 será executado.
Caso o conteúdo da variável X seja igual ao valor V2, então o comando C2 será executado, e assim por
diante, até que seja encontrada a igualdade ou terminarem os casos.
Outra forma:
escolha X
caso V1 : C1;
caso V2, V3 : C2;
caso V4 : C3;
caso V5 : C4;
caso contrário : C5;
fimescolha;
Exemplo:
Código de origem:
1 - Sul 5 ou 6 - Nordeste
2 - Norte 7, 8 ou 9 - Sudeste
3 - Leste 10 até 20 - Centro-Oeste
4 - Oeste 25 até 50 - Nordeste
Página 31
Curso de Lógica de Programação
início
{ declaração de variáveis }
real : PREÇO;
inteiro : ORIGEM;
leia (PREÇO, ORIGEM);
escolha ORIGEM
caso 1 : escreva (PREÇO, " - Produto do Sul");
caso 2 : escreva (PREÇO, " - Produto do Norte");
caso 3 : escreva (PREÇO, " - Produto do Leste");
caso 4 : escreva (PREÇO, " - Produto do Oeste");
caso 7, 8, 9 : escreva (PREÇO, " - Produto do Sudeste");
caso 10..20 : escreva (PREÇO, " - Produto do Centro-Oeste");
caso 5, 6, 25..50 : escreva (PREÇO, " - Produto do Nordeste");
caso contrário: escreva (PREÇO," - Produto Importado");
fimescolha;
fim.
Exemplo 4 - Estrutura de Seleção de Múltipla Escolha
Exercícios
14) Faça um algoritmo que leia um produto, seu preço inicial e calcule o seu preço final,
dependendo da categoria de reajuste.
CATEGORIA ÍNDICE
A 1,10
B 1,20
C 1,30
D 1,40
E 1,50
F 1,60
G 1,70
H 1,80
Página 32
Curso de Lógica de Programação
Estrutura de Repetição
Voltando ao algoritmo da média aritmética, quantas vezes ele será executado? Do modo no
qual se encontra o processamento, só é realizado uma única vez e para um único aluno. E se fossem 50
alunos?
Poderíamos resolver o problema escrevendo o algoritmo 50 vezes, uma para cada aluno. É
uma solução simples, porém, inviável.
Esses trechos do algoritmo que são repetidos são chamados de laços de repetição ou loops.
O número de repetições pode ser indefinido, mas deve sempre ser finito. Para tanto podemos proceder
de dois modos:
É uma estrutura de controle de fluxo lógico que permite executar várias vezes o mesmo
trecho do algoritmo, mas sempre verificando antes de cada execução se é permitido repetir o mesmo
trecho.
Para tanto, utilizamos a estrutura enquanto, que permite que um bloco ou um simples
comando seja repetido enquanto uma determinada <condição> for verdadeira.
Página 33
Curso de Lógica de Programação
Quando <condição> não for mais verdadeira, o bloco ou o comando não é mais executado.
Se já no primeiro teste a condição for falsa, os comandos não são executados nenhuma vez.
início
{declaração de variáveis }
real : N1, N2, N3, N4, { notas bimestrais }
MA; { média anual }
inteiro : CONTADOR;
CONTADOR 0;
enquanto CONTADOR < 50 faça { teste da condição }
leia (N1, N2, N3, N4) ;
MA (N1+N2+N3+N4) / 4 ;
escreva ("Média Anual = ", MA);
se MA >= 6 então
início { bloco verdade }
escreva ("Aluno Aprovado!");
escreva ("Parabéns!");
fim; { bloco verdade }
senão
início { bloco falso }
escreva ("Aluno Reprovado!");
escreva ("Estude Mais!");
fim { bloco falso }
fimse;
CONTADOR CONTADOR + 1;
fimenquanto;
fim.
Para realizar a repetição com teste no final, utilizamos a estrutura repita, que permite que
um bloco ou um comando seja repetido até que uma determinada condição seja verdadeira.
repita
C1;
C2;
.
.
.
Cn;
até <condição>;
Página 34
Curso de Lógica de Programação
Percebemos que o bloco (C1...Cn) é executado pelo menos uma vez, independente da
validade da condição. Isto ocorre porque a inspeção da condição é feita após a execução do bloco.
início
{declaração de variáveis }
real : N1, N2, N3, N4, { notas bimestrais }
MA; { média anual }
inteiro : CONTADOR;
CONTADOR 0;
repita
leia (N1, N2, N3, N4) ;
MA (N1+N2+N3+N4) / 4 ;
escreva ("Média Anual = ", MA);
se MA >= 6 então
início { bloco verdade }
escreva ("Aluno Aprovado!");
escreva ("Parabéns!");
fim; { bloco verdade }
senão
início { bloco falso }
escreva ("Aluno Reprovado!");
escreva ("Estude Mais!");
fim { bloco falso }
fimse;
CONTADOR CONTADOR + 1;
até CONTADOR >= 50; {teste da condição }
fim.
Exercícios
15) Crie um algoritmo que apresente o total da soma obtida dos cem primeiros números inteiros:
Página 35
Curso de Lógica de Programação
16) Crie um algoritmo que apresente o resultado de uma tabuada de um número qualquer
informado pelo usuário, no seguinte formato:
2X1=2
2X2=4
2X3=6
( ... )
2 X 10 = 20
17) Faça um algoritmo que leia 10 idade. Mostre a cada idade lida se é maior ou menor de idade.
No final mostrar a media geral de idades.
18) Crie um algoritmo que leia 5 idades, e mostre qual a menor idade.
Página 36
Curso de Lógica de Programação
19) Faça um algoritmo que calcule a soma dos números pares de 0 a 100.
20) Crie um algoritmo que leia 10 idades. Achar a maior idade e a média geral dessas idades.
Página 37
Curso de Lógica de Programação
21) Crie um algoritmo que leia um número inteiro e calcule o fatorial desse número.
Página 38
Curso de Lógica de Programação
Nas estruturas de repetição vistas até agora, ocorrem casos em que não é possível
determinar quantas vezes o bloco será repetido. A estrutura para repete a execução do bloco um
número definido de vezes, pois ela possui limites fixos.
Onde:
X é a variável de controle;
vi é o valor inicial da variável X;
vf é o valor final da variável X, ou seja, o valor até o qual ela pode chegar;
p é o passo do incremento dado à variável X.
Exemplo:
início
{declaração de variáveis }
real : N1, N2, N3, N4, { notas bimestrais }
MA; { média anual }
inteiro : CONTADOR;
para CONTADOR de 1 até 50 passo 1 faça
leia (N1, N2, N3, N4) ;
MA (N1+N2+N3+N4) / 4 ;
escreva ("Média Anual = ", MA);
se MA >= 6 então
início { bloco verdade }
escreva ("Aluno Aprovado!");
escreva ("Parabéns!");
fim; { bloco verdade }
senão
início { bloco falso }
escreva ("Aluno Reprovado!");
escreva ("Estude Mais!");
fim { bloco falso }
fimse;
fimpara;
fim.
Página 39
Curso de Lógica de Programação
ESTRUTURAS DE DADOS
Uma variável pode ser interpretada como um elemento e uma Estrutura de Dados como um
conjunto. Quando uma determinada Estrutura de Dados for composta de variáveis com o mesmo tipo
primitivo, temos um conjunto homogêneo de dados.
Vetores
Vetor é uma variável composta unidimensional. Para entender melhor este conceito,
imaginemos um edifício com um número finito de andares, representando uma estrutura de dados, e
seus andares, partições dessa estrutura. Como os andares são uma segmentação direta do prédio, estes
compõem então o que é chamado de estrutura unidimensional ( uma dimensão ).
Declaração:
Onde:
lista de variáveis - uma ou mais variáveis que terão o mesmo tipo denotado por
IDENTIFICADOR.
Página 40
Curso de Lógica de Programação
Exemplo:
VCLASSE
1 2 3 4 5 39 40
As posições do vetor são identificadas a partir de LI, com incrementos unitários, até LF. O
números de elementos do vetor é dado por LF - LI + 1.
O mesmo acontece com os vetores, já que são compostos por diversas variáveis e, como
podem existir muitos vetores, torna-se necessário determinar primeiro qual vetor contém o dado
desejado e depois especificar em qual posição este se encontra.
Exemplo:
VCLASSE [ 5 ]
............................
1 2 3 4 5 40
O nome do vetor é determinado por meio do identificador que foi utilizado na definição de
variáveis, e a posição, por meio da constante, expressão aritmética ou variável que estiver dentro dos
colchetes, também denominada ÍNDICE.
Página 41
Curso de Lógica de Programação
Exemplo:
V [5] 45;
leia (V [5]);
escreva (V [5]);
Exemplo:
O seguinte algoritmo calcula a média aritmética das notas de 10 alunos e depois mostra
quantas notas estão acima da média.
início
{declaração de variáveis }
tipo CLASSE = vetor [1..10] de reais;
{ declaração de variávei}
CLASSE : VCLASSE;
real : SOMA, MÉDIA;
inteiro : NOTACIMA, X;
SOMA 0;
NOTACIMA 0;
para X de 1 até 10 faça
leia (VCLASSE [X]); {entrada das notas dos alunos }
fimpara;
para X de 1 até 10 faça
SOMA SOMA + VCLASSE [X];
fimpara;
MÉDIA SOMA/10;
para X de 1 até 10 faça
se VCLASSE [X] > MÉDIA então
NOTACIMA NOTACIMA + 1;
fimse;
fimpara;
escreva (NOTACIMA);
fim.
Exemplo 8 - Vetor
Página 42
Curso de Lógica de Programação
Exercícios
22) Faça um algoritmo usando um vetor, para ler uma palavra com até 30 caracteres (letra a
letra). Após o usuário entrar com os caracteres, verificar quantas letras “A” possui essa palavra.
Exemplo: Se o usuário digitar a palavra “CASA”, o algoritmo deverá informar que essa palavra
possui 02 (duas) letras “A”.
23) Faça um algoritmo que carregue um vetor de notas, com 10 posições. Ache primeiramente a
média geral de notas, após achar a média, verifique quais as notas ficaram acima da média.
Página 43
Curso de Lógica de Programação
Matrizes
Vamos supor que, além do acesso pelo elevador até um determinado andar, tenhamos
também a divisão desse andar em apartamentos. Para chegar a algum deles não basta só o número do
andar, precisamos também do número do apartamento.
Declaração:
Onde:
LI1..LF1, LI2..LF2, ..., LIn..LFn - são os limites dos intervalos de variação dos índices da
variável, onde cada par de limites está associado a um índice;
lista de variáveis - lista de variáveis (separadas por vírgulas) que terão o mesmo tipo
denotado por IDENTIFICADOR.
Exemplo:
Exemplo:
Página 44
Curso de Lógica de Programação
Exemplo:
MSALA [2,3]
1 2 3 4
Para manipular o vetor, nós o inserimos em um único laço de repetição, já que ele possui
apenas um índice. Como uma estrutura multidimensional possui mais de um índice, é necessária a
utilização de mais laços de repetição em mesmo número do que o número de dimensões da matriz.
As matrizes mais utilizadas são as bidimensionais, devido a sua direta relação com muitas
aplicações (por exemplo, tabelas), que devem possuir dois laços de repetição.
Exercícios
24) Crie um algoritmo que leia duas matrizes e inclua o valor da soma dessas matrizes em uma
terceira matriz.
Obs.: Todas as matrizes devem ser Real e ter 5 X 5 posições.
Página 45
Curso de Lógica de Programação
Variáveis Compostas Heterogêneas
Um conjunto homogêneo de dados é composto por variáveis de mesmo tipo primitivo. Mas
podemos também criar conjuntos de dados de tipos diferentes. Deste modo teríamos um conjunto
heterogêneo de dados.
Registros
Para melhor entendimento desta estrutura de dados, vamos imaginar uma passagem de
ônibus, que é formada por um conjunto de informações logicamente relacionadas, porém de tipos
diferentes, tais como:
Declaração:
Onde:
Página 46
Curso de Lógica de Programação
tipo1, tipo2, ..., tipon - podem ser qualquer um dos tipos básicos ou tipo anteriormente
definido;
lista de variáveis - lista de variáveis (separadas por vírgulas) que terão o mesmo tipo
denotado por IDENTIFICADOR.
Exemplo:
Exemplo:
leia (PASSAGEM);
escreva (PASSAGEM);
Para utilizar um campo específico do registro, devemos diferenciar esse campo. Para tal
utilizamos o caractere "." (ponto) para estabelecer a separação do nome do registro do nome do campo.
Exemplo:
leia (PASSAGEM.POLTRONA);
escreva (PASSAGEM.FUMANTE);
Página 47
Curso de Lógica de Programação
Exemplo:
início
{definições anteriores}
.
.
.
leia (PASSAGEM.NÚMERO); {acesso específico}
leia (PASSAGEM.ORIGEM); {a um campo do registro}
leia (PASSAGEM.DESTINO);
.
.
.
escreva (PASSAGEM); {acesso genérico ao registro]
fim.
Os registros vistos até agora possuíam em seus campos apenas informações de tipos
primitivos, entretanto, podemos dispor também de campos que são compostos, ou seja, formados por
outros tipos construídos (vetores ou matrizes).
Exemplo de declaração:
Nome: ________________________________________
1 2 3 4 5 6
Baixa:
Para acessar:
Página 48
Curso de Lógica de Programação
PRODUTO.BAIXA [2]
Nome: ________________________________________
Para acessar:
PRODUTO2.BAIXA [2,5]
Exemplo:
Como existem 44 lugares num ônibus, numerados seqüencialmente de 1 até 44, podemos,
para uni-los, criar um vetor no qual cada posição é um elemento do tipo construído
registro.
1
3
Número: _________ Fumante: ____________
Exemplo:
início
{ definição de tipos }
tipo REGPASSAGEM = registro
inteiro : NÚMERO, POLTRONA;
caractere : ORIGEM, DESTINO, DATA, HORÁRIO;
real : DISTÂNCIA;
lógico : FUMANTE;
fimregistro;
tipo VETPASSAGEM = vetor [1..44] de REGPASSAGEM;
{ declaração de variáveis }
VETPASSAGEM : ÔNIBUS;
inteiro : N;
para N de 1 até 44 faça
leia (ÔNIBUS[N].NÚMERO);
leia (ÔNIBUS[N].POLTRONA);
leia (ÔNIBUS[N].ORIGEM);
leia (ÔNIBUS[N].DESTINO);
leia (ÔNIBUS[N].DATA);
leia (ÔNIBUS[N].HORÁRIO);
leia (ÔNIBUS[N].DISTÂNCIA);
leia (ÔNIBUS[N].FUMANTE);
fimpara;
para N de 1 até 44 faça
escreva (ÔNIBUS[N].NÚMERO);
escreva (ÔNIBUS[N].POLTRONA);
escreva (ÔNIBUS[N].ORIGEM);
escreva (ÔNIBUS[N].DESTINO);
escreva (ÔNIBUS[N].DATA);
escreva (ÔNIBUS[N].HORÁRIO);
escreva (ÔNIBUS[N].DISTÂNCIA);
escreva (ÔNIBUS[N].FUMANTE);
fimpara;
fim.
Exemplo 9 - Registro
Página 50
Curso de Lógica de Programação
ARQUIVOS
Um arquivo é um conjunto de registros (ou seja, é uma estrutura de dados), no qual cada
registro não ocupa uma posição fixa dentro da estrutura, não possuindo, portanto, tamanho
preestabelecido. Os registros são formados por unidades de informação denominadas campos.
Nome: _________________________________________________
Endereço: ______________________________________________
A relação lógica existente entre as informações é que refere ao mesmo amigo, assim, se
armazenássemos todas as fichas de controle, formaríamos o arquivo de amigos.
Página 51
Curso de Lógica de Programação
Arquivo de Amigos:
Código Nome:
do Amigo: 690
_____________________________________________
Onde:
Podemos admitir que todo arquivo possui maneiras semelhantes de ser manipulado,
independentemente de como foi concebido.
Abrindo um Arquivo
Não podemos obter alguma informação contida num arquivo sem antes abri-lo. Em nossos
algoritmos, isto será feito através do seguinte comando:
Página 53
Curso de Lógica de Programação
abra ( ARQUIVO ) ;
Onde:
Exemplos:
abra (TODOS);
Após a execução deste comando (de abertura), a ficha que está à disposição será sempre a
primeira que foi nele armazenada.
Fechando um Arquivo
Não devemos manter um arquivo aberto depois de usá-lo, por isso, convém sempre fechar
os arquivos após sua utilização. Para tal, usaremos o seguinte comando:
fecha ( ARQUIVO ) ;
Onde:
Exemplos:
fecha (TODOS);
Copiando um Registro
Num arquivo não se devem retirar informações, pois se assim fosse ele se tornaria vazio
rapidamente. Devemos enfatizar que, via de regra, um arquivo não deve ser "consumido" e sim
consultado, e, para tal, precisamos copiar o conteúdo que nos interessa em algum lugar. Para tanto,
utilizaremos:
Página 54
Curso de Lógica de Programação
Onde:
Exemplo:
Guardando um Registro
Onde:
Exemplo:
Página 55
Curso de Lógica de Programação
Acesso Seqüencial
Quando a gravação dos registros ( que não estão em ordem) no arquivo é feita de forma
contínua, um após o outro, estaremos estabelecendo uma circunstância de seqüência no
armazenamento dos registros, obtendo um arquivo de acesso seqüencial, ou seja, para acessar um
registro específico precisamos obedecer a sua ordem de gravação, o que implica percorrer todos os
registros que o antecedem.
Neste caso, para guardarmos um registro no arquivo, precisamos ir até o fim do arquivo,
para então armazenarmos o registro.
avance ( ARQUIVO ) ;
Onde:
Fda ( ARQUIVO ) ;
Onde:
Esta instrução retorna verdadeiro quando a posição corrente é o Fim Do Arquivo, e falso
em caso contrário.
Página 56
Curso de Lógica de Programação
Exemplo:
início
tipo PESSOA = registro
caractere : NOME;
inteiro: FONE;
fimregistro;
tipo PESSOAL = arquivo composto de PESSOA;
PESSOA : AUX;
PESSOAL : AGENDA;
abra (AGENDA);
repita
avance (AGENDA);
ate fda (AGENDA);
leia (AUX.NOME, AUX.FONE);
guarde (AGENDA, AUX);
feche (AGENDA);
fim.
Observamos que:
Exemplo:
Página 57
Curso de Lógica de Programação
início
tipo PESSOA = registro
caractere : NOME;
inteiro: FONE;
fimregistro;
tipo PESSOAL = arquivo composto de PESSOA;
PESSOA : AUX;
PESSOAL : AGENDA;
caractere : NOMEPROCURADO;
inteiro : NOVOFONE;
abra (AGENDA);
leia (NOMEPROCURADO);
copie (AGENDA, AUX);
enquanto (AUX.NOME <> NOMEPROCURADO) e (não fda (AGENDA)) faça
avance (AGENDA);
copie (AGENDA, AUX);
fimenquanto
se (AUX.NOME = NOMEPROCURADO) então
início
escreva (AUX.NOME, " possui fone ",AUX.FONE);
escreva ("Novo telefone");
leia (NOVOFONE);
AUX.FONE NOVOFONE;
guarde (AGENDA, AUX);
fim;
senão escreva ("Telefone não registrado!");
fimse;
feche (AGENDA);
fim.
Acesso Direto
Neste caso, o acesso não é feito de forma seqüencial, um após o outro, e sim de forma
direta.
Onde:
Exemplo:
início
tipo ALUNO = registro
caractere : NOME;
inteiro : NÚMERO;
real : N1, N2, N3, N4;
fimregistro ;
tipo SALA = arquivo composto de ALUNO;
ALUNO: AUX;
SALA: DIÁRIO;
inteiro : NÚMEROALUNO;
abra (DIÁRIO);
leia (NÚMEROALUNO);
posicione (DIÁRIO, NÚMEROALUNO);
copie (DIÁRIO, AUX);
escreva (AUX.NOME, "possui nota", AUX.N1);
feche (DIÁRIO);
fim.
Página 59
Curso de Lógica de Programação
MÓDULOS
Quando tal conjunto é construído, podemos nos deparar literalmente com um amontoado
de ações que afetam a legibilidade, porque não ficam claras e concisas as pequenas partes lógicas que
solucionam cada pequeno problema, o que dificulta a assimilação desta construção por outra pessoa,
além de inviabilizar uma perfeita coesão interna do algoritmo.
Como técnica de combate a essas circunstâncias, utilizamos uma estrutura que explicite as
pequenas soluções, o que resulta numa atividade conhecida por modularização.
O que é módulo?
Exemplo:
Onde:
Exemplificando:
______________
________________
________________ módulo PRIMEIRO;
_________________ ________________
____________________
PRIMEIRO; __________________
_________________ ______________
________________ fimmódulo;
_______________
________________ módulo SEGUNDO;
________________ ____________________
________________
SEGUNDO;
____________________
_____ _______________
______________ fimmódulo;
_________________
_________________
Escopo de Variáveis
Em alguns casos, uma determinada variável é utilizada apenas por um módulo específico,
o que não justifica uma definição global, pois somente se fazem necessários o conhecimento e a
utilização dessa variável dentro dos limites desse bloco lógico.
Página 61
Curso de Lógica de Programação
Passagem de Parâmetros
Com freqüência, nesta atividade podem ser encontrados subproblemas semelhantes, que
divergem no tratamento de circunstâncias específicas, cuja conseqüência é a elaboração de vários
subalgoritmos que possuem, em essência, a mesma solução.
AÇÃO fimmódulo ;
Página 62
Curso de Lógica de Programação
Exemplo:
Onde:
.
.
.
A 12;
B 5;
TROCA (A, B);
escreva (A, B);
.
.
.
Quando chamamos o módulo troca, o valor de A (12) é transferido para seu respectivo
parâmetro X, assim como o de B (5) é transferido para Y. Após executadas todas as ações do módulo,
X valerá 5 e Y, 12, e, ao retornar, os valores X e Y são transferidos respectivamente para A e B,
concretizando assim a troca de conteúdos.
Página 63
Curso de Lógica de Programação
Para que um módulo possa retornar um valor, ou seja, devolver um resultado como
resposta, será necessário que explicitemos qual é o valor a retornar, o que será efetuado através do
comando:
retorne ( expressão ) ;
Exemplo:
retorne (10);
retorne (SOMA);
retorne (X*Y);
O seguinte módulo verifica o sinal de um número que recebe como parâmetro, sendo que
ele retorna -1 se o número for negativo, 0 se o número for nulo e +1 se for positivo:
.
.
.
V -3;
S SINAL (V);
escreva (S);
.
.
.
Página 64
Curso de Lógica de Programação
O valor de V (-3) é enviado como parâmetro ao módulo SINAL, onde é recebido e
utilizado através do argumento X; usando as comparações, o módulo retorna o devido valor, no caso,
-1, que será o valor atribuído a variável S e exibido pelo comando escreva.
Devemos tomar cuidado ao utilizarmos módulos com retorno de resultado, pois quando
atribuímos o retorno do módulo a uma variável, recebemos um valor de mesmo tipo ao da expressão
utilizada no comando retorne, sendo necessária a compatibilidade de tipos. ESTRUTURA DE DADOS
AVANÇADA
Listas
Sobre o elo ou ligação existente entre dois elementos também pode-se dizer que cada
elemento "aponta para" um sucessor, o que quer dizer que cada elemento indica o próximo elemento
da lista como se apontasse para ele.
Exemplo:
Para compor uma lista precisamos de um vetor de registros que segundo o exemplo seria:
INÍCIO 2
Vejamos então como fica a disposição dos elementos da lista ao longo da estrutura de
dados utilizada:
1 2 3 4 5 6 7 8
Página 65
Curso de Lógica de Programação
início fim
Qualquer elemento que fosse inserido neste vetor seria alocado a partir da posição nove,
porém, devido à independência dos elementos, poderia estar logicamente encadeado em qualquer lugar
da lista: supondo que fosse necessário incluir vermelho na lista de cores, temos três possibilidades:
1) No meio da lista
vermelho(9)
Antes
laranja(7) verde(3)
vermelho(9)
1º passo
laranja(7) verde(3)
vermelho(9) 2º passo
laranja(7) verde(3)
2) No fim da lista
vermelho(9)
Antes
branco(5) 0
vermelho(9)
1º passo
branco(5) 0
Página 66
Curso de Lógica de Programação
vermelho(9)
2º passo
branco(5) 0
vermelho(9)
Antes
início rosa(2)
vermelho(9)
1º passo
início rosa(2)
vermelho(9)
2º passo
início rosa(2)
Usamos como primeiro parâmetro (NOVO) a posição do novo elemento a ser inserido no
vetor da lista, e como segundo parâmetro (ANTECESSOR) o elemento que precederá aquele que será
inserido.
Exemplo:
Página 67
Curso de Lógica de Programação
Remoção de Elementos em uma Lista
Qualquer elemento que fosse removido seria simplesmente "desligado" da lista, isto é,
nenhum outro elemento da lista apontaria para ele, mesmo que continuasse ocupando uma das
posições do vetor. Para remoção também temos três situações:
1) No meio da lista
Antes
azul(1) laranja(7) verde(3)
1º passo
azul(1) laranja(7) verde(3)
2) No início da lista
Antes
início rosa(2) amarelo(4)
1º passo
início rosa(2) amarelo(4)
3) No fim da lista
Antes
marrom(8) branco(5) fim
1º passo
marrom(8) branco(5) fim
Página 68
Curso de Lógica de Programação
Para melhor generalizarmos todos os casos de remoção num único módulo, temos:
Exemplo:
Filas
Filas são estruturas de dados que se comportam assim como as filas que conhecemos. Na
verdade, uma fila nada mais é do que uma lista na qual é aplicada uma disciplina de acesso
característica: todo elemento que entra na lista entra no fim desta e todo elemento que sai, sai do início
da lista, exatamente como uma fila real; daí utilizar a denominação fila a esta lista. Esta disciplina de
acesso também é conhecida por PEPS - primeiro que entra, primeiro que sai ( = FIFO - first in, first
out), ou seja, qualquer elemento que tenha entrado numa fila sai da mesma antes de qualquer outro que
tenha entrado depois dele. Portanto, fila é a lista em que todo elemento entra no final e sai no início, e
possui como principal finalidade registrar a ordem de chegada de seus componentes.
Exemplo:
INÍCIO 4;
FIM 2.
Página 69
Curso de Lógica de Programação
Vejamos então como fica a disposição dos elementos da lista ao longo da estrutura de
dados utilizada:
1 2 3 4 5
início fim
De acordo com a definição de fila, todas as inserções são feitas no final com o auxílio de
uma variável que indica a posição do último da fila.
fim
Antes
João(2) Bete(6)
fim
1º passo
João(2) Bete(6)
fim
2º passo
João(2) Bete(6)
Página 70
Curso de Lógica de Programação
1º passo: FILA [2].PROX 6;
2º passo: FIM 6;
Para criar um módulo de inserção numa fila, precisamos apenas identificar qual é o
elemento a ser inserido, o que é estabelecido através do parâmetro novo.
Exemplo:
ENTRA (6);
ENTRA (7);
início
Antes
Pedro(4) Maria(1)
fim
1º passo
Pedro(4) Maria(1)
Para remover um elemento de uma fila, podemos construir um módulo da seguinte forma:
módulo SAI;
se INÍCIO < FIM então
INÍCIO FILA [INÍCIO].PROX;
fimse;
fimmódulo ;
Página 71
Curso de Lógica de Programação
Exemplo:
SAI;
SAI;
As situações de erro devem ser tratadas necessariamente num algoritmo completo, bem
como a utilização de módulos mais específicos à circunstância gerada.
Pilhas
Assim como as filas, as pilhas são listas nas quais é aplicada uma disciplina de acesso
antagônica denominada UEPS - último que entra, primeiro que sai (= LIFO last in, first out), ou seja,
qualquer elemento que entrar na pilha somente sairá quando todos os que entraram depois dele saírem.
Portanto, pilha é a lista na qual todo elemento entra no final e sai também no final, e possui como
finalidade principal tornar disponíveis primeiro os elementos mais recentes.
Exemplo:
TOPO 2.
1 2 3 4 5
E a estrutura pilha:
topo
Página 72
Curso de Lógica de Programação
topo
Antes
cadeira(2) estante(6)
topo
1º passo
cadeira(2) estante(6)
topo
2º passo
cadeira(2) estante(6)
Para criar um módulo de inserção numa pilha, precisamos apenas identificar qual é o
elemento a ser inserido, o que é estabelecido através do parâmetro NOVO.
Exemplo:
EMPILHA(6);
EMPILHA(7);
Página 73
Curso de Lógica de Programação
Removendo Elementos de uma Pilha
topo
Antes
mesa(4) cadeira(2)
topo
1º passo
mesa(4) cadeira(2)
Para retirar um elemento da pilha, podemos utilizar um módulo sem utilizar nenhum
parâmetro, da seguinte forma:
módulo DESEMPILHA ;
TOPO PILHA [TOPO].PROX;
fimmódulo ;
Exemplo:
DESEMPILHA;
DESEMPILHA;
Para uma real aplicação da pilha, devemos levar em conta o tratamento de exceções tais
como uma remoção na qual a pilha não deve estar vazia. Outros módulos mais específicos podem ser
desenvolvidos de acordo com a circunstância de cada aplicação.
Árvores
É uma lista na qual cada elemento possui dois ou mais sucessores, porém, todos os
elementos possuem apenas um antecessor, como ilustra a figura:
Página 74
Curso de Lógica de Programação
I
B E J
K
A F
D H L
O primeiro elemento, que dá origem aos demais, é chamado de raiz da árvore; qualquer
elemento é chamado de nó; a quantidade de níveis a partir do nó raiz até o nó mais distante é dita
altura da árvore; assim como o número máximo de ramificações a partir de um nó é denominado grau.
Numa estrutura em árvore, os sucessores de um determinado nó são chamados filhos ou descendentes,
o único antecessor de um dado elemento é chamado pai ou ancestral e cada elemento final (sem
descendentes) é conhecido por folha. Assim, no exemplo acima, F e G são descendentes (filhos) de C,
assim como H é o ancestral (pai) de L. A árvore possui raiz em A, altura 4 , grau 3 e folhas F, G, I, J, K
e L.
Exemplo:
O vetor de registros que foi usado sem problemas até aqui precisará sofrer modificações,
visto que cada elemento da árvore pode assumir diversos sucessores. Utilizaremos, portanto, a seguinte
estrutura:
Página 75
Curso de Lógica de Programação
O vetor de sucessores (filhos) deve sempre ser inicializado com zero, e quando um filho
vale zero representa que não possui descendente. Uma árvore se apresenta sob o formato linear em seu
vetor.
A 2 3 4 0 B 5 0 0 0 C 6 7 0 0 D 8 0 0 0 E 9 1011 0 F 0 0 0 0 G 0 0 0 0 ...
1 2 3 4 5 6 7
B C D
E F G H
L
I J K
Página 76
Curso de Lógica de Programação
O algoritmo a seguir percorre toda uma árvore e descobre a localização de um determinado
nó, caso exista:
início
tipo VETFILHO = vetor [1..4] de inteiros ;
tipo NO = registro
caractere : INFO;
inteiro : FILHO;
fimregistro;
tipo VET = vetor [1..1000] de NO;
VET : ÁRVORE;
tipo REG = registro
caractere : LOCAL;
inteiro : PROX;
fimregistro;
tipo VTP = vetor [1..100] de REG;
VTP: PILHA;
inteiro: NO, TOPO, I;
módulo EMPILHA (inteiro : NOVO)
PILHA [NOVO].PROX TOPO;
TOPO NOVO;
fimmódulo;
módulo DESEMPILHA
TOPO PILHA[TOPO].PROX;
fimmódulo; Conteúdo do nó desejado
TOPO 0;
NO 1;
enquanto ÁRVORE[NO].INFO <> "MAR" faça
para I de 4 até 1 passo -1 faça
se ÁRVORE[NO].FILHO[ i ] <> 0 então
EMPILHA (ÁRVORE[NO].FILHO [ i ] ;
fimse;
fimpara;
NO TOPO;
DESEMPILHA;
fimenquanto;
se ÁRVORE[NO].INFO = "MAR" então
escreva ("Nó existente",NO);
senão
escreva ("Nó não existente");
fimse;
fim.
Nesta apostila, foi abordado apenas um método de busca em árvore, entre muitos outros
existentes, além do que não foi abordada nenhuma técnica de inserção e remoção, pois estas dependem
da estrutura da árvore (grau, ordenação, ....)
Página 77
Curso de Lógica de Programação
Neste capítulo vamos aprender a definição de várias expressões que, embora sejam muito
comuns na área de informática, são desconhecidas por muitas pessoas que ainda se confundem com o
seu significado.
Linguagem de Programação
Quem usa uma linguagem de programação para fazer programas é um programador. Para
se usar uma linguagem de programação é necessário ter um conhecimento dela, nem que seja básico,
do mesmo jeito que se precisa saber inglês para se usar o inglês.
É com o uso de uma linguagem de programação que nós "dizemos" para o computador o
que é para ele fazer, através do programa (que foi escrito, linha por linha, em uma linguagem de
programação escolhida).
Existem várias linguagens de programação hoje em dia. Algumas, mais antigas, já estão
ultrapassadas pois seus recursos tornaram-se limitados à medida que foram surgindo outras linguagens,
mais novas e mais potentes. Existem também diferentes tipos de linguagens de programação
( estruturada, orientada à objetos, visual, de formatação, etc...)que serão vistos mais adiante.
Compilador
Cada linguagem de programação possui o seu compilador, que conhece todas as suas
palavras, expressões e regras de utilização.
Página 78
Curso de Lógica de Programação
Código Fonte
Executável
Sistema Operacional
Página 79
Curso de Lógica de Programação
Linguagem de Máquina
Linguagens para DOS são linguagens cujos programas só podem ser rodados no ambiente
DOS. Estas linguagens são mais antigas e possuem recursos gráficos limitados.
Linguagem de Formatação
Página 80
Curso de Lógica de Programação
Linguagem Visual
Linguagens visuais são linguagens que possuem um ambiente de programação visual, com
recursos gráficos que auxiliam o programador durante a criação do programa.
Exemplo de linguagens visuais: Visual Basic, Delphi, Visual Java, Visual C++.
Linguagens orientadas a objetos são linguagens que tratam tudo como se fossem um
objeto. Para elas, uma janela, um botão, uma caixa de texto, uma caixa de diálogo são objetos. Como
os objetos possuem propriedades , que são as suas características, e métodos, que são as ações
relacionadas a eles, uma linguagem orientada a objetos funciona baseada em seus objetos e suas
respectivas propriedades e métodos. Veremos mais detalhes das linguagens orientadas a objetos mais
adiante, no capítulo Introdução à Linguagem Orientada a Objetos.
Linguagem Estruturada
Linguagens estruturadas são linguagens cujos programas são criados de forma seqüencial,
ou seja, cujo código fonte de seus programas, onde estão todos os comandos e instruções que levam a
um objetivo específico, é escrito de forma seqüencial, partindo-se do início do programa, passando
pela declaração de tipos, variáveis, procedimentos e funções, pelo corpo do programa, onde são usadas
as variáveis, os procedimentos e funções declarados, além de outros comandos, até chegar ao fim do
programa.
Linguagens não estruturadas são linguagens cujos programas não são criados de forma
seqüencial. Eles podem ter vários módulos de programação, cada um referente a um objeto do
programa, por exemplo.
Página 81
Curso de Lógica de Programação
Banco de Dados
Tabela de Classificação
LM - Linguagem de Máquina
LD - Linguagem para DOS
LW - Linguagem para WINDOWS
LF - Linguagem de Formatação
LE - Linguagem Estruturada
LNE - Linguagem Não Estruturada
LV - Linguagem Visual
LOO - Linguagem Orientada a Objetos
BD - Banco de Dados
LM LD LW LF LE LNE LV LOO BD
Pascal X X
Cobol X X
Clipper X X
Assembler X
Fortran X X
Dbase X X
Basic X X
C X X
C++ X X X
Visual C++ X X X X
HTML X
Java X X X
Visual Java X X X X
Visual Basic X X X X
Delphi X X X X
Visual Dbase X
SQL X
Sybase X
Oracle X
Página 82
Curso de Lógica de Programação
O Visual Basic foi a primeira linguagem de aplicação Windows. Muito aplicativos, não só
os da Microsoft, permitem o Visual Basic for Aplications, ou seja, pode-se programar em aplicativos
como Word e Excel utilizando o VBA.
É possível ter páginas na Internet com VBScripts ou com um servidor que interprete
VBScript, além de o próprio sistema operacional NT 4.0 ou 95 com Option Pack aceitar a criação de
lotes de comandos usando VBScript.
Com o Visual Basic o acesso ao banco de dados Access é mais simples, pois o Visual Basic
adota o Access como padrão para banco de dados.
O Visual Basic pode ser visto como uma ferramenta RAD para a construção de objetos que
serão executados no Microsoft Transaction Server.
Além disso, toda esta tecnologia funciona na Internet através do Remote Data Services
(RDS), o que torna possível a um navegador executar uma consulta em um banco de dados ou ter
acesso a um objeto de negócio escrito em Visual Basic através da Internet sobre protocolo HTTP.
Sintaxe:
sub-rotina
Next contador
Página 83
Curso de Lógica de Programação
Este comando utiliza um contador (contador) que começa com um valor inicial (início) e
vai sendo incrementado, de um em um , cada vez que executa a subrotina, até chegar ao valor final
(fim).
Exemplo:
For N = 1 To 8
Next N
Este exemplo executará 8 vezes a instrução MsgBox. Se quisermos sair do laço, por algum
motivo, podemos usar a instrução Exit For, que passará a execução do programa para o próximo
comando depois de Next.
Sintaxe:
sub-rotina
Next Objeto
Neste comando, para cada objeto, é realizada a sub-rotina. A instrução Next lê o próximo
objeto e indica o fim do loop.
Exemplo:
Next varobj
Página 84
Curso de Lógica de Programação
Neste exemplo, para cada objeto existente no form cadastro, será listado o seu nome. Se
quisermos sair do laço, por algum motivo, podemos usar a instrução Exit For, que passará a execução
do programa para o próximo comando depois de Next.
Sintaxe:
While Condição
sub-rotina
Wend
Exemplo:
N=0
While N < 10
N=N+1
MsgBox ("Esta é a " & N & " vez que este laço é executado")
Wend
Enquanto N for menor que 10, N será incrementado de um em um e será mostrada uma
MsgBox informando o valor atual de N. Quando N for igual a 10, o loop será terminado.
Caso N já comece com um valor maior ou igual a 10, o loop não será executado nenhuma
vez.
Do While / Loop
Sintaxe:
Do While Condição
sub-rotina
Loop
Página 85
Curso de Lógica de Programação
Enquanto a condição for verdadeira, a sub-rotina é executada. Quando chega na instrução loop,
ele retorna a instrução Do While e testa a condição novamente. A sub-rotina deve alterar o valor da
condição, caso contrário, estaremos em um loop infinito.
Exemplo:
N=0
Do While N < 10
N=N+1
MsgBox ("Esta é a " & N & " vez que este laço é executado")
Loop
Enquanto N for menor que 10, N será incrementado de um em um e será mostrada uma
MsgBox informando o valor atual de N. Quando N for igual a 10, o loop será terminado.
Caso N já comece com um valor maior ou igual a 10, o loop não será executado nenhuma
vez.
Do / Loop Until
Sintaxe:
Do
sub-rotina
O comando anterior (Do While / Loop) testa primeiro a condição para depois executar a
sub-rotina. Este comando (Do / Loop Until) executa a sub-rotina primeiro, e depois faz o teste da
condição que determinará se a sub-rotina será executada novamente, ou não.
Exemplo:
N=0
Do
N=N+1
MsgBox ("Esta é a " & N & " vez que este laço é executado")
Página 86
Curso de Lógica de Programação
A sub-rotina será executada até que N seja maior que 10. Este exemplo tem o mesmo
resultado que o exemplo do comando Do While / Loop, porém, neste caso, a sub-rotina será executada
enquanto a condição for falsa.
Sintaxe:
If condição1 Then
sub-rotina1
sub-rotina2 ]
[ Else
sub-rotina3 ]
End If
Exemplo:
If N =1 Then
ElseIf N =2 Then
Else
End If
Página 87
Curso de Lógica de Programação
IIf
Sintaxe:
Exemplo:
saldo = -500
Exemplo 18 - IIf
Se saldo for maior que 0 (condição verdadeira) será escrito na MsgBox "Credor", se saldo
for menor que 0 (condição falsa) será escrito "Devedor".
Sintaxe:
Case expressão
sub-rotina1
Case Else
sub-rotina2
End Select
Página 88
Curso de Lógica de Programação
Este comando executa uma sub-rotina de acordo com o valor de uma variável. Os valores
das variáveis são testados. Pode-se ter tantos Cases quantos forem os valores a serem testados. Pode-se
ainda usar o Case Else caso nenhuma rotina anterior tenha sido executada.
Exemplo:
Select Case N
Case 1
Case 2
Case 3
Case Else
End Select
INTRODUÇÃO AO DELPHI
Página 89
Curso de Lógica de Programação
também recursos de ambiente como CodeInsight e CodeCompletion que ajudam no aprendizado da
ferramenta.
O mecanismo de banco de dados utilizado pelo Delphi permite a conexão nativa aos
seguintes bancos de dados: Dbase, Paradox, Access, FoxPro, Oracle, Interbase, Sybase, DB2, Informix
e SQL Server. Para Ter acesso a um banco de dados fora dessa lista, basta utilizar ODBC. É possível
com o Delphi, por exemplo, fazer uma pesquisa relacionando essas tabelas, mesmo sendo de banco de
dados totalmente diferentes.
Comandos do Delphi
If ... Then
Sintaxe:
If <condição> then
<comando1>
Else
<comando2>;
Página 90
Curso de Lógica de Programação
Exemplo:
Var
idade : Integer;
Begin
Readln (idade);
Else
End;
Case ...of
Sintaxe:
Case <variável> of
<valor1> : <comando1>;
else
<comando3>
Caso o valor da variável seja igual ao valor1, será executado o comando1. Caso o valor da
variável seja igual ao valor2 ou igual ao valor3, será executado o comando2. Caso o valor da variável
não seja nenhum dos anteriores, será executado o comando3.
Página 91
Curso de Lógica de Programação
Exemplo:
Var
letra : Char;
Begin
Read (letra);
Case letra of
else
End;
Sintaxe:
Repeat
<comandos>;
until <condição>;
Este comando repetirá um ou mais comandos até que a condição seja verdadeira.
Página 92
Curso de Lógica de Programação
Exemplo:
Var
I : Char;
Begin
Repeat
Read ( I );
End;
While ... Do
Sintaxe:
While <condição> do
Begin
<comandos>
end;
Enquanto <condição> for verdadeira, os comandos entre Begin e End serão executados.
Exemplo:
Var
I : Char;
Begin
While (I <> 'q') or (I <> 'Q') do
Begin
Write ('Digite uma tecla: ');
Read ( I );
End;
End;
Página 93
Curso de Lógica de Programação
For ... Do
Sintaxe:
Begin
<comandos>
End;
Exemplo:
Var
Cont : integer;
Begin
Begin
End;
End;
Página 94
Curso de Lógica de Programação
Neste capítulo vamos fazer uma introdução a linguagem orientada a objetos. Este tipo de
linguagem vem tomando cada vez mais espaço no mercado de trabalho da computação, devido a sua
concepção inovadora que nos permite criar programas de forma mais fácil, clara e simples. Além disso,
os programas gerados nestas linguagens possuem maior facilidade de manutenção. Devido a estes
benefícios, e ao fato de que as linguagens orientadas a objetos estão sendo cada vez mais procuradas
nos profissionais de informática, torna-se fator de diferenciação o seu conhecimento.
Mas a linguagem orientada a objetos é muito mais do que isso. Para aprender a respeito
dela, é necessário entender alguns conceitos principais que são a espinha dorsal da OOP (Object
Oriented Programming).
Com o objetivo de dar a vocês uma base de como é e como funciona uma linguagem
orientada a objetos, vamos definir seus principais conceitos.
Objeto
Podemos dizer que qualquer coisa é um objeto. Uma cadeira, um vaso, uma caneta são
objetos. As linguagens de programação orientadas a objetos tratam tudo como se fosse um objeto. Para
essas linguagens, uma janela , um botão, uma caixa de texto, por exemplo, são objetos.
Propriedades
Um objeto de uma linguagem, assim como um outro objeto qualquer, também possui
propriedades. Tomando como exemplo um carro, ele possui características como cor, marca, modelo,
ano de fabricação, combustível, etc.... Estas são suas propriedades. Um objeto de uma linguagem,
como por exemplo, um botão, tem como propriedades nome, tamanho, cor, posição na tela, etc...
Página 95
Curso de Lógica de Programação
Métodos
Assim como os objetos tem propriedades, eles também tem ações ligadas a eles. Por
exemplo, uma televisão possui como propriedades a marca, o modelo e a quantidade de polegadas.
Além disso ela pode mudar de canal, aumentar ou diminuir o volume, ligar e desligar. Estas são as
ações que estão associadas à ela. Um objeto de uma linguagem também possui ações específicas que é
capaz de realizar. Essas ações são denominadas métodos.
Eventos
Eventos são ações que os objetos sofrem, como por exemplo, um clique, duplo clique, um
arraste com o mouse. Para escrever um programa numa linguagem orientada a objetos, tratam-se os
eventos que forem necessários, associando um evento a um código do programa que executará ações
específicas. Por exemplo, quando o usuário clicar em um botão, ele está atribuindo o evento clique a
este botão. Quando o usuário aperta o botão do mouse em um formulário, ele está atribuindo o evento
mouse pressionado a este formulário.
Classes de Objetos
Todo objeto se origina a partir de uma classe de objeto. A classe de um objeto são as
características e métodos que aquele objeto possui, e servem apenas para criar os objetos propriamente
ditos. Um botão é uma classe de objeto, que dá origem a objetos botões.
Encapsulamento
Página 96
Curso de Lógica de Programação
acesso. Num objeto, os membros de dados encapsulados são globais em relação aos métodos dos
objetos, mas são locais em relação ao objeto. Eles não são variáveis globais.
Herança
A herança permite ao programador criar uma classe que é semelhante a uma classe
previamente definida, mas que ainda possua algumas propriedades próprias. Considere um programa
para simulação de um carro. Suponha que você tenha uma classe para um carro comum, mas agora
queira criar um carro com câmbio automático. Num programa tradicional, talvez seja preciso
modificar profundamente o código existente e talvez acabe introduzindo alguns bugs num código que
funcionava bem antes das modificações. Para evitar estes conflitos, poderia ser usada uma abordagem
de programação orientada a objetos, criando uma nova classe por herança. Esta nova classe herda
todos os dados e métodos da classe-base testada. Desse modo você tem apenas de se preocupar em
testar o novo código acrescentado à classe derivada.
Polimorfismo
Página 97
Curso de Lógica de Programação
INTRODUÇÃO À SQL
Quando quisermos capturar apenas alguns registros podemos usar SQL. SQL (Structured
Query Language) é uma linguagem que nos habilita a especificar quais registros desejamos
capturar do banco de dados. Podemos submeter uma Query a um banco de dados e este
retoma todas as
linhas que atendam a query. Além disso, podemos recuperar informações de múltiplas
tabelas de
uma só vez.
SELECT
A cláusula SELECT seleciona registros de um banco de dados de acordo com
uma ou mais
condições, retomando, deste modo, um conjunto de registros que satisfaz as condições
especificadas.
Sintaxe
SELECT [predicado] { * | tabela.* [tabela. ]campo l [AS aliasl] [, [tabela. ]campo2 [AS alias2] [,
.-]]}
FROM nometabela [,...] [IN nomebancodedados]
[WHERE... ]
[GROUPBY...]
[HAVING... ]
[ORDERBY...]
[WITH OWNERACCESS OPTION]
Onde:
Página 98
Curso de Lógica de Programação
WHERE
Where: SQL = "SELECT *FROM Funcionários WHERE Nome = '" & txtNome & " ' "
Where In: "SELECT Funcionários. Nome FROM Funcionários WHERE Funcionários. Uf in"
_
"('SP´,´RJ´)´´
Where Like: "SELECT * FROM Amigos WHERE Nome LIKE '" & txtnome & "*'"
ORDERBY
Com o comando ORDER BY podemos ordenar os registros segundo um
determinado campo
em ordem ascendente (ASC) ou descendente (DESC). Por exemplo:
Exemplos
1. SELECT * FROM Funcionários;
3. SELECT DataNascimento
AS DataNasc FROM Funcionários;
4. SELECT COUNT(NumFuncionario)
AS NumTotal FROM Funcionários;
INSERT
Sintaxe
INSERT INTO tabeladestino [(campol[, campo2[,...]])]
VALUES (valor1[, valor2[, ...])
Página 99
Curso de Lógica de Programação
Onde:
Exemplos
2. "INSERT INTO Funcionários (Nome, Função) VALUES ("' & txtnome & '",'" & txttelefone &
"’);”
UPDATE
A cláusula UPDATE altera o valor de um campo em uma tabela especificada
baseada em
um critério especificado. Também é referenciada como uma query de ação, portanto não
retoma
registros.
Sintaxe
UPDATE tabela
SET novo valor
WHERE critério,
Onde:
Tabela O nome de uma tabela contendo o dado que você quer alterar.
Novovalor Uma expressão que determina o novo valor a ser inserido no campo
do registro a ser modificado.
Critério Uma expressão que determina quais registros serão modificados.
Somente registros que satisfaçam a expressão serão alterados.
Exemplos
Página 100
Curso de Lógica de Programação
l. UPDATE Pedidos
SET ValorPedidos = ValorPedidos * 1. 1,
Frete = Frete* 1.03
WHERE UFCliente <> 'SP';
2. "UPDATE Funcionários” _
3. "UPDATE Funcionários SET Nome ='" & nomenovo & '", Telefone ='" & telefonenovo & '"
WHERE Nome =1" & nomevelho & '""
DELETE
Sintaxe
DELETE [tabela.*]
FROM tabela
WHERE critério
Onde:
Exemplos
1. DELETE * FROM Funcionários WHERE Cargo = Trainee'
2. "DELETE * FROM Funcionários WHERE Nome = '" João '""
Página 101
Curso de Lógica de Programação
Podemos usar uma operação Join para combinar registros de múltiplas tabelas.
Por
exemplo, suponhamos que queremos mostrar a categoria e o nome dos produtos.
Precisamos ligar
as tabelas Categorias e Produtos.
A cláusula INNER JOIN especifica que você quer registros que sejam fruto da
intersecção
entre as tabelas Categorias e Produtos, onde deve existir um campo em comum.
Exemplo:
ON Categorias.Código = Produtos.CodigoCategoria;
INTRODUÇÃO
A linguagem JavaScript foi criada pela Sun MicroSystem Inc. em parceria com a
Netscape Comunications.
O JavaScript é uma linguagem baseada no Java, com isso ela contém regras menos
restritas e menos complexas, sendo indicada para programação de tarefas mais simples.
Existem também outras linguagens script além do próprio JavaScript, como o
VisuaIScript (baseado no Visual Basic) e o PerI (amplamente utilizado na criação de
CGI).
Página 102
Curso de Lógica de Programação
CRIAÇÃO DE VARIÁVEIS
NovaVariavel = "José"
Foi criada a variável de nome NovaVariavel que, passou a conter a string José. As
variáveis podem ser Locais ou Globais. As variáveis que são criadas dentro de uma
função são Locais e referenciáveis apenas dentro da função. As variáveis criadas fora de
funções são Globais, podendo serem referenciadas em qualquer parte do documento.
Desta forma, variáveis que precisam ser referenciadas por várias funções ou em outra
parte do documento, precisam ser definidas como globais. Embora não seja
recomendável, em uma função, pode ser definida uma variável local com o mesmo
nome de uma variável global. Para isso utiliza-se o método de definição VAR. Exemplo:
3 – OPERADORES
Página 103
Curso de Lógica de Programação
<html>
<head>
<script language="javascript">
x =10+5; //valor de x e 15
y =20-3; //valor de y e 17
z =120* 2; //valor de z e 240
w=;30/2; //valor de w e 15
r = 3 % 2; //valor de r e 1
</script>
</head>
</html>
Operador Descrição
== Igual
!= Diferente
> Maior
< Menor
>= Maior ou igual
<= Menor ou igual
Página 104
Curso de Lógica de Programação
4 - TIPOS DE EXPRESSÕES
Os delimitadores naturais para uma string são " (aspa dupla) ou ' (aspa simples). Caso
seja necessário a utilização destes caracteres como parte da uma string, utilize o sinal \
precedendo " (aspa dupla) ou ' (aspa simples). Por exemplo:
<html>
<head>
<script language="javascript">
alert ("Cuidado com o uso de \" ou V em uma string")
</head>
</html>
</script>
5 - CONTROLES ESPECIAIS
Controle Descrição
\b Backspace
\n New line caracters
\r Carriage return
\t Tab caracters
// Linhas de comentário
/* ... */ Delimitadores para
comentários
Com mais de uma linha
Página 105
Curso de Lógica de Programação
6 - COMANDOS CONDICIONAIS
São comandos que permitem a execução de uma certa tarefa à veracidade ou não de
uma outra condição, ou enquanto determinada condição for verdadeira.
if (condição)
{ação para condição satisfeita}
else
{ação para condição não satisfeita}
Exemplo:
<html>
<head>
<script language="javascript">
idade=15
if (idade < 18)
{Categoria = "Menor"}
else
{Categoria = "Maior"}
</script>
</head>
</html>
A cláusula ELSE é opcional, isto é, se não for necessário, não é preciso declará-la.
Ex.
NomeSexo = ((VarSexo == "M") ? "Masculino": "Feminino")
Página 106
Curso de Lógica de Programação
for (inicialização;condição;incremente)
{ ação }
Exemplo:
<html>
<head>
<script language="javascript">
for(x= O ; x<= 10 ; x++)
{alert ("X igual a " + x)}
</script>
</head>
</html>
While (condição)
{ação}
Exemplo:
<html>
<head>
<script language="javascript">
var contador =10
while (contador > 1) {
contador -;
alert ("Menor que zero ainda...")}
</script>
</head>
</html>
Página 107
Curso de Lógica de Programação
7- Comentários
//: utilizado para comentários de uma linha, para introduzir o comentário. Todo o texto
seguindo este símbolo até o próximo carriage-return será considerado um comentário
e
ignorado para fins de processamento.
Exemplo:
8 - CRIANDO FUNÇÕES
Suponha uma função que tenha como objetivo informar se uma pessoa é maior ou
menor de idade, recebendo como parâmetro a sua idade, o resultado seria:
<html>
<head>
<script language="javascript">
function Idade (Anos) {
if(Anos>17)
{ alert ("Maior de Idade")}
else
{ alert ("menor de Idade")}
}
</script>
</head>
</html>
Página 108
Curso de Lógica de Programação
Para acionar esta função, suponha uma caixa de texto, em um formulário, na qual seja
informada a idade e, a cada informação, a função seja acionada.
<form>
<input type="text" size="2" maxlength="2" name="Tempo"
onchange="ldade(Tempo.value)">
</form>
<html>
<head>
<script language="javascript">
function Idade(Anos)
{
if(Anos> 17)
{alert ("Maior de Idade")}
else
{alert ("menor de Idade")}
}
</script>
</head>
<body>
<form>
Forneça a Idade:
<input type="text" size="2" maxlength="2" name="Tempo"
onchange="ldade(Tempo.value)">
</form>
</body>
</html>
9 - EXIBIÇÃO DE MENSAGENS
Página 109
Curso de Lógica de Programação
alert ( mensagem )
Exemplo:
Este comando exibe uma mensagem que retorna uma confirmação de OK ou CANCELAR
na janela do navegador do visitante. Sintaxe:
confirm (mensagem)
Exemplo:
<html>
<head>
<script language="javascript">if (confirm ("Algo está errado...devo continuar??"))
{alert("Continuando")}
else
{alert("Parando")}
</script>
</head>
</html>
Este comando exibe uma caixa na janela do navegador onde é possível receber
mensagens para uso dentro do próprio JavaScript ou para que o visitante possa digitar
textos e mensagens. Sintaxe:
Onde Variável é o nome do campo que vai receber a informação digitada pelo usuário,
"Minha mensagem" é a mensagem que vai aparecer como título da caixa de diálogo e
"Meu texto" é um texto que aparecerá na linha de digitação. Para que o campo seja
exibido vazio, deixe esse texto vazio. Exemplo:
Página 110
Curso de Lógica de Programação
<html>
<head>
<script language="javascript">
valor = 30;
document.write ("Minha primeira linha")
document.write ("Nesta linha aparecerá o resultado de :" + (10 * 10 + valor))
</script>
</head>
</html>
A idéia do exemplo acima é escrever duas linhas. Entretanto o método write não insere
mudança de linha, o que provocará o aparecimento de apenas uma linha com os dois
textos emendados. Para evitar este tipo de ocorrência, existe o método writeln que
escreve uma linha e espaceja para a seguinte. Entretanto, este comando não surti efeito
na maioria dos casos, obtendo-se o mesmo resultado do método write. A solução
encontrada para este tipo de situação é a utilização do comando de mudança de
parágrafo da linguagem HTML.
<html>
<head>
<script language="javascript">
valor = 30;
document.write ("<p>Minha primeira linha</p>")
document.write ("<p>Nesta linha aparecerá o resultado de :" + (10 * 10 + valor) + "</p>")
</script>
</head>
</html>
Isto resolve a questão da mudança de linha, porém, vai gerar uma linha em branco,
entre cada linha, por se tratar de mudança de parágrafo. Caso não seja desejado a
existência da linha em branco, a alternativa é utilizar o comando HTML <BR> que apenas
muda de linha.
Página 111
Curso de Lógica de Programação
Para utilizar uma variável em JavaScript não é necessário declarar o tipo, ou seja, em
momentos diferentes do código ela pode armazenar valores de tipos diferentes. Por
exemplo, uma variável pode inicialmente conter um valor inteiro e posteriormente ser
usada para armazenar uma string:
valor = 1000;
valor = "saldo";
parseint (): Converte uma string para número, levando em consideração a base. Caso a
string possua um caracter que não possa ser convertido, a operação para, retornando
um valor antes do erro.
Exemplos:
parselnt("10") // retorna 10
parseFloat(): Converte uma string que representa um número, para um número com
ponto flutuante. Caso a string não possa ser avaliada, a função retorna 0.
Sintaxe: variavel=parseFloat(valor);
Exemplo:
document.write(parseFloat("-10.46")
utam o desenho de forma diferente.
Página 112