64
Lógica Computacional Prof. Cláudio da Silva

Introdução a Linguagem de Programação (1)

Embed Size (px)

DESCRIPTION

introdução sobre programação de computadores

Citation preview

Page 1: Introdução a Linguagem de Programação (1)

Lógica Computacional

Prof. Cláudio da Silva

Page 2: Introdução a Linguagem de Programação (1)

Fluxograma

É o gráfico que representa a seqüência de um trabalho,

produto ou documento, de forma analítica, caracterizando

as operações e os agentes executores.

Page 3: Introdução a Linguagem de Programação (1)

Vantagens e Desvantagens

Possibilita a:

• simplificar o trabalho pela eliminação, combinação e redefinição de fases ou passos;

• visualizar, localizar, corrigir e eliminar os movimentos desnecessários;

• estudar, corrigir e obter a melhor seqüência

das fases necessárias;

• a chefia aplicar, de forma mais eficiente, as normas e as instruções traçadas.

Page 4: Introdução a Linguagem de Programação (1)

Tipos de fluxogramas

Fluxograma sintético

Fluxograma de blocos

Fluxograma esqueleto

Fluxograma de

procedimentos

Fluxograma vertical e

horizontal

Page 5: Introdução a Linguagem de Programação (1)

Não

Sim

INÍCIO

DEFINIR O

PROBLEMA

ANALISAR O

PROBLEMA

PARA

RESOL-

VER

ACHAR

SOLUÇÃO

POSSÍVEL

RESOLVE

PLANEJAR

SOLUÇÃO

IMPLANTAR

AVALIAR

FIM

REUNIR

MAIS

DADOS

GERAR

ALTERNATIVA

Não

Sim

1

1

Page 6: Introdução a Linguagem de Programação (1)

Prof. Virginia PO04 6

Símbolos de Diagramas de Blocos e

Fluxogramas

Processamento

entrada /saída

decisão

Terminal

conexão

conexão de página

Page 7: Introdução a Linguagem de Programação (1)

Fluxograma para Problemas Matemáticos

Page 8: Introdução a Linguagem de Programação (1)

Fluxograma de Processos

Page 9: Introdução a Linguagem de Programação (1)

Algoritmo e Português

Estruturado

IIa Parte

Page 10: Introdução a Linguagem de Programação (1)

História

A palavra algoritmo origina-se no nome: Muhammad

ibn Musa al-Jwarizmi, que viveu no século IX.

Tentou preservar o conhecimento da antiga

Grécia

Seus livros eram de fácil compreensão, baseavam-

se na criação de novos teoremas com o objetivo

de simplificar a matemática.

Estudou a maneira de reduzir as operações que

formavam o cálculo.

A palavra ALGORITMO fazia referência as regras

de uso da aritmética utilizando dígitos árabes,

sendo uma derivação de al-Khwarizmi,

algobarismus, que mais tarde mudaria para a

palabra algoritmo en el siglo XVIII.

Page 11: Introdução a Linguagem de Programação (1)

O que é Problema Computacional

Consiste em computar o valor de uma função para uma entrada

que satisfaça as especificações.

Ou seja, dada uma função f : A → B e uma entrada x que

pertence a A, computar y = f (x).

Definir um problema computacional é especificar a relação

entre entrada e saída.

Exemplo: x codifica um grafo direcionado G = (V , E), uma

função w : E → R com os pesos dos arcos, e dois vértices s e t. f

(x) é o caminho mais curto de s a t.

Necessidade de algoritmo para resolvê-lo

Page 12: Introdução a Linguagem de Programação (1)

O que é um Algoritmo ?

Informalmente, um algoritmo é um procedimento

computacional bem-definido que toma como entrada um

valor (ou conjunto de valores) e produz como saída um valor

(ou conjunto de valores) com a solução de um problema

computacional.

Um algoritmo é uma seqüência de passos computacionais que

transforma entrada em saída.

Podemos ver um algoritmo como uma ferramenta para

resolver um problema computacional bem definido.

Page 13: Introdução a Linguagem de Programação (1)

O que é um Algoritmo ?

Page 14: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Resumindo, um algoritmo A resolve um problema P se, ao

receber qualquer instância I de P, sempre produzir uma

solução S para I.

A – algoritmo.

I – entrada (instância).

S – saída (resultado).

I S Para qualquer entrada I, o algoritmo deve ser executável em

tempo finito e, além disso, gerar uma solução correta de P.

Algoritmos

Page 15: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

ESTRUTURA GERAL DE UM ALGORITMO

Algoritmo (Nome-do-Algoritmo);

Declaração de constantes, tipos e variáveis;

Início

Seqüências de Comandos;

Fim.

Algoritmos

Page 16: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

ESTRUTURA GERAL DE UM ALGORITMO

Algoritmo (Nome-do-Algoritmo);

Declaração de constantes, tipos e variáveis;

Início

Atribuições

Comandos de E/S

Estruturas de controle

Seleção

Repetição Fim.

Algoritmos

Page 17: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Constantes

Informação que não sofre variação no decorrer do tempo.

Ex: 5, “Não Fume”, 2548, -0,62, “R$10,00”, Falso.

Variáveis

Informação que tem a possibilidade de ser alterada em algum

instante no decorrer do tempo.

Ex: Cotação do dólar, peso de uma pessoa, salário.

Algoritmos

Page 18: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Declaração de Variáveis e Constantes

Alocar espaço de memória do tamanho do tipo-de-dado e

dar um nome a este espaço;

Ao longo do programa, usa-se o nome dado ao invés do

valor.

CONST n=50;

VAR a, b, c, soma : TIPO;

Algoritmos

Page 19: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Declaração de Variáveis e Constantes

Quando definir variáveis ?

Quando um elemento da lógica para a resolução do problema sofrer alterações de valor ao longo desta resolução.

Quando definir constantes ?

Quando uma valor fixo for utilizado várias vezes na lógica para a resolução do problema.

Algoritmos

Page 20: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Tipos de Dados

Primitivos

INTEIRO

REAL

LÓGICO

CARACTERE

STRING

Definidos pelo programador

DISCIPLINA

FILA

PILHA

Algoritmos

Page 21: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Expressões Aritméticas

Aquelas cujos operadores são aritméticos e cujos operandos são

constantes e/ou variáveis do tipo numérico (inteiro e/ou real).

Operadores Aritméticos

+ Adição * Multiplicação / Divisão

- Subtração ** Potenciação // Radiciação

mod ou % resto da divisão.

Algoritmos

Page 22: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Funções Matemáticas

sen (x) - seno de x

cos(x) - cosseno de x

tg(x) - tangente de x

abs (x) - valor absoluto (módulo) de x

int (x) - parte inteira de um número real

Algoritmos

Page 23: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Prioridades

parênteses mais internos

funções matemáticas

** //

* /

+ -

Algoritmos

Page 24: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Expressões Relacionais

Comparação entre dois valores de um mesmo tipo primitivo.

Estes valores podem ser constantes, variáveis ou expressões

aritméticas.

O resultado obtido de uma relação é sempre um valor

lógico.

Operadores Relacionais

= igual a <> diferente de

> maior que >= maior igual a

< menor que <= menor igual a

Algoritmos

Page 25: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Expressões Lógicas

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 Lógicos

e - Conjunção

ou - Disjunção (não-exclusiva)

xou - Disjunção (exclusiva)

não - negação

Algoritmos

Page 26: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Prioridades entre todos os Operadores

parênteses mais internos

funções aritméticas

operadores aritméticos

operadores relacionais

operadores lógicos

Algoritmos

Page 27: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

ESTRUTURA GERAL DE UM ALGORITMO

Algoritmo (Nome-do-Algoritmo);

Declaração de constantes, tipos e variáveis;

Início

Atribuições

Comandos de E/S

Estruturas de controle

Seleção

Repetição Fim.

Algoritmos

Page 28: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Atribuição

Fornece um valor a uma variável.

Ex: a 1;

sexo “FEMININO”;

salário 128,00;

Algoritmos

Page 29: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

ESTRUTURA GERAL DE UM ALGORITMO

Algoritmo (Nome-do-Algoritmo);

Declaração de constantes, tipos e variáveis;

Início

Atribuições

Comandos de E/S

Estruturas de controle

Seleção

Repetição Fim.

Algoritmos

Page 30: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Comandos de Entrada e Saída

Exemplos do comando de entrada leia:

leia (x);

leia (a, nota, faltas);

Exemplos do comando de saída escreva:

escreva (x);

escreva (a, nota, faltas);

escreva („Bom Dia „, nome);

escreva („Você pesa „, x * 2, „quilos.‟);

Algoritmos

Page 31: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

ESTRUTURA GERAL DE UM ALGORITMO

Algoritmo (Nome-do-Algoritmo);

Declaração de constantes, tipos e variáveis;

Início

Atribuições

Comandos de E/S

Estruturas de controle

Seleção

Repetição Fim.

Algoritmos

Page 32: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Estruturas de Controle de Fluxo

Seqüência

Seleção

simples

composta

encadeada

múltipla escolha

Repetição

Teste condicional no início

Número de repetições conhecido

Número de repetições desconhecido

Teste condicional no fim

Algoritmos

Page 33: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Estruturas de Controle de Fluxo

Seqüência

início

<comando 1>;

<comando 2>;

<comando N>;

fim

Algoritmos

Page 34: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Estruturas de Controle de Fluxo

Seleção simples início se <condição 1> então <comando 1>; <comando 2>; <comando N>; fim se fim

Algoritmos

Page 35: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Estruturas de Controle de Fluxo

Seleção composta início se <condição 1> então <comando 1>; <comando 2>; <comando N>; senão <comando 1>; <comando 2>; <comando N>; fim se fim

Algoritmos

BLOCO

VERDADE

BLOCO FALSO

Page 36: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Seleção composta início se <condição 1> então se <condição 2> então

<comando 1>; <comando N>; fim se senão se <condição 3> então

<comando 1>; <comando N>; senão

se <condição 4> então <comando 1>;

<comando N>; senão

<comando 1>; fim se <comando 1>; fim se fim se fim

Algoritmos

Page 37: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Seleção de múltipla escolha

início

escolha (x)

caso VALOR1 : <comando 1>;

caso VALOR2 : <comando 2>;

caso VALOR3 : <comando N>;

fim escolha fim

Algoritmos

Page 38: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Seleção de múltipla escolha

início

se <x = VALOR1> então <comando 1>; senão se <x = VALOR2> então

<comando 2>; senão

se <x = VALOR3> então <comando 3>;

fim se fim se fim se fim

Algoritmos

Page 39: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Repetição

Usada em trechos do algoritmo em que há a

necessidade de se realizar um bloco de comando

um número determinado de vezes.

Algoritmos

Page 40: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Repetição com teste no início (ENQUANTO-FAÇA)

Permite executar diversas vezes um trecho do algoritmo, porém, sempre verificando antes de cada execução se é “permitido” executar algum trecho.

enquanto (<condição1>) faça

<comando1>;

<comando2>;

<comandoN>;

fim enquanto

Quando o resultado da <condição1> for falso, o comando é abandonado.

Se já da primeira vez o resultado for falso, os comandos não são executados nem uma vez.

Algoritmos

Page 41: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Repetição com teste no FINAL (REPITA-ATÉ)

repita

<comando1>;

<comando2>;

<comandoN>;

até (<condição1>)

O bloco de comandos é executado pelo menos uma vez, independente da

validade da <condição1>. Isto ocorre porque a inspeção da <condição1> é feita após a execução do bloco.

Algoritmos

Page 42: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Repetição com variável de controle

(PARA)

para (V = vi; V <= vf; passo p) faça

<comando1>;

<comando2>;

<comandoN>;

fim para

Algoritmos

onde:

• V é a variável de controle;

• vi é o valor inicial de V;

• vf é o valor final de V, ou seja, o

valor até o qual ela pode chegar e;

• p é o valor do incremento dado a V.

Page 43: Introdução a Linguagem de Programação (1)

Resolução de Problemas por

Computador

Comparação entre as estruturas de Repetição

Toda estrutura ENQUANTO pode ser convertida para REPITA e vice-e-

versa;

Toda estrutura PARA pode ser convertida em ENQUANTO, mas nem

toda estrutura ENQUANTO pode ser convertida em PARA.

Estrutura Condição Qtde de execuções Cond. de existência

Enquanto início ? condição verdadeira

Repita fim mínimo 1 condição falsa

Para implícita início (vf - vi) div p vi vf

Algoritmos

Page 44: Introdução a Linguagem de Programação (1)

ALGUNS PROBLEMAS

Page 45: Introdução a Linguagem de Programação (1)

PROBLEMA DE ACHAR O MENOR

Encontrar o menor dentre um conjunto de números.

Page 46: Introdução a Linguagem de Programação (1)

PROBLEMA DE ACHAR O MENOR

ALGORITMO EncontraMenor;

VAR n, qtde-num, num, menor: INTEIRO;

INICIO

LER (n);

LER (num);

menor num;

qtde-num 1;

ENQUANTO (qtde-num < n)

LER (num);

SE num < menor

menor num;

FIM-SE;

qtde-num qtde-num +1;

FIM-ENQUANTO;

ESCREVER (menor);

FIM.

Page 47: Introdução a Linguagem de Programação (1)

PROBLEMA DE ACHAR O MENOR E O MAIOR

Encontrar o menor e o maior dentre um conjunto de números.

Page 48: Introdução a Linguagem de Programação (1)

ALGORITMO EncontraMenorMaior;

VAR n, qtde-num, num, menor, maior: INTEIRO;

INICIO

LER (n);

LER (num);

menor num;

maior num;

qtde-num 1;

ENQUANTO (qtde-num < n)

LER (num);

SE num < menor

menor num;

SENAO SE num > maior

maior num;

FIM-SE;

qtde-num qtde-num +1;

FIM-ENQUANTO;

ESCREVER (menor, maior);

FIM.

PROBLEMA DE ACHAR O MENOR E O MAIOR

Page 49: Introdução a Linguagem de Programação (1)

PROBLEMA DO AZARÃO

Fazer um programa que escreva os 100 primeiros múltiplos de 13.

Page 50: Introdução a Linguagem de Programação (1)

ALGORITMO Azarao;

CONST n = 100;

VAR num, cont: INTEIRO;

INICIO

num 13;

cont 1;

ENQUANTO cont < 100

ESCREVA (num);

num num +13;

cont cont +1;

FIM-ENQUANTO;

FIM.

PROBLEMA DO AZARÃO

Page 51: Introdução a Linguagem de Programação (1)

ALGORITMO Azarao;

CONST n = 100;

VAR num, cont: INTEIRO;

INICIO

num 13;

cont 1;

REPITA

ESCREVA (num);

num num +13;

cont cont +1;

ATE cont > 100;

FIM.

PROBLEMA DO AZARÃO

Page 52: Introdução a Linguagem de Programação (1)

PROBLEMA DO VÍCIO

Calcule e mostre a despesa diária, semanal e mensal de uma pessoa com cigarros, dados o número de cigarros que ela fuma por dia e o

preço do maço de cigarros que ela fuma.

Page 53: Introdução a Linguagem de Programação (1)

ALGORITMO Vicio;

VAR num-c-dia : INTEIRO;

preco-m, preco-c,

despesa-d, despesa-s, despesa-m: REAL;

INICIO

ESCREVA (‘Quantos cigarros vc fuma por dia?’);

LER (num-c-dia);

ESCREVA (‘Quanto custa o maco de cigarros que vc fuma?’);

LER (preco-m);

preco-c preco-m/20;

despesa-d preco-c * num-c-dia;

despesa-s despesa-d * 7;

despesa-m despesa-d * 30;

ESCREVA (‘Sua despesa com cigarros diária, semanal e mensal eh: ‘

despesa-d, despesa-s, despesa-m);

FIM.

PROBLEMA DO VÍCIO

Page 54: Introdução a Linguagem de Programação (1)

PROBLEMA DO FATORIAL DE UM NÚMERO

Calcule o fatorial de 5.

E para um n qualquer ?

Page 55: Introdução a Linguagem de Programação (1)

ENUNCIADO DO PROBLEMA: Calcular o fatorial de 5.

PARÂMETROS: n

RESTRIÇÕES: n Z+

SOLUÇÃO: result = n.(n-1).(n-2). ... .2.1

INSTÂNCIA: n=5

SOLUÇÃO_DA_INSTÂNCIA: result=5.4.3.2.1=120

PROBLEMA DO FATORIAL DE UM NÚMERO

Page 56: Introdução a Linguagem de Programação (1)

ALGORITMO Fatorial;

VAR fat, i : INTEIROS;

INICIO

fat = 1;

PARA i := 2 a n FAÇA

fat := fat * i;

END;

MOSTRE fat;

FIM.

PROBLEMA DO FATORIAL DE UM NÚMERO

Page 57: Introdução a Linguagem de Programação (1)

PROBLEMA SOBRE A SÉRIE DE FIBONACCI

Calcule o n-ésimo termos da série de Fibonacci.

Page 58: Introdução a Linguagem de Programação (1)

ENUNCIADO DO PROBLEMA: Mostrar o n-ésimo termo da Série de Fibonacci.

PARÂMETROS: n

RESTRIÇÕES: n Z+

SOLUÇÃO: result = n-ésimo termo

INSTÂNCIA: n=5

SOLUÇÃO_DA_INSTÂNCIA: result=3

PROBLEMA SOBRE A SÉRIE DE FIBONACCI

Page 59: Introdução a Linguagem de Programação (1)

ALGORITMO Fibonacci;

VAR i, fib,fib1,fib2,n : INTEIRO;

INICIO

SE n = 1 RETURN 0; SENAO SE n = 2 RETURN 1; fib1 := 1; fib2 := 0; PARA i := 3 a N FAÇA fib := fib1 + fib2; fib2 := fib1; fib1 := fib; FIM-PARA; MOSTRE fib;

FIM.

PROBLEMA SOBRE A SÉRIE DE FIBONACCI

Page 60: Introdução a Linguagem de Programação (1)

ALGORITMO Fibonacci-v2;

VAR i, fib,fib1,fib2,n : INTEIRO;

INICIO

SE n <= 2 RETURN n; fib1 := 1; fib2 := 0; PARA i := 3 a N FAÇA fib := fib1 + fib2; fib2 := fib1; fib1 := fib; FIM-PARA; MOSTRE fib;

FIM.

PROBLEMA SOBRE A SÉRIE DE FIBONACCI

Page 61: Introdução a Linguagem de Programação (1)

PROBLEMA DOS APROVADOS

Dado um conjunto de n notas de alunos, contar o número de alunos que foram aprovados.

Considera-se aprovado o aluno que obteve nota igual ou maior que 5.0.

Page 62: Introdução a Linguagem de Programação (1)

Solução

Page 63: Introdução a Linguagem de Programação (1)

PROBLEMA DA AVALIAÇÃO

Fornecer a média aritmética simples das n notas de um aluno, indicando também sua

situação final (média>=9 excelente, média>=7 bom, média>=5 regular, média<5 insuficiente).

Page 64: Introdução a Linguagem de Programação (1)

FIM

Ia Parte de Lógica Computacional