Escolar Documentos
Profissional Documentos
Cultura Documentos
08/06/2011 1
Desde os primórdios, o homem vem tentando resolver seus problemas com maior
rapidez e o menor esforço possíveis, procurando automatizar as tarefas rotineiras. Isso
possibilitou o aparecimento de instrumentos como a roda, roldana, alavanca, carro e até
o computador.
No entanto as tarefas que devem ser realizadas pelo computador, de forma automática,
têm de ser anteriormente pensadas e colocadas em uma seqüência de ações para,
posteriormente, serem inseridas na máquina.
08/06/2011 2
SOFTWARE
08/06/2011 3
LÓGICA
As pessoas utilizam a lógica no cotidiano sem perceber; chegam mesmo a citá-la, sem
entender direito o seu significado.
08/06/2011 4
Às vezes o raciocínio funciona desordenadamente. Quantas vezes você já ouviu as
frases: “E se acontecer aquilo?”, ou “É, mas eu não tinha pensado nisso!”
Neste exemplo, estão descritas ações de quem vai a um banco; entretanto, veja se seria
possível retirar o dinheiro obedecendo à seqüência descrita.
1 Sair do banco.
2 Aguardar a vez de ser atendido.
3 Entrar na fila do caixa.
4 Digitar a senha.
5 Entrar no banco
6 Informar o valor a ser retirado.
7 Procurar a fila do caixa.
8 Pegar o comprovante de saque, o cartão eletrônico e o dinheiro.
9 Entregar o cartão eletrônico ao funcionário que atende no caixa.
10 Conferir o valor em dinheiro.
08/06/2011 5
Você conseguiria retirar o dinheiro? Com certeza não, pois, embora as ações estejam
corretas, a seqüência está errada.
A primeira ação é sair do banco.
Como se pode retirar dinheiro de um banco estando fora dele? Agora observe as
mesmas ações na seqüência correta.
1 Entrar no banco.
2 Procurar a fila do caixa.
3 Entrar na fila do caixa.
4 Aguardar a vez de ser atendido.
5 Entregar o cartão eletrônico ao funcionário que atende no caixa.
6 Informar o valor a ser retirado.
7 Digitar a senha.
8 Pegar o comprovante de saque, o cartão eletrônico e o dinheiro.
9 Conferir o valor em dinheiro.
10 Sair do banco
Utiliza-se a lógica para ordenar e corrigir pensamentos ou ações voltados
para a solução de problemas.
08/06/2011 6
LÓGICA DE PROGRAMAÇÃO
08/06/2011 7
No exemplo acima você pode observar que, ao objeto (porta), no estado
inicial (porta fechada), é aplicada a ação (abrir) por um tempo determinado
(segundos), levando ao estado final (porta aberta), previsível e definido (pois é
esperado que, quando se abre algo, principalmente qualquer porta, no final, ela
esteja aberta).
08/06/2011 8
OBJETIVO
08/06/2011 9
ALGORITMOS
O QUE É UM ALGORITMO?
08/06/2011 10
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentado em três fases fundamentais.
08/06/2011 11
Onde temos:
08/06/2011 12
08/06/2011 13
FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO
08/06/2011 14
DIAGRAMA DE CHAPIN: As estruturas lógicas são representadas por figuras
retangulares, colocadas uma após a outra, de cima para baixo.
08/06/2011 15
VANTAGENS E DESVANTAGENS
PSEUDOCÓDIGO:
• Fácil de compreender.
• Fácil de ler e converter para programação.
• Melhor para representar programas maiores.
• É estruturado.
FLUXOGRAMA:
• Fácil de compreender.
• Bom para construir e visualizar pequenos programas.
• Difícil de desenhar quando o programa fica muito grande.
• Não é estruturado.
DIAGRAMA DE CHAPIN:
O Português Estruturado, é uma forma especial de linguagem bem mais restrita que a Língua
Portuguesa e com significados bem definidos para todos os termos utilizados nas instruções
(comandos).
Essa linguagem também é conhecida como Portugol (junção de Português com Algol,
Pseudocódigo ou Pseudolinguagem). O Português Estruturado na verdade é uma
simplificação extrema da língua portuguesa, limitada a pouquíssimas palavras e estruturas
que têm significado pré-definido, pois deve-se seguir um padrão. Emprega uma linguagem
intermediária entre a linguagem natural e uma linguagem de programação, para descrever os
algoritmos.
08/06/2011 17
A sintaxe do Português Estruturado não precisa ser seguida tão rigorosamente
quanto a sintaxe de uma linguagem de programação, já que o algoritmo não
será executado como um programa.
Portanto, resolver problemas com português estruturado pode ser uma tarefa
tão complexa quanto a de escrever um programa em uma linguagem de
programação qualquer só não tão rígida quanto a sua sintaxe, ou seja, o
algoritmo não deixa de funcionar porque esquecemos de colocar um ';' (ponto-
evírgula) por exemplo, já um programa não funcionaria.
08/06/2011 18
Regras para construção do Algoritmo
08/06/2011 19
Portugol - “Chupar uma bala”.
• Pegar a bala
• Retirar o papel
• Chupar a bala
• Jogar o papel no lixo
08/06/2011 20
FLUXOGRAMA
O que é um Fluxograma?
08/06/2011 21
Simbologia
08/06/2011 22
08/06/2011 23
Dentro do símbolo sempre terá algo
escrito, pois somente os símbolos não
nos dizem nada.
08/06/2011 24
Algoritmo - Calcular a média final
08/06/2011 25
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br
11/06/2011 26
Um algoritmo é uma das soluções e não “a solução” de um problema.
11/06/2011 27
Exercícios:
11/06/2011 28
4) Qual o estranho?
11/06/2011 29
11/06/2011 30
11/06/2011 31
11/06/2011 32
ELEMENTOS USADOS NOS ALGORITMOS
1 CONSTANTES:
1.1 Numérico;
1.2 Data;
1.3 Lógica;
1.4 Caracter (texto, literal, string)
2 VARIÁVEIS:
2.1 Numérico;
2.2 Data;
2.3 Lógica;
2.4 Caracter (texto, literal, string)
3 EXPRESSÕES:
3.1 Operandos;
3.2 Operadores;
4 COMANDO DE ATRIBUIÇÃO:
5 ESTRUTURAS:
5.1 Seqüencial;
5.2 Seleção;
5.2.1 Simples;
5.2.2 Composta;
5.2.3 Múltipla;
5.3 Repetição;
5.3.1 Contador fixo;
5.3.2 Flag;
5.3.2.1 De resposta;
5.3.2.2 Predeterminado;
11/06/2011 33
CONSTANTES
11/06/2011 34
VARIÁVEIS
VARIÁVEIS: Não são valores. Variáveis são endereços de memória (Ram) que
armazenam temporariamente valores. Esses endereços recebem um rótulo, que é o nome
da variável, e um conteúdo. Cada vez que mencionamos o nome da variável, é manipulado
o seu conteúdo.
Os nomes das variáveis devem sempre começar por uma letra, não devem ter espaços em
branco e nem caracteres especiais, no máximo o símbolo sublinhado. Exemplos: Nome_cli,
Num_func, Datanasc, etc.
11/06/2011 35
Os valores armazenados nas variáveis permanecem até que:
• O computador seja desligado (normal ou por falta de energia), visto que são armazenados
na memória Ram;
• Por término do programa ou rotina onde foram criadas;
• Seja atribuído um novo valor para a mesma variável.
Observação: As variáveis Públicas ou Globais são vistas por todos os módulos do programa,
e as Locais ou Privadas somente nas rotinas onde são criadas.
11/06/2011 36
EXPRESSÕES
11/06/2011 37
OPERANDOS E OPERADORES
OPERANDOS
11/06/2011 38
OPERADORES
São símbolos ou palavras que indicam o tipo de manipulação e também determinam de que
tipo é a expressão.
ARITMÉTICOS:
• Adição: +
• Subtração: -
• Multiplicação: *
• Divisão: /
• Exponenciação: ^
11/06/2011 39
RELACIONAIS
• Igualdade: =
• Maior do que: >
• Menor do que: <
• Maior ou igual a: >=
• Menor ou igual a: <=
• Diferente: <>
LÓGICOS (Booleanos)
• NAO
•E
• OU
11/06/2011 40
Observação: Nos operadores lógicos o E tem prioridade sobre o OU.
11/06/2011 41
Veja o exemplo da tabela verdade abaixo:
Comando de atribuição
11/06/2011 42
ESTRUTURAS DE CONTROLE
ESTRUTURA SEQÜENCIAL
11/06/2011 43
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
FIM
ESTRUTURA DE SELEÇÃO
Devemos utilizar uma estrutura de seleção. Sempre que para executar alguma ação
dependa do resultado de uma condição, isto é, no que temos que fazer existe uma
condicionante.
Observação: Conforme o que devemos fazer, de acordo com o resultado da condição, a
estrutura de seleção pode ser de três tipos diferentes: Seleção Simples, Seleção
Composta ou Seleção Múltipla.
08/06/2011 44
ESTRUTURA DE SELEÇÃO SIMPLES
08/06/2011 45
Exemplo: Ler o nome e duas notas de um aluno, calcular a média e
mostrar
o nome do aluno, as duas notas, a média calculada e as palavras Aluno
Reprovado, caso a média seja menor do que sete.
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2, M
SE M < 7 ENTAO
ESCREVER “ALUNO REPROVADO”
FIM_SE
FIM
11/06/2011 46
ESTRUTURA DE SELEÇÃO COMPOSTA
11/06/2011 47
Observação: Se o resultado da condição for Verdadeiro será executado tudo que estiver
entre as palavras ENTAO e SENAO, sendo ignorado o que tudo que estiver após a palavra
SENAO, porem se o resultado da condição for Falso, será desprezado tudo que estiver entre
as palavras ENTAO e SENAO, sendo executado apenas o que estiver entre as palavras
SENAO e FIM_SE.
Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar o nome do
aluno, as duas notas, a média calculada e as palavras Aluno Reprovado, caso a média seja
menor do que sete e Aluno Aprovado em caso contrário.
11/06/2011 48
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
SE M < 7 ENTAO
ESCREVER “ALUNO REPROVADO”
SENAO
ESCREVER “ALUNO APROVADO”
FIM_SE
FIM
08/06/2011 49
ESTRUTURA DE SELEÇÃO MÚLTIPLA
11/06/2011 50
08/06/2011 51
Encadeamento somente se o resultado da primeira condição for falso.
08/06/2011 52
Um encadeamento se o resultado da primeira condição seja verdadeiro,
e outro encadeamento, caso o resultado da primeira condição seja falso.
11/06/2011 53
SELEÇÃO MÚLTIPLA COM ESTRUTURA DE FACA CASO:
11/06/2011 54
Observação: Para a solução do próximo exemplo, usaremos uma solução com
estrutura de Seleção Composta encadeada e outra solução utilizando a estrutura Faca
Caso.
Exemplo: Ler o estado civil de uma pessoa como valor numérico, sendo que 1
corresponde a Solteiro, 2 a Casado e 3 para Outros. Testar estes valores levando-se em
conta que o usuário pode digitar errado e escrever o estado civil em caracteres.
11/06/2011 55
SOLUÇÃO UTILIZANDO ESTRUTURA DE SELEÇÃO COMPOSTA ENCADEADA:
VARIAVEIS
NUMERICO EC
INICIO
EC = 0
ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)”
LER EC
SE EC = 1 ENTAO
ESCREVER “Solteiro”
SENAO
SE EC = 2 ENTAO
ESCREVER “Casado”
SENAO
SE EC = 3 ENTAO
ESCREVER “Outros”
SENAO
ESCREVER “Valor inválido”
FIM_SE
FIM_SE
FIM_SE
08/06/2011 56
SOLUÇÃO UTILIZANDO ESTRUTURA DE FACA CASO:
VARIAVEIS
NUMERICO EC
INICIO
EC = 0
ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)”
LER EC
FACA CASO
CASO EC = 1:
ESCREVER “Solteiro”
CASO EC = 2:
ESCREVER “Casado”
CASO EC = 3:
ESCREVER “Outros”
OUTRO_CASO:
ESCREVER “Valor inválido”
FIM_CASO
11/06/2011 57
ESTRUTURA DE REPETIÇÃO
Uma Estrutura de Repetição deve ser usada sempre que uma rotina tenha que
ser executada mais do que uma vez durante o mesmo processamento.
As repetições podem ser feitas por Contador Fixo, ou seja, a rotina vai ser
repetida sempre um número fixo de vezes. Por Flag de Resposta, onde a cada
volta do laço perguntamos ao usuário se ele quer continuar ou não, se a resposta
for sim à rotina, segue repetindo; e se for não, a rotina termina. Ainda podemos
fazer a repetição por Flag Predeterminado, isto é, determinamos que quando o
usuário pressionar um determinado conjunto de teclas ou um determinado valor
para conteúdo de uma variável, a rotina termina.
Para construir a estrutura de repetição, podemos utilizar dois tipos de
estruturas: a estrutura FACA ENQUANTO ou a estrutura PARA PROXIMO,
sendo que a estrutura FACA ENQUANTO serve tanto para repetições por
Contador Fixo como para, repetições por Flag. A estrutura de PARA PROXIMO
só serve para repetições por Contador Fixo.
11/06/2011 58
ESTRUTURA FACA ENQUANTO
11/06/2011 59
Nesse tipo de construção a rotina só entra na estrutura caso a condição
seja verdadeira, senão a estrutura é ignorada. Entrando na estrutura, o
programa executa tudo que estiver contido entre as palavras Faca
Enquanto e Fim_Enquanto. Quando é encontrada a palavra
Fim_Enquanto, a rotina retorna ao início da estrutura e testa novamente
a condição, enquanto a condição for verdadeira continua repetindo.
11/06/2011 60
A seguir outro tipo de construção para repetições com a estrutura PARA
PROXIMO.
08/06/2011 61
ESTRUTURA PARA PROXIMO
11/06/2011 62
Observação: O PASSO é opcional, quando não colocado assume por
padrão o valor 1 (um).
08/06/2011 63
EXEMPLO DE REPETIÇÃO POR CONTADOR FIXO
Desafio: Ler o nome do aluno e duas notas para uma turma de 15 alunos,
calcular a média e mostrar o nome as duas notas e a média de cada aluno.
SOLUÇÃO UTILIZANDO A ESTRUTURA FACA ENQUANTO
VARIAVEIS
NUMERICO N1, N2, M, C
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
C=0
ESCREVER “DIGITE O NOME, N1, N2”
FACA ENQUANTO C < 15
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2, M.
C=C+1
FIM_ENQUANTO
FIM
11/06/2011 64
SOLUÇÃO UTILIZANDO A ESTRUTURA PARA PROXIMO
VARIAVEIS
NUMERICO N1, N2, M, C
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
C=0
ESCREVER “DIGITE O NOME, N1, N2”
PARA C = 1 ATE 15
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
PROXIMO
FIM
11/06/2011 65
EXEMPLO DE REPETIÇÃO POR FLAG DE RESPOSTA
11/06/2011 66
Solução:
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME, CF
INICIO
N1 = 0
N2 = 0
M=0
CF = “S”
ESCREVER “DIGITE O NOME, N1, N2”
FACA ENQUANTO CF = “S”
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
ESCREVER “DESEJA CONTINUAR (S/N)?”
LER CF
FIM_ENQUANTO
FIM
08/06/2011 67
EXEMPLO DE REPETIÇÃO POR FLAG PREDETERMINADO
11/06/2011 68
Solução:
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
ESCREVER “DIGITE O NOME (FIM PARA
SAIR), N1, N2”
NOME = “ “
FACA ENQUANTO NOME <> “FIM”
LER NOME
SE NOME <> “FIM”
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
FIM_SE
FIM_ENQUANTO
FIM
08/06/2011 69
Até aqui analisamos quais são as palavras-chave e como se representam os
algoritmos em Pseudocódigo. Veremos a seguir como fazer a representação
das estruturas de controle através de Fluxograma e Diagrama de Chapin.
08/06/2011 70
11/06/2011 71
11/06/2011 72
11/06/2011 73
11/06/2011 74
11/06/2011 75
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br
11/06/2011 76
FLUXOGRAMA
11/06/2011 77
De modo geral, o fluxograma se resume a um único símbolo inicial, por
onde a execução do algoritmo começa, e um ou mais símbolos finais,
que são pontos onde a execução do algoritmo se encerra. Partindo do
símbolo inicial, há sempre um único caminho orientado a ser seguido,
representando a existência de uma única seqüência de execução das
instruções. Isto pode ser melhor visualizado pelo fato de que, apesar de
vários caminhos poderem convergir para uma mesma figura do
diagrama, há sempre um único caminho saindo desta. Exceções a esta
regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e
os símbolos de decisão, de onde pode haver mais de um caminho de
saída (normalmente dois caminhos), representando uma bifurcação no
fluxo.
11/06/2011 78
Um diagrama de blocos é uma forma de fluxograma usada e desenvolvida
por profissionais da programação, tendo como objetivo descrever o método
e a seqüência do processo dos planos num computador. Pode ser
desenvolvido em qualquer nível de detalhe que seja necessário. Quando se
desenvolve um diagrama para o programa principal, por exemplo, seu nível
de detalhamento pode chegar até as instruções. Esta ferramenta usa
diversos símbolos geométricos, os quais, estabelecerão as seqüências de
operações a serem efetuadas em um processamento computacional. Após a
elaboração do diagrama de bloco, é realizada a codificação do programa. A
figura 2.1 mostra o exemplo de um diagrama de blocos ou fluxogramas.
11/06/2011 79
11/06/2011 80
11/06/2011 81
A figura 2.2 a seguir mostra a representação do algoritmo de cálculo da média
de um aluno sob a forma de um fluxograma.
11/06/2011 82
11/06/2011 83
Pseudocódigo
11/06/2011 84
Representação de Um Algoritmo na Forma de Pseudocódigo
Algoritmo <nome_do_algoritmo>
<declaração_de_variáveis>
<subalgoritmos>
Início
<corpo_do_algoritmo>
Fim.
11/06/2011 85
onde:
Algoritmo é uma palavra que indica o início da definição de um algoritmo
em forma de pseudocódigo.
11/06/2011 86
Como exemplo, a seguir é mostrado a representação do algoritmo de cálculo
da média de um aluno na forma de um pseudocódigo.
11/06/2011 87
Algoritmo Média
Início
Leia N1, N2
Média := (N1+N2)/2
Se Então
Senão
Escreva “Reprovado”
Fim.
11/06/2011 88
1-Faça um algoritmo que receba dois números e ao final mostre a soma,
subtração, multiplicação e a divisão dos números lidos.
2-Faça um algoritmo que receba dois números e exiba o resultado da sua soma.
11/06/2011 89
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br
11/06/2011 90
O que é um algoritmo?
11/06/2011 91
Histórico
11/06/2011 92
Histórico
11/06/2011 93
Estruturas de Controle
11/06/2011 95
Função : Ler dois valores para as variáveis A e B, e efetuar as trocas dos
valores de forma que a variável A passe a possuir o valor da variável B e a
variável B passe a possuir o valor da variável A.
Apresentar os valores trocados.
algoritmo “troca_valor"
11/06/2011 96
<declaração_de_variáveis> consiste
em uma porção opcional onde são
declaradas as variáveis globais usadas
Var no algoritmo principal e, eventualmente,
nos subalgoritmos.
a, b, troca: inteiro
Variáveis
11/06/2011 97
11/06/2011 98
Tipos de Variáveis
As variáveis e as constantes podem ser basicamente de quatro tipos:
Numéricas;
Caracteres;
Alfanuméricas;
lógicas.
Numéricas
Caracteres
Lógicas
Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso.
Declaração de Variáveis
11/06/2011 100
11/06/2011 101
inicio
// Seção de Comandos
escreva("Digite o valor(numérico) da variável A: ")
leia(a) – Armazenando o conteúdo da variável
escreva("Digite o valor(numérico) da variável B: ")
leia(b) – Armazenando o conteúdo da variável
Troca = A
A =B Processo sendo executado.
B =troca
limpatela
escreval("===========================")
escreval("O novo valor de A é: ",a) Saída em
escreval("O novo valor de B é: ",b) TELA ou
escreval("===========================") IMPRESSORA
fim
11/06/2011 102
ÍNICIO
troca <- a
a <- b
b <- troca
FIM
11/06/2011 103
Constantes
11/06/2011 104
1
11/06/2011 105
2
11/06/2011 106
3
11/06/2011 107
4
11/06/2011 108
11/06/2011 109
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br
11/06/2011 110
VETORES E MATRIZES
08/06/2011 111
VETORES E MATRIZES
Agora vamos supor que nessa gaveta fizemos cinco divisões, então podemos
guardar cinco objetos na mesma gaveta, isso é o que podemos comparar como
sendo um Vetor.
A Matriz pode-se comparar como sendo um armário com, por exemplo,
três gavetas. Neste caso eu posso guardar três objetos, um em cada gaveta,
porém, se em cada gaveta são feitas três divisões, podemos nesse armário
guardar não apenas três objetos, mas, sim, nove objetos.
08/06/2011 112
EXEMPLO DE VETOR
Matriz numérico V[5]
08/06/2011 113
Para referenciar o valor 18, temos que indicar V[3], isto é, o valor 18 é o
terceiro elemento do Vetor V, ou que o valor 18 encontra-se na terceira
posição do vetor.
EXEMPLO DE MATRIZ
08/06/2011 114
Para referenciar o valor 76, temos que indicar M[2,3], isto é, o elemento da
matriz que armazena o valor 76 está na linha 2, coluna 3.
A indicação do índice ou índices é feita sempre entre colchetes “[ ]”, ou em
algumas outras linguagens ente parênteses “( )”.
Como o Vetor é uma matriz que possui dimensão única, temos apenas um
índice, que indica a posição que o elemento ocupa dentro do Vetor. Por
exemplo:
08/06/2011 115
ALGORITMOS PARA MANIPULAR VETORES E MATRIZES
08/06/2011 116
08/06/2011 117
Exemplo de Matriz: Algoritmo para ler e escrever uma Matriz de
nome M com nove posições (elementos), com três linhas e três colunas.
08/06/2011 118
Podemos dentro da estrutura Para – Proximo, trabalhando com Vetores e
Matrizes, fazer os mesmos tipos de processamentos que fazemos dentro
da estrutura Faca – Enquanto, com a vantagem de que os valores
permanecem armazenados na Memória, até que o processamento termine.
08/06/2011 119
Classificar em ordem crescente um vetor A com dez elementos (dez
posições)
08/06/2011 120
ESTRUTURAS DE DADOS HOMOGÊNEAS
08/06/2011 121
Matrizes de Uma Dimensão ou Vetores
08/06/2011 122
Operações Básicas com Matrizes do Tipo Vetor
Do mesmo modo que acontece com variáveis simples, também é possível operar
com variáveis indexadas (matrizes). Contudo não é possível operar diretamente
com o conjunto completo, mas com cada um de seus componentes isoladamente.
O acesso individual a cada componente de um vetor é realizado pela especificação
de sua posição na mesma por meio do seu índice.
08/06/2011 123
Por exemplo, M[1] indica o primeiro elemento do vetor, M[2] indica o
segundo elemento do vetor e M[10] indica o último elemento do vetor.
Portanto, não é possível operar diretamente sobre vetores como um todo, mas
apenas sobre seus componentes, um por vez. Por exemplo, para somar dois
vetores é necessário somar cada um de seus componentes dois a dois. Da
mesma forma as operações de atribuição, leitura e escrita de vetores devem ser
feitas elemento a elemento.
08/06/2011 124
Atribuição de Uma Matriz do Tipo Vetor
<nome_da_variável> := <expressão>
08/06/2011 125
Leitura de Dados de Uma Matriz do Tipo Vetor
08/06/2011 126
Uma observação importante a ser feita é a utilização da construção Para a fim
de efetuar a operação de leitura repetidas vezes, em cada uma delas lendo um
determinado componente do vetor. De fato esta construção é muito comum
quando se opera com vetores, devido à necessidade de se realizar uma mesma
operação com os diversos componentes dos mesmos. Na verdade, são raras as
situações que se deseja operar isoladamente com um único componente do
vetor.
O algoritmo a seguir exemplifica a operação de leitura de um vetor:
Algoritmo exemplo_leitura_de_vetor
Var
numeros : matriz[1..10] de inteiro
i : inteiro
Início
Para i de 1 até 10 faça
Início
Leia numeros[i]
Fim
Fim.
08/06/2011 127
Escrita de Dados de Uma Matriz do Tipo Vetor
08/06/2011 128
O algoritmo a seguir exemplifica a operação de leitura e escrita de um vetor,
utilizando a construção Para:
Algoritmo exemplo_escrita_de_vetor
Var
numeros : matriz[1..10] de inteiro
i : inteiro
Início
Para i de 1 até 10 faça
Início
Leia numeros[i]
Fim
Para i de 1 até 10 faça
Início
Escreva numeros[i]
Fim
Fim.
08/06/2011 129
Um exemplo mais interessante é mostrado a seguir, onde um vetor de
dez números é lido e guardado no vetor numeros. Paralelamente, a
soma destes números é calculada e mantida na variável soma, que
posteriormente é escrita.
Algoritmo exemplo_escrita_de_vetor_com_soma
Var
numeros : matriz[1..10] de inteiro
i : inteiro
soma : inteiro
Início
soma := 0
Para i de 1 até 10 faça
Início
Leia numeros[i]
soma := soma + numeros[i]
Fim
Para ide 1 até 10 faça
Início
Escreva numeros[i]
Fim
Escrever “Soma = ”, soma
08/06/2011Fim. 130
Exemplos de Aplicação de Vetores
08/06/2011 131
Lógica de Programação
REVISÃO
Charles Emerson Machado – charles.machado@prof.sc.senac.br
11/06/2011 132
Segundo o dicionário Aurélio, a lógica é a “coerência de raciocínio, de
idéias”, ou ainda a “seqüência coerente, regular e necessária de
acontecimentos, de coisas”.
11/06/2011 133
PROGRAMAÇÃO ESTRUTURADA
Este tipo de programação é que vai formar o Código a ser escrito para cada
Evento verificado.
Os conhecimentos de Programação Estruturada e Modular, que será o objeto
deste curso servem para elaborarmos os algoritmos e escrevermos os códigos
nos procedimentos e funções a serem implementados, e executados quando for
disparado um evento na Programação Orientada ao Objeto/Evento.
11/06/2011 134
ETAPAS PARA A SOLUÇÃO DE PROBLEMAS.
11/06/2011 135
Ao elaborar um programa, devemos em primeiro lugar deixar bem claro, o
Que precisa ser feito e, logo após, definirmos as maneiras possíveis de se chegar
ao resultado desejado (Como?).
11/06/2011 136
E – Eficácia, o programa deve fazer o que deve ser feito. Não confundir
com eficiência que significa fazer bem feito. Um programa pode ser bem feito, mas
não oferecer a solução para o problema proposto.
R – Rapidez, dentre as várias soluções encontradas para o mesmo problema,
devemos escolher a que seja mais rápida em termos de execução.
E – Economia. Também devemos escolher a solução mais econômica em
termos de utilização de memória principal e memória de armazenamento.
S – Segurança. O programa deve prever e tratar possíveis erros do usuário.
Exemplo: se pedirmos para digitar o Sexo (M/F), o programa não deve deixar que
o usuário digite qualquer outra letra que não sejam o M ou o F.
11/06/2011 137
Método para construir um algoritmo
08/06/2011 138
1. Ler atentamente o enunciado
Deve-se reler o enunciado de um exercício quantas vezes for necessário, até
compreendê-lo completamente.
A maior parte da resolução de um exercício consiste na compreensão completa
do enunciado.
08/06/2011 139
3. Retirar do enunciado, a relação das saídas das informações
Através do enunciado podemos descobrir quais são as informações que devem
ser mostradas para compor o resultado final, objetivo do algoritmo.
4. Determinar o que deve ser feito para transformar as entradas nas saídas
especificadas
Nessa fase é que teremos a construção do Algoritmo propriamente dito. Devemos
determinar qual sequência de passos ou ações é capaz de transformar um
conjunto de dados nas informações de resultado. Para isso, utilizamos os fatores
descritos anteriormente, tais como legibilidade, portabilidade, método cartesiano e
planejamento reverso, e finalmente podemos construir o algoritmo.
08/06/2011 140
VANTAGENS E DESVANTAGENS
PSEUDOCÓDIGO:
• Fácil de compreender.
• Fácil de ler e converter para programação.
• Melhor para representar programas maiores.
• É estruturado.
11/06/2011 141
FLUXOGRAMA:
• Fácil de compreender.
• Bom para construir e visualizar pequenos programas.
• Difícil de desenhar quando o programa fica muito grande.
• Não é estruturado.
DIAGRAMA DE CHAPIN:
11/06/2011 142
ALGORITMO NATURAL COMPARADO COM ALGORITMO ESTRUTURADO
11/06/2011 143
11/06/2011 144
Na construção de algoritmos, utilizamos diversos elementos. Entre eles
podemos citar valores informados ao programa (pelo teclado ou lidos de um
disco), comandos para armazenar valores, expressões, estruturas, e etc.
11/06/2011 145
O uso de Variáveis:
Tem-se como definição de variável tudo aquilo que é sujeito a variações. Variáveis
são espaços de memória que são alocados para armazenar informações. Por que
precisa-se de variáveis?
08/06/2011 146
Nomenclatura e declaração das variáveis:
08/06/2011 147
A declaração de uma variável também depende da linguagem. A variável X será
declarada do tipo inteiro e a
variável Y do tipo real. Observe a definição em cada linguagem:
08/06/2011 148
Atribuição de variáveis:
Exemplos:
A <- “mesa”
b := 2 + 5 - XB
c = -5.4 - b
08/06/2011 149
Quando uma variável é declarada (criada) qual o seu valor inicial?
R: Não se pode saber o valor inicial de uma variável, pois na memória existem
várias informações armazenadas, muitas delas estão sendo utilizadas pelo
computador, mas podem existir espaços em que foram armazenadas
informações anteriormente mas que não estão mais em uso. Esses espaços,
mesmo com informação estão disponíveis para novas variáveis. Uma variável
pode ser criada em um desses espaços, e seu valor será um "lixo" qualquer da
memória. Mas uma variável pode ser criada em um espaço vazio da memória,
nesse caso seu valor será nulo. Para resolver esse problema do valor inicial da
variável, algumas linguagens inicializam suas variáveis com 0 (zero) ou nulo.
08/06/2011 150
CONSTANTES
CONSTANTES: são valores utilizados no processamento, mas que não
sofrerão alterações durante o mesmo. Exemplos: nomes, datas de nascimento,
números de funcionários, nomes de cidades, etc.
As constantes podem ser dos seguintes tipos:
NUMÉRICO: Quando começam por um número, um sinal ou um parêntese,
todos os demais caracteres são apenas números, com apenas uma exceção, que
é o separador decimal (dependendo da linguagem, pode ser o ponto ou a vírgula).
Exemplos: 123, 34,75, (567), -512, etc.
DATA: Quando tiver um formato conhecido de data. Os mais comuns são:
dd/mm/aa, dd/mmm/aa, dd/mm/aaaa, dd/mmm/aaaa, dd/mm, dd/mmm, mm/aa,
mmm/aa, mm/aaaa, mmm/aaaa.
LÓGICA: (Booleanas). São os valores que correspondem às quatro letras ou
palavras lógicas correspondentes: T (True), F (False), Y (Yes), N (No).
CARACTER: (Texto, Literal ou String). São reconhecidas pela exclusão, ou
seja, tudo que não for reconhecido como numérico, data ou lógico, é do tipo
caracter.
11/06/2011 151
EXPRESSÕES
Expressão: é qualquer instrução de manipulação de dados.
As expressões podem ser:
ARITMÉTICAS: Nesse tipo de expressão só podemos utilizar operadores,
constantes e variáveis do tipo numérico, e o resultado será sempre um valor
numérico. Exemplo 3+2, A*B.
RELACIONAIS: Nesse tipo de expressão realizamos uma comparação entre
dois ou mais operandos do mesmo tipo, utilizando operadores relacionais e o
resultado será sempre um valor lógico (verdadeiro ou falso). Exemplo: 10>5, A<B.
LÓGICAS: É a união de duas ou mais expressões relacionais utilizando
operadores lógicos, e o resultado também será sempre um valor lógico
(verdadeiro ou falso). Exemplo: A>B E 10>5, Cidade = “Canoas” OU Cidade =
“Porto Alegre”.
11/06/2011 152
RELACIONAIS
• Igualdade: =
• Maior do que: >
• Menor do que: <
• Maior ou igual a: >=
• Menor ou igual a: <=
• Diferente: <>
11/06/2011 153
LÓGICOS (Booleanos)
• NAO
•E
• OU
11/06/2011 154
O operador NAO é um inversor de resultados, isto é, se o resultado da
expressão for verdadeiro transforma em falso e vice-versa.
11/06/2011 155
Operadores Lógicos
Pode ser que se necessite, em um determinado momento, trabalhar com o
relacionamento de duas ou mais condições, ao mesmo tempo na mesma
instrução se, efetuando assim testes múltiplos. Nesses casos se torna
necessário trabalhar com operadores lógicos ou boleanos. Os operadores
lógicos são três: e, ou, não .
08/06/2011 156
Operador Lógico: e
08/06/2011 157
Operador Lógico: ou
08/06/2011 158
Operador Lógico: não
08/06/2011 159
Instruções básicas ou Comandos básicos
08/06/2011 160
Comandos de Entrada e Saída de dados:
11/06/2011 161
Aqui colocamos em prática os conceitos aprendidos anteriormente, nos fatores
levados em consideração na construção de um algoritmo. Sempre que estamos
diante de um problema, este deve ser primeiro resolvido por nós, para que
depois seja resolvido pelo computador. Isto é, ele deve ser muito bem
compreendido para que depois se busque a solução no computador.
O computador deve ser utilizado para agilizar os processos que executados
mecanicamente seriam muito lentos.
Um exemplo bem simples: Numa turma com 50 alunos, o professor deve
calcular a média de cada aluno baseado em 3 provas, sendo que a primeira tem
peso 1, a segunda peso 2 e a terceira peso três. Para cada aluno o professor
deve fazer o seguinte cálculo: (nota 1 + nota 2 * 2 + nota 3 * 3 ) / 6.
Este processo seria muito lento, e com a utilização do computador e um
pequeno algoritmo (programa), seria necessário somente digitar os valores de
entrada para aparecer na tela a média.
11/06/2011 162
Blocos
Um bloco pode ser definido como um conjunto de ações de função bem definida.
No nosso caso, o algoritmo será visto como um bloco. Seus delimitadores serão
as palavras início e fim (veja o exemplo.).
11/06/2011 163
11/06/2011 164
Lógica de Programação
REVISÃO
Charles Emerson Machado – charles.machado@prof.sc.senac.br
11/06/2011 165
Algoritmos com Seleção – Estruturas de Controle
08/06/2011 166
Desvio condicional simples
Para solucionar este problema, será necessário trabalhar uma nova instrução não
vista até agora: se... então e fim_se. Essa instrução tem por finalidade
representar a tomada de uma decisão. Sendo a condição Verdadeira, serão
executadas todas as instruções entre se... então e fim_se. No caso da condição
ser falsa, o programa segue o fluxo normal após o comando fim_se, não
executando as linhas de programa que ficam entre se... então e fim_se.
...
se (<condição>) entao
<comandos para condição verdadeira somente>
fim_se
...
comandos
08/06/2011 167
Fluxograma ou diagrama de blocos
08/06/2011 168
Operadores relacionais
Nos testes condicionais dos algoritmos, são utilizados os seguintes
operadores: >, <, =, >=, <= e <>.
Desvio condicional composto
Exemplo: considerando o caso anterior onde um algoritmo deve calcular a média
de um aluno e mostrar uma mensagem dizendo se esse aluno está aprovado (no
caso da nota ter sido igual ou superior a Cinco), uma cláusula senão deve ser
incluída no algoritmo no caso do aluno ser reprovado (nota inferior a cinco.
comandos
...
se (<condição>) entao
<comandos para condição verdadeira>
senao
<comandos para condição falsa>
fim_se
...
comandos
08/06/2011 169
Desvio condicional encadeado (ou aninhado)
08/06/2011 171
Algoritmos com Repetição – Laços de Repetição
08/06/2011 172
variaveis
numerico media,n1,n2
inicio
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
fim
08/06/2011 173
Para esse e outros casos similares, existem comandos apropriados para efetuar
a repetição de determinados trechos de programa tantas vezes quantas forem
necessárias. A principal vantagem é que o programa passa a ter um tamanho
muito menor, podendo ser ampliada a amplitude de processamento como for
necessária.
08/06/2011 174
Repetição utilizando estrutura Para / Próximo
08/06/2011 175
Veja o exemplo anterior, aplicando-se nele o laço de repetição Para /
Próximo.
variaveis
numerico media,n1,n2,i
inicio
para i de 1 ate 3 passo 1 // (nesse caso passo 1 é opcional)
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
proximo
fim
O algoritmo, que tinha que 17 linhas, passou a ter 10 linhas, com a mesma
funcionalidade e ainda com a vantagem de se ampliar o número de repetições
de 3 para 300, com a maior facilidade.
08/06/2011 176
Repetição utilizando estrutura Faça Enquanto / Fim_enquanto
08/06/2011 177
Nesse caso, quando for digitado 0 (zero) para val, o fluxo do programa segue
até chegar no comando fim_enquanto. Ao retornar na linha faça enquanto,
é verificado que o valor não é diferente de zero e o controle do programa
passa para a linha comandos2. A partir daí o fluxo do programa segue
normalmente.
Veja abaixo como ficaria a utilização do laço faça enquanto para o exercício
das 4 repetições:
variaveis
numerico media,n1,n2,i
inicio
i:= 1
faça enquanto i <= 3
Ler n1
Ler n2
media := (n1+n2)/2
escrever “Média:”, media
i:= i+1
fim_enquanto
08/06/2011 fim 178
Contador
É uma variável de controle, inteira, que serve para controlar quantas vezes um
determinado trecho de programa foi executado.
Acumulador
08/06/2011 179
Lógica de Programação
Charles Emerson Machado – charles.machado@prof.sc.senac.br
08/06/2011 180
Tipos de dados Homogêneos – VETORES e MATRIZES
Os tipos homogêneos são conjuntos do mesmo tipo básico. A utilização desse tipo de
estrutura de dados recebe diversos nomes, tais como: variáveis indexadas, compostas,
arranjos, tabelas em memória, arrays (do inglês) vetores e matrizes. Para simplificar
utilizaremos somente os nomes vetores e matrizes. Os vetores são uma lista de
elementos do mesmo tipo. Quando os vetores possuem mais de uma dimensão se
tornam matrizes.
Todas as variáveis e constantes ocupam um espaço em memória. Este espaço ocupado é
um espaço linear, ou seja, se temos a seguinte declaração :
variaveis
numerico a,b
provavelmente (dependendo do compilador da linguagem utilizada) estas variáveis
ocuparão espaços subsequentes em memória. Baseado na necessidade de utilização de
tipos como vetores e utilizando esta linearidade do armazenamento em memória fica fácil
para as linguagens de programação implementarem estes tipos.
08/06/2011 181
Vetores:
08/06/2011 182
Matrizes:
08/06/2011 183
08/06/2011 184