Fundamentos de Programação Introdução
Transcript of Fundamentos de Programação Introdução
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
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
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
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
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
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.
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.
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.
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