Vous êtes sur la page 1sur 51

ESCOLA ESTADUAL TÉCNICO INDUSTRIAL

PROFESSOR FONTES

Lógica de Programação

Curso Técnico em Eletrotécnica

I Módulo

Prof. Rubem Cândido

www.rubemsantos.com.br
Sumário
Introdução .................................................................................................................................... 4
Conceitos ..................................................................................................................................... 4
VisualG..................................................................................................................................... 12
Tipos de Dados ........................................................................................................................ 13
Tipo Numérico ......................................................................................................................... 13
Tipo Caractere ......................................................................................................................... 13
Tipo Lógico .............................................................................................................................. 13
Variáveis .................................................................................................................................. 14
Nomes de variáveis ................................................................................................................. 15
Constantes............................................................................................................................... 15
Declaração de variáveis ........................................................................................................... 15

................................................................................................... 16
Atribuição de valores a variáveis............................................................................................. 16
Operadores Aritméticos .......................................................................................................... 17
Expressões Aritméticas ........................................................................................................... 17
Entrada de dados .................................................................................................................... 18
Instrução leia ........................................................................................................................... 18
Introcução Escreva .................................................................................................................. 18
Operadores Relacionais........................................................................................................... 19
Operadores Lógicos ................................................................................................................. 20
Operador lógico E .................................................................................................................... 21
Operador lógico NÃO .............................................................................................................. 21
Estruturas de Controle de Decisão .............................................................................................. 22
Desvio Condicional Simples..................................................................................................... 22
se <condições> então <instruções> fimse .......................................................................... 22
Sintaxe ................................................................................................................................. 23
Desvio Condicional Composto................................................................................................. 25
Desvio Condicional Aninhado.............................................................................................. 29
Estruturas de Controle de Repetição .......................................................................................... 31
Estrutura Enquanto ................................................................................................................. 31
Sintaxe de enquanto: .......................................................................................................... 31
Estrutura repita ... até ......................................................................................................... 34
Sintaxe do Repita ... até ...................................................................................................... 34
Estrutura de Repetição para ................................................................................................... 36
Sintaxe de para .................................................................................................................... 36
Estruturas de Dados .................................................................................................................... 38
Arrays ...................................................................................................................................... 38
Declaração de vetores ............................................................................................................. 39
Inserir dados em um vetor .................................................................................................. 39
Transferir valor de variáveis ........................................................................................................ 42
Ordenação de Arrays................................................................................................................... 43
Criação do Array para ordenação ........................................................................................... 44
Código para ordenar o array ................................................................................................... 45
Pesquisa Binária em Vetores ....................................................................................................... 51
Introdução
A lógica de programação

Conceitos
Lógica de Programação

Lógica é a Ciência do Raciocínio. Encadeamento de pensamentos em uma


sequência coerente – instruções. Técnica para colocar instruções em uma
sequência lógica para que seja possível atingir um objeto determinado – em
uma linguagem de programação.

Programa: Conjunto de instruções executadas em uma ordem conveniente que


contém as tarefas ou operações necessárias para resolver um problema,
usando um computador

Algoritmo: Sequência de regras, raciocínio ou operação que, aplicada a um


número finito de dados e não ambígua que são executadas mecanicamente
para executar uma tarefa.

Como uma “receita de bolo”. Um algoritmo deve ter fim, poder se comunicar
com o mundo exterior, e executar suas instruções em um tempo finito. Cada
linha de um algoritmo deve executar uma única instrução.

Linguagens de Programação

Linguagens de Programação é um conjunto de regras utilizadas para criar


programas de computador. Essas regras são usadas para expressar os
algoritmos de forma precisa. Os algoritmos são escritos em uma linguagem de
programação, gerando um código-fonte. Há três níveis principais de linguagens
de programação:

Linguagem de máquina: Linguagem compreendida pelo computador. As


instruções são representadas por valores binários (bits), 0 e 1

Linguagem de Baixo Nível: Linguagem que utiliza instruções próximas à


linguagem de máquina, porém compreensíveis por seres humanos. Ex.
Assembly.

Linguagem de Alto Nível: Linguagem cujas instruções estão bem próximas da


compreensão humana. Ex. C#, Python, Visual Basic, Java, LISP, PHP.

Uma linguagem de programação, para ser efetivamente transformada em um


programa e executada, pode ser convertida em código de máquina
(“compilação”) ou interpretada (interpretação”)

Compilação
Método que traduz todo o código-fonte em um ou mais arquivos que podem ser
armazenados e executados quantas vezes se desejar, sem necessitar de nova
compilação.

Usa um compilador (software)

Exemplo: Linguagem C.

Interpretação

Os comandos necessários contidos no código fonte vão sendo executados à


medida em que são traduzidos, sendo necessária a interpretação toda vez que
se quiser rodar o programa.

Usa um interpretador (software)

Exemplo: Python.

Lógica de Programação

Sequência lógica: Passos ou tarefas executadas até atingir um objetivo


solucionar um problema apresentado.

Exemplo:

Fazer café

1. Pegue um coador

2. Pegue o papel de filtro

3. Coloque-o no coador

4. Coloque o conjunto sobre uma caneca

5. Pegue o pó de café no armário

6. Coloque um pouco de pó no coador

7. Ferva água

8. Despeje água no coador

9. Espere a água toda escorrer

10. Retire o coador

11. Adoce o café

12. Sirva o café

Sequência lógica
Par que as tarefas possam ser realizadas com êxito, elas devem estar
ordenadas.

Tarefas ordenadas nos levam à noção de Algoritmo

Refinamento de ações

Note que o algoritmo para fazer o café é funcional, porem há outras ações que
devem ser realizadas, e outras tantas que podem ser desdobradas em ações
menores. Essas ações são chamadas de não-primitivas. Já ações que não
podem mais ser desdobradas são chamadas de primitivas.

Exemplo de refinamento

Ação: Ferver água:

Refinamento:

- Pegar a caneca

- Levar à pia

- Colocar sob torneira

- Abrir a torneira

- Encher a caneca de água

- Fechar a torneira

- Levar a caneca ao fogão

- Acender o fogão

Como representar um algoritmo

Há várias formas de representar um algoritmo

Fluxograma

Diagrama de Chapin

Português Estruturado

Fluxograma

Descreve o fluxo de dados e instruções usando desenhos geométricos básicos


que simbolizam a entrada, saída e processamento de dados.

Indicado para algoritmos de pouca extensão.


Início ou fim de programa ou fluxo

Seta de fluxo de dados

Bloco de processamento e manipulação


de dados

Entrada e saída de dados

Estrutura de decisão

Conector de partes do diagrama

Conector de página
Entrada manual de dados (via teclado)

Exemplo de Fluxograma

Problema: Calcular a média de um aluno, baseado nas notas de quatro provas,


e verificar se foi aprovado. Critério: será aprovado se a nota média for igual ou
superior a 7.0

Início

Entrar com as 4 notas

Calcular média

Verificar se média é maior ou igual a 7.0

Se sim, apresentar no vídeo “Aprovado”

Se não, apresentar no vídeo “Reprovado”

Fim
Figura 1. Fluxograma

Diagrama de Chapin

Desenvolvido por Nassi-Shneiderman e ampliado por Ned Chapin

Substitui o fluxograma tradicional por um diagrama de quadros que apresenta


uma visão hierárquica e estruturada da lógica do programa.
Facilita a codificação do algoritmo bem como a representação de certas
técnicas, como a recursividade.

Figura 2. Diagrama de Chapin

Português Estruturado

Técnica narrativa baseada em PDL – Program Design Language (Linguagem


de Projeto de Programa).
Notação para elaboração de algoritmos estruturados que serão utilizados para
a criação e desenvolvimento em uma linguagem de programação qualquer

Também conhecido como Pseudocódigo

Exemplo

algoritmo Média

var

res: caractere

N1, N2, N3, N4: real

Inicio

leia (N1, N2, N3, N4)

media <- ((N1 + N2 + N3 + N4) / 4

se (media >= 7 ) então

res <- “Aprovado”

senão

res <- “Reprovado”

fimse

escreva (“Resultado: “, res)

fimalgoritmo

VisualG
Software que nos permitirá testar diversos algoritmos em português
estruturado.
Figura 3. VisualG com o portugol média de nota

Tipos de Dados
Os dados são as informações a serem processadas por um computador. São divididos em três
tipos principais:

 Numéricos
 Caracteres
 Lógicos

Tipo Numérico
O tipo numérico pode ser subdividido em dois tipos:

Inteiro – números inteiros, positivo e negativos, como 5, 250 e -95

Real – números positivos, negativos e fracionários, como 5.0, 45.23 e -20.6

Tipo Caractere
Também conhecido como tipo literal

Se referem a sequências que contenham letras, números e símbolos.

Os caracteres devem ser representados sempre entre aspas (“”) no código.

Podemos também falar em cadeia, string, alfanumérico ou char.

Tipo Lógico
São dados cujos valores somente podem assumir um de dois valores: verdadeiro (True) ou
falso (False).

Também conhecido como tipo Booleano.


Variáveis
Uma variável é uma localização na memória RAM do computador que é utilizada para
armazenar temporariamente os dados que são utilizados pelo programa.

As variáveis possuem algumas caracterísitcas, como:

 Identificação (“nome”)
 Endereço
 Tipo
 Tamanho
 Valor (“conteúdo”)
Nomes de variáveis
Podem ter um ou mais caracteres;

O primeiro caractere sempre é uma letra;

Não pode ter espaços em branco;

Não podem ser usados símbolos;

Podem ser usados números mas não no início;

Não podem ser palavras reservadas da linguagem

Exemplos de variáveis:

nome x 1endereco endereço1 rua&numero cep nota2

Constantes
Uma constante é uma posição na memória cujo valor não muda ao longo da execução do
programa.

Por exemplo, o valor de Pi é uma constante, pois é sempre o mesmo (3,1415...)

Declaração de variáveis
Para que uma variável possa ser usada em um programa, ela deve primeiro ser declarada, para
que seja reservado espaço na memória para armazenamento de seus dados.

NOME_VARIAVEL : TIPO_DADOS

As variáveis devem ser declaradas no início do programa (mas em alguns casos podem ser
declaradas em outras partes do programa)

Exemplo de declaração

algoritmo teste

var

idade: numérico

nome: literal

salario: numérico

fimalgoritmo
Atribuição de valores a variáveis
Para atribuir um valor a uma variável, use o comando de atribuição:

< - (seta à direita )

Na maioria das linguagens de programação, o comando de atribuição é o sinal de igualdade


(=).

Exemplo de atribuição de valores

idade <- 33

nome <- “Rubem”

valor <- 4500

salario <- valor


Figura 4. Demonstrando valores

Operadores Aritméticos

Expressões Aritméticas
X <- 2 * 3
Y <- 5 ^ 2

Z <- 4 % 2

W <- 8 / 4

K <- 7 \ 2

M <- W + X

N <- M - K

Figura 5. Operações

Entrada de dados

Instrução leia
Lê valores digitados no teclado e os armazena em variáveis na memória.

leia (variável1, variável2, ...)

Exemplo:

leia (valor) //Armazena um dado na variável valor

Introdução Escreva
Escreva (“imprime”) dados na tela do computador. Esses dados podem ou não estarem
armazenados em variáveis

Escreva (valor1, valor2,...)

Exemplo:

Escreva (15) // Escreva na tela o valor 15


Escreva (valor ) // Escreva na tela o conteúdo da variável valor

Algoritmo SOMAR_DOIS_NÚMEROS

Var

x, y, z: inteiro

início

leia (x)

leia (y)

z <- x + y

escreva (z)

fimalgoritmo

Figura 6. Programa soma no VisualG

Operadores Relacionais
Operador relacional é um operador que oferece uma relação entre dois outros objetos.
Figura 7. Operadores

Figura 8. Exemplo de operadores

Operadores Lógicos
Também conhecido como operadores booleanos.

Permitem trabalhar com múltiplas condições relacionais na mesma expressão.

Os mais usados são: e, ou, não.


Retornam, como se espera, valores lógicos.

Operador lógico E

O operador lógico E somente retorna verdadeiro se todas as condições de entrada forem


verdadeiras.

Operador Lógico OU

Figura x. Tabela verdade OU

O operador lógico OU somente retorna falso se todas as condições de entrada forem


falsas.

Operador lógico NÃO

Figura 9. Tabela verdade NÃO


O operador lógico NÃO inverte a condição de entrada: verdadeiro se torna falso, e
falso se torna verdadeiro.

Figura 10. Operadores lógicos

A ordem de precedência dos operadores é (não) em primeiro, (e) em segundo e (ou) por
último.

Estruturas de Controle de Decisão


É uma tomada de decisão no código

Desvio Condicional Simples


se <condições> então <instruções> fimse
Essa instrução tem por finalidade tomar uma decisão de acordo com o resultado de uma
condição (teste lógico).

Se o teste retorna verdadeiro, as instruções contidas entre os comandos então e fimse serão
executados; caso contrário, nada ocorre.
Imagem 11. Desvio de condicional Simples

Sintaxe
se (condição) então

Instruções caso condição retorne verdadeiro

fimse

Instruções para condição falsa ou após executar as instruções de condição verdadeiro


Figura 12 Exemplo de Condicional Simples
Figura 13. Exemplo de condicional simples no VisualG

Desvio Condicional Composto


se <condições> então<instruções>senão
<instruções>fimse
Essa instrução tem por finalidade tomar uma decisão de acordo com o resultado de uma
condição (teste lógico).
Se o teste retornar verdadeiro, as instruções contidas entre os comandos então e senão serão
executados.
Se o teste retorna falso, as instruções contidas entre os comandos senão e fimse serão
executados.
Figura 14. Desvio Condicional Composto
Figura 15. Desvio Condicional Composto
Sintaxe
se (condição) então
instruções caso condição retorne verdadeiro
senão
instruções caso condição retorne falso
fimse
instruções após executar as instruções de condição verdadeiro ou falso
Figura 16. Exemplo de Desvio Condicional Composto
Figura 17. Desvio Condicional Composto feito no VisualG

Desvio Condicional Aninhado


Ou Desvio Condicional Encadeado. Usado quando é necessário verificar condições sucessivas
onde uma ação será executada se um conjunto anterior de ações for satisfeito.

Figura 18. Desvio Condicional Alinhado

Sintaxe

se (condição 1) então
instruções caso condição 1 retorne verdadeiro
senão
se (condição 2) então
instruções caso condição 2 retorne verdadeiro
senão
instruções caso condição 2 retornar falso
fimse
fimse

Figura 19. Desvio Condicional Alinhado

Figura 20. Exemplo de Desvio Condicional Alinha no VisualG


Estruturas de Controle de Repetição
Em muitos casos é necessário repetir um trecho de um programa diversas vezes. Nesse caso
podemos usar um “loop” que efetue essa repetição de código quantas vezes forem
necessárias. Os loops são chamados também de laços de repetição.

Estrutura Enquanto
Essa estrutura realiza um teste lógico no início do loop, e cada vez que o teste retorna o
valor verdadeiro, os comandos associados ao laço são executados. Quando o teste
retornar falso, o laço é encerrado e o processamento volta para o fluxo principal do
programa.

Sintaxe de enquanto:
enquanto (condições) faça

Instruções executadas enquanto condição verdadeira

Fimenquanto

Figura 21. Estrutura de repetição


Exemplo. Imprimir na tela os números de 1 a 10, usando estrutura de repetição
enquanto.

Algoritmo NUM_1_A_10

Var

num : inteiro

início

num <- 1

enquanto num <= 10 faça

escreva (num)

num <- num + 1

fimenquanto

fim
Figura 22. Fluxograma do exemplo

Figura 23. Exemplo enquanto no VisualG


Estrutura repita ... até
Trata-se de uma estrutura que efetua um teste lógico no fim do looping. Lembra a estrutura
enquanto. Porém, executa o conjunto de instruções pelo menos uma vez antes de verificar a
condição testada. O conjunto de instruções é executado enquanto a condição testada retorna
Falso.

Sintaxe do Repita ... até


repita

Instruções executadas enquanto condição falsa

até (condição)

Figura 24. Fluxograma de Repita ... até

Pseudocódigo
algoritmo N_1_a_10
var
num : inteiro
repita
escreva (num)
num <- num + 1
até (num >10)
fim

Figura 25. Fluxograma do exemplo


Figura 26. Repita no VisualG

Estrutura de Repetição para


Permite construir estruturas de looping para casos onde se conhece de antemão o número de
repetições que devem ser realizadas (número finito de laços). Por exemplo, sabemos de
antemão que o laço deve se repetir 10 vezes; portanto, podemos usar a estrutura para. Caso
não haja como saber previamente o número de repetições necessárias, use enquanto ou
repita.

Sintaxe de para
Para variável de inicio até fim passo incremento faça instruções fimpara

Variável = variável contadora

Início = valor inicial atribuído à variável

Fim = valor final que a variável armazenará

Incremento = valor para incrementar variável a cada looping (padrão: 1)


Figura 27. Fluxograma de para

Pseudocódigo do fluxograma

Algoritmo NUM_1_A_10
Var
num : inteiro
contador : inteiro
início
para contador de 1 até 10 passo 1 faça
escreva (contador)
fimpara
fim

Figura 28. Exemplo para no VisualG

Estruturas de Dados
Estruturas de dados são formas de armazenamento e organização de dados na memória de um
computador para que possam ser usados de forma mais eficiente. Podem ser empregadas em
diferentes tipos de aplicações, sendo em alguns casos bem especializadas e orientadas a
tarefas específicas. Algumas estruturas de dados sao de uso “geral”, sendo adequadas
inclusive para gerar outras estruturas de dados mais complexas. São tipos de dados
compostos, classificados em estruturas homogêneas e heterogêneas, de acordo com os tipos
de dados primitivos que elas contém.

 Homogêneas = Mesmo tipo de dados


 Heterogêneas = Tipos de dados distintos.

As estruturas de dados clássicas são:

 Arrays (“vetores” e “matrizes”)


 Lista
 Fila
 Pilha
 Árvore

Arrays
Um array é uma estrutura homogênea que mantém uma série de elementos de dados de
mesmo tipo. Pode-se acessar os elementos individuais por meio de uma posição de índice,
geralmente numérica. Possuem tamanho fixo.
 Unidimensional : Vetor
 Bidimensional : Matriz

Vetores

Arrays unidimensionas

Figura 29. Posições de índice

Declaração de vetores
Nome_vetor: vetor[i..f] de Tipo_Dados

Onde:

Nome_Vetor = nome escolhido para o vetor

i = Valor da primeira posição do vetor

f = Valor da última posição do vetor

Tipo_Dados = tipo dos dados armazenados no vetor

Exemplo de declaração de vetores

Notas: vetor [0..9] de real

Este código cria um vetor de 10 posições, com números de índice de 0 a 9, de nome “notas” e
que armazenará dados do tipo real.

Inserir dados em um vetor


Para inserir dados em um vetor, proceda da mesma forma que a atribuição de dados em
variáveis, porém informando a posição de índice onde a informação será inserida.

notas[0] <- 7.5

Neste exemplo, o valor 7.5 foi atribuído à posição de índice 0 do vetor notas.

Usar dados armazenados em um vetor


var
minhanota: real
notas: vetor[0..9] de real
inicio
notas[0] <-8.5
minasnota <- notas[0]
escreval (minhanota)
escreval (notas[0])

Figura 30. Conteúdo do vetor no VisualG

Exemplo:
Precisamos de um programa que permita entrar com 4 notas de um aluno, armazená-las
na memória, calcular a média e exibir essa média na tela. Opcionalmente pode exibir
também as notas usadas no cálculo da média.

Pseudocódigo média com vetor

algoritmo MÉDIAS
var
notas : vetor [0..3] de real
soma, media: real
inicio
soma <- 0
escreval (“Digite as quatro notas do aluno: ”)
para i de 0 ate 3 faça
leia (notas[i])
soma <- soma + notas[i]
fimpara
media <-soma/4
escreval (“A média é “, media)
fimalgoritmo

Figura 31. Exemplo da média com vetor no VisualG

Figura 32. Fluxograma da média com vetor


Transferir valor de variáveis

Passo 1

Passo 2

Passo 3

Passo 4

Pseudocódigo Transferência de valores

Var
x, y, aux : inteiro

inicio

escreval (“Vamos trocar os valores de x e y: “)

escreval (“Digite o valor para x: ”)

leia (x)

escreval (“Digite o valor para y: ”)

leia (y)

aux <- y

y <- x

x <- aux

escreval (“Agora x vale ”, x, “ e y vale ”, y)

fimalgoritmo

Figura 33. Exemplo de transferência de valor no VisualG

Ordenação de Arrays
É possível ordenar os valores armazenados em um vetor (array), em ordem alfabética ou
numérica. Vejamos um vetor de 3 posições:
Figura 35. Ordenação de um Array

Criação do Array para ordenação


Var

contadora, contadorb : inteiro

num, aux : inteiro

vet : vetor [1..3] de inteiro

incio

para contadora de 1 ate 3 faca

escreval (“Digite um número”)

leia (num)

vet [contadora] <- num

fimpara
Figura 36. Preenchendo o array com os valores

Código para ordenar o array


para contadora de 1 ate 2 faca

para contadorb de contadora + 1 ate 3 faca

se vet[contadora] > vet[contadorb] entao

aux < - vet[contadorb] < - vet[contadora]

vet[contadora] < - aux

fimse

fimpara

fimpara
Figura 37. Processo de ordenação do Array

Figura 38. Troca


Figura 39. Troca Pos 1 para Pos 2

Figura 40. Aux para Pos 1


Figura 41. Pos 3 para aux

Figura 42. Pos 1 par Pos 3


Figura 43. Aux para Pos 1

Figura 44. Pos 3 para Aux


Figura 45. Pos 2 vai para aux

Figura 46. Valor de aux vai para Pos 2

Exibir o array ordenado

para contadora de 1 ate 3 faca

escreval (vet[contadora])

fimpara
Figura 47. Ordenando valores com array

Pesquisa Binária em Vetores


Criar vetor e ordená-lo

Figura 48. Ordenando vetores

Vous aimerez peut-être aussi