Fundamentos de Programação Introdução

68
Fundamentos de Programação - Introdução Alexandre Augusto Giron

Transcript of Fundamentos de Programação Introdução

Fundamentos de Programação - Introdução

Alexandre Augusto Giron

2

Objetivos - CV41C

● Apresentar os conceitos fundamentais de lógica de programação;

● Desenvolver algoritmos estruturados e suas implementações em linguagem de programação;

● Fornecer conceitos de linguagem de programação de alto nível.

3

Bibliografia da disciplina

● FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Makron, 2005. xii, 218 p.

● ARAÚJO, Everton Coimbra de. Algoritmos: fundamento e prática. 3. ed. Florianópolis, SC: Visual Books, 2007. 414 p.

● SOUZA, Marco Antonio de; GOMES, Marcelo Marques; SOARES, Marcio Vieira; CONCILIO, Ricardo. Algoritmos e lógica de programação. São Paulo: Thomson, Cengage Learning, 2006.

4

Roteiro

● Conceitos e Lógica de Programação● Algoritmos

– Algoritmo x Programa

– Representação de Algoritmos

● Tipos primitivos● Identificadores, Instruções Primitivas e

Programação Estruturada

5

Introdução

● Surgimento da computação– Necessidade de ferramentas para facilitar cálculos

● Computador– Do latim: computatore. (“Aquele que efetua cálculos”)

● Processamento por meio de programas (softwares)● Dado x Informação

– Dados são valores, sequência de símbolos. Ex: 18 anos (Idade)

– Informação: resultado do processamento dos dados; interpretação dos dados. Ex: Se você tem mais de 18 anos, já atingiu a maioridade

6

Introdução

● Ênfases da computação– Prática: Tecnologias computacionais

– Teórica: Fundamentos Teóricos

7

Introdução

● Informática no cotidiano

8

Introdução

● Software – Todo e qualquer programa processado por um

computador

– Sentença escrita em uma linguagem computável, composta por uma sequência de instruções para executar uma tarefa

● Hardware– Todo e qualquer componente eletrônico ou material

físico necessário para que um computador funcione

9

Introdução

● Modelo de Hardware– Arquitetura de Von Neumann

10

Introdução

● Memória:– Volátil

● Informação é perdida ao retirar a fonte de energia: memória principal (RAM), registradores

– Não volátil: ● Armazenamento permanente: Discos rígidos, Hds

externos, Fitas magnéticas, pen drives

● Como os dados são armazenados no computador?– Bit (Binary Digit): 1 ou 0

11

Introdução – Unidade de Processamento Central (CPU)

● Unidade Lógica Aritmética (ULA)– Parte responsável pelas operações aritméticas e

lógicas

● Unidade de Controle (UC)– Especifica qual operação a ULA deve executar e

quais os dados a serem processados

– Responsável também pelo fluxo de dados interno

● Registradores– Locais onde os dados são armazenados antes ou

depois de uma operação

1212

Expressões Aritméticas

● Operadores aritméticos

● Operações matemáticas não convencionais

● Símbolos auxiliares: Parênteses

Operador Função Exemplos

+ Adição 2+3, X+Y

- Subtração 4-2, N-M

* Multiplicação 3*4, A*B

/ Divisão 10/2,X1/X2

Operador Função Significado Exemplo

pot(x,y) Potenciação x elevado a y pot(2,3)

rad(x) Radiciação Raiz quadrada de x rad(9)

div Quociente da divisão 9 div 4 resulta em 2

mod - Resto da divisão 9 mod 4 resulta em 1

1313

Expressões Lógicas

● Definição– Expressão cujos operadores são lógicos ou

relacionais e cujos operandos são relações, constantes ou constantes lógicas

– Uma expressão lógica tem um resultado: Verdadeiro ou Falso

● Operadores Relacionais– Comparação entre valores

● Operadores Lógicos– Formação de proposições

1414

Expressões Lógicas

● Operadores Relacionais

– Comparação: =,>,<, >=, <=, =/=

● Exemplos Resultado

10 < 20

20 >= 10

2 + 2 = 4

15 mod 4 < 19 mod 6

1 > 3

1515

Expressões Lógicas

● Operadores Relacionais

– Comparação: =,>,<, >=, <=, =/=

● Exemplos Resultado

10 < 20 V

20 >= 10 V

2 + 2 = 4 V

15 mod 4 < 19 mod 6 F

1 > 3 F

1616

Expressões Lógicas

● Operadores Lógicos– Lógica Booleana: criada por George Boole

– Operandos: 1 ou 0

– E, OU, XOU, NAO● (AND, OR, XOR, NOT)

● Resultado determinado por Tabela Verdade

1717

Tabela Verdade: E e OU

● Operador E: conjunção● Operador OU: disjunção

Exemplo: Se chover e relampejar Exemplo: Se chover ou relampejar eu fico em casa eu fico de casa

A B A e B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ou B

0 0 0

0 1 1

1 0 1

1 1 1

1818

Tabela Verdade: XOU e NAO

● Operador XOU: “ou exclusivo”● Operador NAO: negação

A B A xou B

0 0 0

0 1 1

1 0 1

1 1 0

A nao A

0 1

1 0

1919

Exemplo

● Considere A=1, B=1.● O resultado da operação

não A e B

É verdadeiro (1) ou falso (0)?

2020

Exemplo - Solução

● Considere A=1, B=1.● O resultado da operação

não A e B

É verdadeiro (1) ou falso (0)?

não A e B

não (1) e (1)

(0) e (1)

0

2121

Hierarquia de operadores

● Prioridade:

1) Sempre parênteses mais internos

2) Operadores Aritméticos1) Multiplicação/Divisão

2) Soma/Subtração

3) Operadores Relacionais

4) Operadores Lógicos1) NAO

2) E

3) OU

4) XOU

2222

Exercícios em sala

1) Determine o resultado das expressões a seguir. Dados: A, B e C contém 2,7,3 e D é verdadeiro e H é falso.

a) 23+5+2 = 5*6

b) 17 div 2 = 6 + (11 mod 3)

c) B = A * C e (D ou H)

d) B > A ou B = (A+A+C)

e) nao D ou (H xou nao D) e (A * C < B)

f) D e (H ou (1 e (não H) ) )

2323

Por que Lógica Booleana?

● Operações sobre dados representados no sistema binário – 1 ou 0

● Aplicações práticas na Computação– Projeto e simplificação de circuitos lógicos

– Cálculo de endereços de rede (IP)

– Processamento de imagens binárias

– Lógica Fuzzy

– Fluxo de execução de programas

– ...

2424

Propriedades da lógica booleana

(1) Associativa

(2) Comutativa

(3) Absortiva

(4) Distributiva

(5) Elemento Neutro

(6) Elemento Complementar

(7) Identidade

(8) Idempotência

2525

Propriedades da lógica booleana

● Associativa(A ou B) ou C = A ou (B ou C)

(A e B) e C = A e (B e C)

● Comutativa

A ou B = B ou A

A e B = B e A

2626

Propriedades da lógica booleana

● AbsortivaA e (A ou B) = A

A ou (A e B) = A

● Distributiva

A ou (B e C) = (A ou B) e (A ou C)

A e (B ou C) = (A e B) ou (A e C)

2727

Propriedades da lógica booleana

● Elemento NeutroA ou 0 = A

A e 1 = A

● Elemento Complementar

A ou não A = 1

A e não A = 0

2828

Propriedades da lógica booleana

● IdentidadeA ou 1 = 1

A e 0 = 0

● Idempotência

A ou A = A

A e A = A

2929

Propriedades da lógica booleana

● As propriedades podem ser comprovadas por Tabelas Verdade

● Qualquer expressão na lógica de boole possui uma Tabela Verdade– Todos os resultados possíveis de uma determinada

expressão lógica

3030

Construindo tabelas verdade - Exemplo

● Dada a expressão:

A ou ( não A )

Monte a Tabela Verdade correspondente.

3131

Construindo tabelas verdade – Exemplo - Solução

● Dada a expressão:

A ou ( não A )

Monte a Tabela Verdade correspondente.

Variáveis Expressão Final

A A ou (não A)

0 1

1 1

Resultado!

3232

Construindo tabelas verdade – Exemplo 2

● Exemplo 2: Dada a expressão:

A e ( B xou A )

Monte a Tabela Verdade correspondente.

3333

Construindo tabelas verdade – Exemplo 2 - Solução

● Exemplo 2: Dada a expressão:

A e ( B xou A )

Monte a Tabela Verdade correspondente. Variáveis Expressão Final

A B A e (B xou A)

0 0 0

0 1 0

1 0 1

1 1 0

3434

Construindo tabelas verdade

● A cada nova variável, uma coluna é adicionada– Quantidade de linhas depende da quantidade de

variáveis

– Uma variável: 21 = 2 linhas

– Duas variáveis: 22 = 4

– Três variáveis: 23 = 8

– Quatro variáveis: 24 = 16

– ….

● Opcionalmente colunas com resultados de partes da expressão podem ser adicionadas– Facilita a construção da tabela

3535

Exercícios em sala

1) Monte a tabela verdade para as expressões lógicas a seguir:

a) não A

b) A ou B

c) A e não B

d) não A ou não B e C

e) (A e B) e (B ou C)

2) Comprove, usando tabelas verdade, que

não ( A ou B) = não A e não B

3636

Lógica de Programação

37

Lógica de Programação

● Lógica

Todo cavalo é um mamífero.

Todo mamífero é um animal.

Logo, todo cavalo é um animal.

– Raciocínio expressado na linguagem escrita ou falada

● Lógica de programação– Uso correto do raciocínio lógico na programação de

computadores

– Representação por meio de Algoritmos

38

O que é um Algoritmo?

Sequência finita de instruções computáveis, sem ambiguidade, que transformam um conjunto de valores iniciais satisfazendo condições de um problema.

● Ou

Sequência de passos para realizar um objetivo bem definido.

39

Por que Algoritmos?

● Por que é importante o uso de algoritmos?– Abstração de alguns detalhes computacionais

– Tradução para qualquer outra linguagem

– Organizar um raciocínio lógico para realizar um objetivo

● Cuidados no uso de algoritmos– Falhas em cálculos podem gerar graves problemas

40

Algoritmo x Programa

● Um algoritmo não é um programa!– Algoritmo é escrito para um humano entender

● Programa: instanciação de um algoritmo em uma linguagem de programação– Linguagem de Programação: Computador entende

41

Algoritmos

● Representação de algoritmos– Descrição narrativa: descrever a solução passo a

passo em linguagem natural

– Fluxograma: uso de símbolos para descrever a solução

– Pseudocódigo: técnica textual baseada em PDL (Program Design Language). Exemplo: Portugol

● Não esquecer que– Um algoritmo deve ser interpretável por um humano

e deve ser fácil de codificar

42

Representação de algoritmos

● Fluxograma– Troca de lâmpada

43

Representação de algoritmos

● Fluxograma– Troca de lâmpada

44

Principais Símbolos de um fluxograma

Símbolo Significado DescriçãoTerminal Início e fim de um fluxo

Entrada Manual Operação de entrada de dados

Processamento Execução de uma operação

Exibição Operação de saída visual de dados

Decisão Uso de desvios condicionais

Obs: Notação obtida do livro Manzano e Oliveira (2012)

45

Representação de algoritmos

● Fluxograma – Exemplo 2– Crie um fluxograma para calcular média entre duas

notas (N1 e N2) informadas por um aluno

– O algoritmo responderá para o aluno:● Média >= 70 – Aprovado● Média < 70 – Reprovado

46

Solução

47

Exercícios em sala

1) Crie um algoritmo usando descrição narrativa e fluxograma para os seguintes problemas:

a) Algoritmo para calcular a média de 4 números informados e exibir em tela;

b) Algoritmo para calcular o INSS para o salário informado, considerando que:

● Salário menor que R$ 1317,07 contribuirá 8%.● Salário maior ou igual a R$ 1317,07 e menor que R$

2195,12 contribuirá 9%. ● Salário maior ou igual a R$ 2195,13 contribuirá 11%.

2) Analise a afirmativa: “Algoritmos e Programas são sinônimos”. V ou F? Justifique.

4848

Tipos primitivos, identificadores e Programação Estruturada

4949

Tipos primitivos

● Importante– Informação é a matéria-prima que faz necessária a

existência dos computadores

● 5 tipos básicos de dados – Inteiro: Ele tem 8 irmãos

– Real: Ela tem 1,73 metro de altura

– Caracter: “a”

– Cadeia de Caracteres: A placa dizia: “Pare”

– Lógico: A lâmpada pode estar acesa ou apagada

5050

Constantes

● Valor fixo que não se modifica ao longo do tempo, durante a execução de um programa

● Numéricas: – Inteiro ou real

● Literais: – Qualquer sequência de caracteres

● Lógicas: – Valor lógico biestável

● 1 → Verdadeiro● 0 → Falso

5151

Variável

● Informações que mudam ao longo do tempo● Associação entre o nome dado x posição de

memória● Variáveis representadas por identificadores

– Devem começar por um caracter alfabético (letra)

– Podem ser seguidos por letras ou números

● Exemplos

Alpha, X, i, notas, aux

5252

Instruções Primitivas

● Comando de Atribuição– Fornecer um valor à uma variável

– Tipo do dado deve ser compatível com a variável

● Exemplo: considere duas variáveis, Var1 e A, do tipo inteiro:

Var1 ← 20;

A ← Var1;

5353

Instruções Primitivas

● Comandos de Entrada e Saída de dados– Entrada: recebe dados dos usuários;

– Saída: exibe os dados aos usuários.

● Exemplo: Entrada de dados

leia Var1;

leia A,B,C;

● Exemplo: Saída

escreva X,Y,Z;

escreva “O resultado é:”, Var;

5454

Programação Estruturada

● Organização da lógica de raciocínio para resolver um problema de forma sequencial– Forma mais simples: pseudocódigo

5555

Definição - Pseudocódigo

● Forma simplificada de escrita de um algoritmo● Um pseudocódigo é uma linguagem de projeto

de programação– Não é uma linguagem de programação (Manzano e

Oliveira, 2012)

● No Brasil, Guimarães e Lages (1994) propuseram o Português Estruturado– Mais conhecido como Portugol

5656

Portugol

● Bastante utilizado para ensino de lógica de programação e algoritmos

● Por que português estruturado?

Inicio

inteiro A

leia A

X <- A + 10

escreva A

Fim

5757

Portugol

● Não há rigor sintático como outras linguagens● Portugol inspirou linguagens de programação e

interpretadores– G-Portugol

– Portugol Viana

– Portugol IDE

– Portugol Studio

● Exemplos de programas? Veremos mais adiante!

5858

Sintaxe Geral do Português Estruturado - Portugol

inicio

<tipo> <nome_variavel1>, <nome_var2><tipo2> <nome_var3>, <nome_var4>, ...

<comando1><comando2>...<comandoN>

fim

5959

Exemplo 1 – Portugol IDE

● Faça um algoritmo para calcular a soma entre dois números inteiros e mostrar o resultado.

6060

Exemplo 1 – Portugol IDE – Solução

6161

Exemplo 2 – Portugol IDE

● Crie um programa que permita fazer a conversão entre Reais e Dólares. Leia um valor em Dólares pelo teclado, o valor da taxa de câmbio e mostre o correspondente em Reais.

6262

Exemplo 2 – Portugol IDE – Solução

6363

Sintaxe no Portugol IDE

● Tipos:– real, inteiro, texto, logico (verdadeiro, falso), caracter

● Entrada/Saída– escrever, ler

● Operadores:– Atribuição: <-

– Lógicos: E, OU, XOU, NAO

– Relacionais: =, >, >=, <=, <, =/=

● Dúvidas?– http://www.dei.estt.ipt.pt/portugol/node/6

6464

Exercícios em sala

1) Construa algoritmos em portugol para resolver os seguintes problemas:

a) Fazer um algoritmo para calcular a área de um retângulo (Área = base * altura).

b) Dadas 4 notas fazer um algoritmo para calcular a média aritmética. Após o cálculo, o algoritmo deverá mostrar o resultado.

c) Três nadadores realizaram uma competição entre si, cada um obteve um tempo (em minutos) cronometrado. Faça um algoritmo que leia os tempos dos nadadores e mostre o resultado de cada um deles.

65

Resumo

● Lógica de programação– Raciocínio lógico na programação de computadores

● Expressões lógicas sempre têm um resultado– Verdadeiro ou Falso

● Algoritmos x Programa● Variáveis e constantes possuem um tipo

primitivo (inteiro, real..)● Programação Estruturada

– Início → Declaração de Variáveis e Constantes → Comandos → Fim.

66

Resumo

● Para construir um algoritmo– Use Descrição narrativa, fluxograma ou

pseudocódigo

– Conhecer o problema para resolvê-lo

● Classificando os dados no seu algoritmo– De acordo com o tipo: inteiro, real, caracter, ou lógico

– Se o dado pode mudar: Variável

– Se o dado é sempre o mesmo: Constante

● Instruções Primitivas para – Atribuição, entrada e saída de dados.

67

Para casa

● Leitura dos Capítulos 1 e 2 (Livro Lógica de Programação – Forbellone)

● Lista de Exercícios 1 – Introdução

68

Referências

● FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação. 3 Edição. São Paulo, Prentice Hall, 2005.

● (Notação para fluxogramas): – MANZANO, Jose A. N. G.; OLIVEIRA, Jayr F. de.

Algoritmos - Lógica para Desenvolvimento de Programação de Computadores. ERICA, 26ª ed., 2012.