118
Introdução à Programação Prof. Mário Sergio da Silva [email protected] Lattes: http://lattes.cnpq.br/1161794053211014 Atualizado em Abr/2016 Este material é uma adaptação didática que utiliza ilustrações e textos retirados de uma seleção criteriosa de publicações disponíveis livremente na internet, juntamente com conteúdo inédito. (bibliografia e links disponíveis no final dos slides)

Introdução à Programação

Embed Size (px)

Citation preview

Page 1: Introdução à Programação

Introdução à Programação

Prof. Mário Sergio da Silva [email protected] Lattes: http://lattes.cnpq.br/1161794053211014

Atualizado em Abr/2016

Este material é uma adaptação didática que utiliza ilustrações e textos retirados de uma seleção criteriosa de publicações disponíveis livremente na internet, juntamente com conteúdo inédito. (bibliografia e links disponíveis no final dos slides)

Page 2: Introdução à Programação

Conteúdo Um pouco de história

Introdução à Lógica e Linguagem Binária

Linguagens de programação e Algoritmos

Algoritmos: Fases, Métodos e Forma de Representação

Instruções primitivas de Entrada e Saída

Memória e Variáveis

Lógica Condicional, Proposições e Tabela Verdade

Operadores de Atribuição, Aritméticos, Relacionais e Lógicos

Estruturas Condicionais (SE simples, SE composto, SE Encadeado)

Estruturas de Repetição(PARA, Enquanto, Repita)

Page 3: Introdução à Programação

3

Page 4: Introdução à Programação

4 Obs: Assistir vídeo “Todo mundo deveria aprender a programar”

Page 5: Introdução à Programação

5

Uma nova Linguagem

0 (zero) 1 (um)

Page 6: Introdução à Programação

6

Um pouco de história: programando...

Computador do tamanho de uma sala, programado por engenheiros elétricos

Unidade mínima de armazenamento: dois estados possíveis:

acessa ou apagada (1 bit)

Era um “liga e desliga” de Válvulas !!!

Page 7: Introdução à Programação

7

Um pouco de história: salvando dados...

Mídia: cartão perfurado (1 furo = 1 bit)

Usado até o início da década de 1980

Máquina gravadora de cartões

Programa em fortran

Page 8: Introdução à Programação

8

Um pouco de história: lendo de dados...

Tabulador de Hollerith, utilizado no censo americano de 1890

Os furos do cartão, permitiam que os pinos da máquina atravessassem fazendo passar corrente

elétrica, indicando o estado ACESSO.

Veja: Evolução do armazenamento digital: http://escreveassim.com.br/2013/10/11/a-historia-e-evolucao-do-armazenamento-digital/

Page 9: Introdução à Programação

9

A Linguagem Binária

Linguagem Binária

Page 10: Introdução à Programação

10

Falar zero‐um‐nês deve ser fácil. Não é?

Mas, não é !!!

Como deixar o zero-um-nês mais fácil

de usar ?

A Linguagem Binária

Page 11: Introdução à Programação

11

Linguagens de Programação

Uma linguagem de programação é um método

padronizado para comunicar instruções para um computador (Dershem, Herbert L.; Jipping, Michael J. – 1995)

Ou simplesmente:

É um conjunto de algoritmos que podem ser entendidos por um computador. (Mário Sergio 2016)

??? (veremos a partir da pag 17)

Page 12: Introdução à Programação

12

Linguagens de Programação Há várias disponíveis no mercado, tanto comerciais como open-source.

Page 13: Introdução à Programação

13

Linguagens de Programação Exemplo de programa na Linguagem Assembly

(Linguagem de montagem)

Qual instrução é mais fácil de ler ?

mov $1, AL (assembly) 10110000 01100001 (binário)

Page 14: Introdução à Programação

14

Linguagens de Programação Exemplo de programa na Linguagem Assembly

(Linguagem de montagem)

Page 15: Introdução à Programação

15

Linguagens de Programação Exemplo de programa “Alô Mundo”

(Linguagens de alto Nível)

Page 16: Introdução à Programação

Linguagens de Programação Processos de Tradução para linguagem de máquina binária)

Obs: Assistir vídeo “a história do computador” 16

Page 17: Introdução à Programação

17

Algoritmo - Introdução

• É um conjunto de passos que define como uma tarefa deve ser executada.

• É uma sequência (lógica) finita e bem estruturada de instruções para a resolução de um problema.

* Um algoritmo não é necessariamente computacional

Page 18: Introdução à Programação

18

Algoritmo - Introdução

• É um conjunto de passos que define como uma tarefa deve ser executada.

• É uma sequência (lógica) finita e bem estruturada de instruções para a resolução de um problema.

Exemplo de um problema: COMO FRITAR UM OVO? Qual é a solução para isso ? Escrever um algoritmo.

* Um algoritmo não é necessariamente computacional

Page 19: Introdução à Programação

19

Algoritmo - Introdução Problema: COMO FRITAR UM OVO?

Uma Solução:

* Há inúmeras soluções para um mesmo problema

Page 20: Introdução à Programação

20

Introdução à Lógica Computacional

Page 21: Introdução à Programação

21

Introdução à Lógica Computacional

Popularmente costumamos utilizar o termo “lógica” dessas maneiras.

A pesar de não esta errado, tais contextos são inadequados quando tratamos do termo “lógica” como ciência.

Page 22: Introdução à Programação

22

Introdução à Lógica Computacional

Não existe uma definição satisfatória para lógica, tal questão pertence a filosofia. No contexto da computação, esta definição parece ser a mais adequada:

“A Lógica é a área do conhecimento

que estuda a raciocínio ordenado, bem estruturado e não

contraditório”

Page 23: Introdução à Programação

23

Introdução à Lógica Computacional Por exemplo, a lógica matemática formal auxilia na formação da base racional do senso comum, pois ela também altera profundamente o raciocínio socialmente aceito.

Page 24: Introdução à Programação

24

Algoritmos Fases fundamentais para a construção de um algoritmo:

Page 25: Introdução à Programação

25

Algoritmos Fases: Analogia com o ser humano

Page 26: Introdução à Programação

26

Algoritmos: Representação Formas de Representação de Algoritmos o Descrição Narrativa

o Diagrama ou Fluxograma Convencional

o Pseudocódigo

o Linguagem de programação (sintaxe específica de cada linguagem)

Page 27: Introdução à Programação

27

Algoritmos: Descrição Narrativa • Não precisa aprender nenhum conceito novo, pois utiliza-se apenas a

linguagem natural (assim, como fizemos no exemplo do algoritmo para fritar um ovo)

• Mas, é preciso se expressar de forma clara e precisa, evitando palavras com duplo sentido.

Problema: Somar dois números inteiros quaisquer

1. Obter o primeiro número

2. Obter o segundo número

3. Somar os dois números

4. Mostrar o resultado da soma

Descrição Narrativa

Page 28: Introdução à Programação

28

Algoritmos: Fluxograma É a representação gráfica de um algoritmo, que é descrito por uma sequência de símbolos, com notação bem definida.

Problema: Somar dois números

inteiros quaisquer

Também, conhecida como DECISÃO.

Page 29: Introdução à Programação

29

Algoritmos: Fluxograma Outros Exemplos de Fluxogramas

* Quais problemas este algoritmos resolvem ?

Page 30: Introdução à Programação

30

Algoritmos: Desafio

Problema: COMO FAZER UM BOLO ? Agora é a sua vez: Escreva um algoritmo com a solução para este complexo problema: Represente este algoritmo em Descrição Narrativa e Fluxograma (utilize papel e caneta)

Page 31: Introdução à Programação

31

Algoritmos: O problema da compreensão do problema

A engenhara de software trata deste serio problema presente no processo de construção de um software.

Page 32: Introdução à Programação

32

Algoritmos: Métodos para construção

o Construir o Algoritmo.

o Testar o Algoritmo (podendo ser com o Teste de Mesa)

1

2

3

4

5

6

Page 33: Introdução à Programação

33

Algoritmos: Regras para construção

Page 34: Introdução à Programação

34

Algoritmos: Nível de Detalhamento

o Nível de Abstração Requerido

o Divisão de responsabilidades

O nível de detalhamento do algoritmo vai depender também de:

Page 35: Introdução à Programação

35

Algoritmos: Pseudocódigo

o A maioria esmagadora das linguagens de programação de computadores é em língua inglesa. Para facilitar o aprendizado de lógica de programação foram criadas algumas pseudolinguagens.

o A sintaxe do algoritmo deve ser bem mais estruturada e rígida em relação as representações anteriores, precisando respeitar as palavras chaves do pseudocódigo.

o O Portugol é uma pseudolinguagem de programação em português estruturado, é uma simbiose de Português, Algol e Pascal.

Algumas Palavras Chave do Portugol: Inicio, Fim, Algoritmo, Enquanto, Se, então, Para, Ate, Ate que, Leia, Escreva, Faça, Repita, FimSe, FimEnquanto, FimSelecione, entre outras que veremos adiante.

Page 36: Introdução à Programação

36

Algoritmos: Pseudocódigo

O Pseudocódigo possui a seguinte estrutura básica:

SINTAXE

Page 37: Introdução à Programação

37

Estruturas de Programação

Portanto, tudo o que precisamos é instruí-lo em uma sequencia lógica, a:

“O computador uma máquina totalmente idiota, mas muito rápida e obediente”

o Armazenar valores na memória o Realizar cálculos o Tomar decisões o Realizar repetições

o Comunicar-se com o meio externo (Interface com o usuário)

• Instruções sequenciais • Cálculos matemáticos

Page 38: Introdução à Programação

38

o Armazenar valores na memória o Realizar cálculos o Tomar decisões o Realizar repetições

Estruturas de Programação Pseudocódigo Portugol

Page 39: Introdução à Programação

39

Algoritmo: Pseudocódigo A Instrução primitiva de saída: ESCREVA

Page 40: Introdução à Programação

40

Algoritmo: Pseudocódigo A Instrução primitiva de entrada: LEIA

Page 41: Introdução à Programação

41

Algoritmo: Exercício

Problema: Somar dois números inteiros quaisquer Escreva o algoritmo da pag 27 em pseudocódigo Não se preocupe: A partir das próximas aulas, você irá melhorar seu pseudocódigo com o uso de Variáveis

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 42: Introdução à Programação

42

Algoritmo: Problema

Problema: Cálculo de média do aluno Suponha que o diretor de uma escola lhe contrata para desenvolver um programa de computador e faz a seguinte requisição: “Eu quero um programa que no final de cada ano letivo a secretária da escola digite as notas de cada uma das quatro provas realizadas durante o ano pelo aluno, e ao final o programa mostre:”

“A média do Aluno FULANO foi X” Não se preocupe: A partir das próximas aulas, você irá melhorar seu pseudocódigo com o uso de Variáveis

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 43: Introdução à Programação

43

Algoritmo: Exemplo em Pseudocódigo Problema: Somar dois números inteiros quaisquer, nas 3 representações

Page 44: Introdução à Programação

44

Algoritmo: Exemplo em uma Linguagem de programação

Problema: Somar dois números inteiros quaisquer, na linguagem pascal

“programar é, basicamente, construir algoritmos para resolver problemas e codificá-los em alguma linguagem de

programação."

Page 45: Introdução à Programação

45

Armazenamento de Dados Temporários

Para processar dados, as linguagens de programação precisam acessar a Memória do computador, para armazenar esses dados temporariamente. Seja um dado proveniente do resultado de uma operação matemática, ou mesmo um dados de entrada do usuário. Isto é feito por meio de VARIÁVEIS. Ex: leia nome soma := 10 + 20

Endereço Físico

Identificador da Variável

Valor

0x2221 nome “José”

0x2358 soma 30

Page 46: Introdução à Programação

46

Variáveis

Uma variável, é um espaço da memória do computador que "reservamos" para guardar informações (dados). Como o próprio nome sugere, as variáveis, podem conter valores diferentes a cada instante de tempo, ou seja, seu conteúdo pode variar de acordo com as instruções do algoritmo. As variáveis são referenciadas através de um nome (identificador) criado por você durante o desenvolvimento do algoritmo. Exemplos de nomes de variáveis: produto, idade, nota1, peso, preco, nome_completo, etc.

O identificadores de variáveis somente podem conter letras,

números ou o caractere _ (underline), mas não podem começar com um número.

E também não se pode usar

palavras chaves. (ver pag 35)

Page 47: Introdução à Programação

47

Variáveis O conteúdo de uma variável pode ser alterado, consultado ou apagado quantas vezes forem necessárias durante o algoritmo. Mas, ao alterar o conteúdo da variável, a informação anterior é perdida, ou seja, sempre "vale" a última informação armazenada na variável. Uma variável armazena 'apenas' um conteúdo de cada vez. Além disso as variáveis precisam ter um tipo.

Page 48: Introdução à Programação

48

Variáveis: Tipos Primitivos

Var idade: inteiro media: real

Os tipos de variáveis e constantes podem ser classificadas em 3 grupos: Numéricas, caracteres, ou lógicas. Vejamos: Numéricas Específicas para armazenamento de números, que posteriormente poderão ser utilizados para cálculos. Os tipos numéricos são Inteiro ou Real. As variáveis do tipo inteiro são para armazenamento de números inteiros e as Reais são para o armazenamento de números que possuam casas decimais. Declaração de variáveis

Page 49: Introdução à Programação

49

Variáveis: Tipos Primitivos Caracteres (ou Literais): Específicas para armazenamento de conjunto de caracteres (textos puros) que não devem ser tratados como números. Lógicas Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso.

Var nome: caractere nivel_superior: logico

Declaração de variáveis

Page 50: Introdução à Programação

50

Variáveis: Atribuição A atribuição é uma notação utilizada para atribuir um valor a uma variável, ou seja, para armazenar um determinado conteúdo em uma variável.

o Os valores do tipo caractere devem ser sempre estar entre aspas duplas “ ” . Ex: produto := “Notebook” nome <- “Jesus”

o Uma observação importante a ser feita em relação a atribuições é que na parte

esquerda (a que vai "receber" algo) não pode haver nada além da variável, ou seja, é só variável é que "recebe" algum conteúdo.

o O comando leia também pode ser considerado um operador de atribuição do portugol, ex.: leia nome

dica: Em portugol, tanto <- como := podem ser usados como operador de atribuição

Page 51: Introdução à Programação

51

Operadores Aritméticos Os operadores aritméticos estão presentes em todas a linguagens de programação, eles permitem a escrita de expressões matemáticas para resolução de cálculos. Os principais são:

Page 52: Introdução à Programação

52

Operadores Aritméticos Nas linguagens de programação e as expressões matemáticas sempre obedecem às regras matemáticas comuns, ou seja: o As expressões dentro de parênteses são sempre resolvidas antes das

expressões fora dos parênteses.

o Quando existem vários níveis de parênteses, ou seja, um parêntese dentro de outro, a solução sempre inicia do parêntese mais interno até o mais externo (de dentro para fora).

o Quando duas ou mais expressões tiverem a mesma prioridade, a solução é sempre iniciada da expressão mais à esquerda até a mais à direita.

Desta forma, veja os seguintes exemplos e os respectivos resultados: soma := 10 + 20 (valor armazenado: 30) media := (10 + 20) / 3 (valor armazenado: 10) media := 10 + 20 / 3 (valor armazenado: 16,6666)

Page 53: Introdução à Programação

53

Operadores Aritméticos Outros Operadores aritméticos: DIV – Divisão inteira MOD – Resto da Divisão inteira

Page 54: Introdução à Programação

54

Operadores de Caracteres O Operador + Concatena (junta) Caracteres

Exemplo: Leia (nome) Leia (sobrenome) nome_completo <- nome + “ “ + sobrenome Escreva (“Oi “, nome_completo, “ Seja bem Vindo !“)

Page 55: Introdução à Programação

55

Algoritmo: Pseudocódigo Problema: Cálculo de média completo em PORTUGOL

SINTAXE

Page 56: Introdução à Programação

56

Algoritmo: Problema

Problema: Vendas Suponha que o gerente comercial de uma rede de varejo precisa de um programa de computador, e lhe faz o seguinte solicitação: “Eu quero um programa que calcule a o valor total da venda de um produto vendido, de maneira que a cada venda o vendedor Informa o nome do produto, a quantidade e o preço unitário, e ao final o programa mostre:” Pedido de Venda Produto: .......... Qtd: ........ Preço .......... Valor Total: ..........

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 57: Introdução à Programação

57

Testando Algoritmos:

Page 58: Introdução à Programação

58

Testando Algoritmos:

O teste de mesa simula a execução de um algoritmo sem utilizar o computador, empregando apenas “papel e caneta” (ou melhor sem utilizar um compilador ou interpretador).

Teste de Mesa

() parênteses - indicam o momento em que a variável é lida. {} chaves – indicam o momento em que a variável é recebe uma atribuição interna.

( )

( ) { }

Page 59: Introdução à Programação

59

Testando Algoritmos: Teste de Mesa

Page 60: Introdução à Programação

60

Testando Algoritmos : Exercício

Realize o Teste de Mesa para os seus algoritmos: - Somar dois números inteiros quaisquer - Vendas

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 61: Introdução à Programação

61

Testando Algoritmos: Exemplo: Calculadora

OBS: Neste teste de mesa, somente estão sendo exibidas as linhas em que há alteração no valor das variáveis.

Page 62: Introdução à Programação

62

Testando Algoritmos: Exemplo: Troca Valores Problema:

OBS: Neste teste de mesa, somente estão sendo exibidas as linhas em que há alteração no valor das variáveis.

Page 63: Introdução à Programação

63

Testando Algoritmos : Exercício

Qual é a solução do problema da troca dos valores das variáveis a e b Do problema anterior ? - Escreva o algoritmo - Realize o teste Mesa

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 64: Introdução à Programação

64

TOMANDO O CONTROLE DA SITUAÇÃO Até agora, apenas aprendemos a escrever algoritmos em uma estrutura sequencial, de maneira que todas as instruções eram executadas de forma linear (de cima para baixo), obrigatoriamente uma após a outra. Mas, Já percebemos que na maioria das vezes necessitamos tomar decisões durante o andamento do algoritmo, para que possamos “pular” algumas instruções dependendo de algumas condições. Além disso, também precisamos que algumas instruções sejam executada mais de uma vez (repetidas vezes). Para isso, iremos utilizar as Estruturas de Controle, são elas: Estruturas Condicionais (Decisão)

o Estruturas de Repetição

Page 65: Introdução à Programação

65

Recordando... “O computador uma máquina totalmente idiota, mas muito

rápida e obediente”

o Armazenar valores na memória o Realizar cálculos

o Tomar decisões o Realizar repetições

o Comunicar-se com o meio externo (Interface com o usuário)

Estruturas de Controle essencialmente baseadas nos conceitos da Lógica

computacional /proposicional

• Instruções sequenciais • Cálculos matemáticos

Page 66: Introdução à Programação

66

Estruturas de Controle em Pseudocódigo Portugol

o Armazenar valores na memória o Realizar cálculos

o Tomar decisões o Realizar repetições

Page 67: Introdução à Programação

67

Lógica Proposicional Aristóteles (384-322 a.C), o primeiro e grande filósofo a discutir a lógica como ciência, disse:

“Dizer do que não é que é, e dizer do que é, que não é, é falso. E, dizer do que não é, que não é, e dizer do que

é, que é, é verdadeiro”.

- Aristóteles

Page 68: Introdução à Programação

68

Lógica Proposicional: Proposições

Brasília é a capital do Brasil. A argentina não é um país pertencente ao continente Africano. Portugal é uma bela cidade. A Casa vermelha. Todos os homens são mortais. Como você se chama ? 10 é um número par positivo. 7+5 = 10. 3 - 2 ≠ 6

Proposição Lógica: É uma sentença declarativa com sentido completo, expressa de forma afirmativa ou negativa, a qual se pode atribuir um valor lógico “V” (verdadeiro) ou “F”(falso). Veremos:

X

Page 69: Introdução à Programação

As Proposições Lógicas podem ser classificadas em dois tipos:

Simples - São representadas de forma única. Ex: O cachorro é um mamífero (como vimos anteriormente) Composta - São formadas por um conjunto de proposições simples. Duas ou mais proposições simples ligadas por “conectivos lógicos”. Ex: Brasília é a capital do Brasil E Lima é a capital do Peru. Recife é um pais OU Olinda é uma cidade

Lógica Proposicional: Conectivos Lógicos

69

Conectivos Lógicos

Page 70: Introdução à Programação

Atribuir um valor lógico para uma proposição simples é fácil, mas e para uma proposição composta como faremos isso? Utilizaremos um recurso chamado de tabelas verdade.

Lógica Proposicional: Tabela Verdade

70

Page 71: Introdução à Programação

Lógica Proposicional: Tabela Verdade

Ex: temos as proposições A e B A: Brasília é a capital do Brasil E B: Lima é a capital do Peru. A: Gato é um Animal E B: Peixe é um mamífero. A: Recife é um pais OU B: Olinda é uma cidade A: Recife é uma cidade XOU B: Olinda é uma cidade NÃO A: O Japão fica na Ásia

71

Page 72: Introdução à Programação

72

Operadores Relacionais Operações relacionais servem para realizar comparações entres valores, variáveis, expressões e constantes:

Comparações válidas

Essas comparações são resultam em um valor lógico, e são utilizadas

principalmente nas estruturas condicionais e

de repetição.

Page 73: Introdução à Programação

73

Operadores Relacionais Exemplos:

Page 74: Introdução à Programação

74

APRENDENDO A TOMAR DECISÕES

Page 75: Introdução à Programação

75

Estruturas de Controle: Condicional (Decisão)

As principais estruturas de decisão são:

“SE” “Escolha Caso” (AVALIE/QUANDO)

Também chamadas desvio de fluxo.

Page 76: Introdução à Programação

76

Estruturas de Controle: Condicional (Decisão) SE simples

Resulta em um valor Lógico (V ou F)

Esse BLOCO de instruções somente será EXECUTADO, SE a

condição for Verdadeira, podendo conter mais de uma

linha.

SINTAXE

Page 77: Introdução à Programação

77

Estruturas de Controle: Condicional (Decisão) SE simples (Se/entao)

Problema1: Solicitar que o usuário digite um número, o programa deverá informar ao usuário se o número é maior que 10 (dez) Realize o Teste de Mesa deste algoritmo, Simulando a entrada de valores diferentes para o número.

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

EXERCÍCIO

Page 78: Introdução à Programação

78

Estruturas de Controle: Condicional (Decisão) SE Composto

Resulta em um valor Lógico (V ou F)

Esse BLOCO de instruções somente será EXECUTADO, SE a

condição for Verdadeira, podendo conter mais de uma

linha.

Esse BLOCO de instruções somente será EXECUTADO, SE a

condição for Falsa, podendo conter mais de uma linha.

SINTAXE

Page 79: Introdução à Programação

79

Estruturas de Controle: Condicional (Decisão) SE composto (Se/entao/Senao)

Agora você já está pronto para escrever o algoritmo em portugol deste fluxograma (visto anteriormente). Realize o Teste de Mesa deste algoritmo, Simulando a entrada de valores diferentes para a idade.

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

EXERCÍCIO

Page 80: Introdução à Programação

80

Estruturas de Controle: Condicional (Decisão) SE composto (Se/entao/Senao)

Problema: Informar se a idade do usuário é PAR ou IMPAR Realize o Teste de Mesa deste algoritmo, Simulando a entrada de valores diferentes para a idade.

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

EXERCÍCIO

Page 81: Introdução à Programação

81

Estruturas de Controle: Condicional (Decisão) SE composto (encadeado ou aninhado) A estrutura “Se entao Senao” quando combinada dá origem ao que chamamos de SE encadeado/aninhado.

É utilizada quando precisamos fazer várias comparações (testes) que dependem da comparação anterior.

Page 82: Introdução à Programação

82

Estruturas de Controle: Condicional (Decisão) SE composto (encadeado ou aninhado)

Con

dição 1

= F

Con

dição 2

= F

Con

dição 3

= F

Condição N = F

SINTAXE:

Se <condição 1> então // bloco de instruções 1 Senão Se <condição 2> entao // bloco de instruções 2 Senão Se <condição 3> entao // bloco de instruções Senão Se <condição N> entao // bloco de instruções N Senão // bloco de instruções N FimSe FimSe FimSe FimSe

Page 83: Introdução à Programação

83

Boas Práticas: // COMENTANDO

Se <condição 1> então // bloco de instruções 1 Senão Se <condição 2> entao // bloco de instruções 2 Senão Se <condição 3> entao // bloco de instruções Senão Se <condição N> entao // bloco de instruções N Senão /* bloco de instruções N FimSe FimSe FimSe FimSe

SINTAXE:

/* Comentários são

lembretes, observações ou explicações do

programador, essas linhas não são consideradas pelo

compilador

Podem ser utilizados em qualquer parte do código

*/

// COMENTARIO DE UMA LINHA

/* COMENTARIO DE MULTIPLAS LINHAS */

Page 84: Introdução à Programação

84

Boas Práticas: INDENTANDO

Se <condição 1> então // bloco de instruções 1 Senão Se <condição 2> entao // bloco de instruções 2 Senão Se <condição 3> entao // bloco de instruções Senão Se <condição N> entao // bloco de instruções N Senão // bloco de instruções N FimSe FimSe FimSe FimSe

SINTAXE:

Indentação são

espaçamentos ou recuos à esquerda das instruções.

Deve seguir uma hierarquia de dependência em relação às instruções

anteriores.

Garantem melhor clareza e legibilidade do código

Page 85: Introdução à Programação

Boas Práticas: Exemplos de Indentação

SEM INDENTAÇÃO CORRETAMENTE INDENTADO

Page 86: Introdução à Programação

Boas Práticas: Exemplos de Indentação

Page 87: Introdução à Programação

87

Estruturas de Controle: Condicional (Decisão) SE composto (encadeado ou aninhado)

1- Escreva o algoritmo representado (em parte) pelo fluxograma ao lado em (pseudocódigo) Portugol, fazendo uso da estrutura SE Aninhado. 2-Realize o Teste de Mesa deste algoritmo, simulando a entrada de valores diferentes para as notas que são utilizadas para cálculo da média.

EXERCÍCIO

Dica: Lembre-se da indentação do seu código

Page 88: Introdução à Programação

88

Estruturas de Controle: Condicional (Decisão) SE composto (encadeado ou aninhado)

Problema: Categoria de Atletas Suponha que um clube esportivo está realizando o cadastro de atletas e precisa classificá-los de acordo com sua categoria, de maneira que ao final o algoritmo mostre na tela: “Fulano, você se enquadra na categoria: ...” As faixa de idade para classificação são: Infantil (até 9 anos) Juvenil (de 9 a 15 anos) Junior (de 16 a 18 anos) Adulto (maior que 18 anos) Você dever representar esta algoritmo em: 1- Fluxograma 2- PseudoCódigo

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 89: Introdução à Programação

89

Operadores Lógicos Os operadores lógicos permitem que mais de uma condição seja testada em uma única expressão, ou seja, pode-se fazer mais de uma comparação (teste) ao mesmo tempo.

Servem para combinar resultados de expressões relacionais, resultando em um valor final lógico (verdadeiro ou falso)

Lembram-se dos conectivos lógicos e da tabela verdade ? Pags 69

Principais operadores lógicos

Page 90: Introdução à Programação

90

Operadores Precedência entre os operadores

1º Operadores Aritméticos 2º Operadores Relacionais 3º Operador NÃO 4º Operador E 5º Operador OU Portanto, sempre tenha atenção em expressões como: Supomos que a condição para trabalhar no serviço publico seja: F F V idade > 18 E passou_concurso = “S” OU parente_deputado = “S” F F V idade > 18 E (passou_concurso = “S” OU parente_deputado = “S”)

Page 91: Introdução à Programação

91

Operadores Lógicos

A) Se (salario > 180) E (salário < 800) Então Escreva (“Salário válido para financiamento”) Senão Escreva(“Salário fora da faixa permitida para financiamento”) FimSe B) Se (idade < 18) OU (idade > 95) Então Escreva(“Você não pode fazer carteira de motorista”) Senão Escrever (“Você pode possuir carteira de motorista”) FimSe C) Se (idade > = 18) E (idade < = 95) E (aprovado_exame = 'sim') Então Escreva(“Sua carteira de motorista estará pronta em uma semana”) Senão Escreva(“Você não possui idade permitida ou não passou nos testes”) FimSe

Exemplos com uso da estrutura SE

Page 92: Introdução à Programação

92

Estruturas de Controle: Condicional (Decisão) SE composto (com operadores Lógicos)

Problema: Classificação de Triângulos 1) Lados do Triângulo: Solicite ao usuário o comprimento de cada um dos 3 lados de um triângulo, avise se de fato se trata de um triângulo. E se for o caso, classifique-o conforme as definições a seguir: Condição para ser triangulo: A soma de dois dos lados deve ser maior que um terceiro lado (em outras palavras, o comprimento de cada lado deve ser menor que a soma dos comprimentos de dois outros). Classificação: Equilátero: Três lados Iguais Isósceles: Dois lados Iguais Escaleno: Três lados Diferentes Represente seu algoritmo em: 1- Fluxograma 2- PseudoCódigo Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 93: Introdução à Programação

93

Estruturas de Controle: Condicional (Decisão) SE composto (com operadores Lógicos)

Problema: Categoria de Atletas (continuação 1) Agora suponha que para cadastrar os atletas é necessário realizar login no programa, e caso o login não seja feito corretamente, o programa deve mostrar: “O par usuário/senha não confere ...” Dado que, seu programa somente possui dois usuários cadastrados: Usuario: admin senha 123 Usuário: tecnico senha abc Dica 1: utilize constantes para armazenar usuários e senhas. Dica 2: utilize operadores lógicos (E, OU para checar a senha) Represente seu algoritmo em: 1- PseudoCódigo

Lembrem-se: só se aprende Programação PRATICANDO MUITO !

Page 94: Introdução à Programação

94

Estruturas de Controle: Condicional (Decisão) ESCOLHA CASO (ou múltipla escolha) (também chamada de AVALIE/QUANDO)

É uma solução elegante quanto se tem várias estruturas de decisão (SE-ENTÃO-SENÃO) aninhadas. Ela compara por igualdade o resultado de uma única expressão, com vários valores escalares para cada “Caso”.

SINTAXE:

Page 95: Introdução à Programação

95

Estruturas de Controle: Condicional (Decisão) ESCOLHA CASO Exemplo:

No caso de Origem = 3, o programa pula diretamente para esta instrução, e depois vai para o fimescolha.

Page 96: Introdução à Programação

96

Estruturas de Controle: Condicional (Decisão) ESCOLHA CASO Escolha Caso

Escreva o algoritmo representado no fluxograma ao lado em (pseudocódigo) Portugol, fazendo uso da estrutura

Escolha/Caso.

EXERCÍCIO

Lembrem-se: só se aprende Programação

PRATICANDO MUITO !

Page 97: Introdução à Programação

97

Estruturas de Controle: Condicional (Decisão) ESCOLHA CASO

Problema: Calculadora Tomando como base o problema da página: Testando Algoritmos – Exemplo: Calculadora. Agora é desejável que o usuário também informe qual das 4 operações ele deseja que a calculadora realize. Você deverá utilizar a estrutura CASO para determinar qual das operações deverá ser realizada, e então, mostrar o resultado da operação. Lembrem-se: só se aprende Programação PRATICANDO MUITO !

EXERCÍCIO

Page 98: Introdução à Programação

98

Estruturas de Controle: Repetição

o Nos exemplos e exercícios que vimos até agora, sempre foi possível resolver os problemas com uma sequência de instruções que eram executadas apenas uma vez.

o Uma estrutura de repetição permite que uma sequência de instruções seja executada um número vezes pré-determinado várias vezes, ou até/enquanto uma condição seja verdadeira.

o Ou seja, repete-se um conjunto de instruções sem que seja necessário escrevê-las várias vezes.

o Essas estruturas de repetição também são chamadas de Laços ou Loops.

Page 99: Introdução à Programação

99

Estruturas de Controle: Repetição Tipos de estruturas de repetição:

o Repetição contada (definida)

• Número pré-determinado (estrutura PARA)

o Repetição condicional (indefinida) • Com teste lógico no início (estrutura ENQUANTO) • Com teste lógico no final (estrutura REPITA)

Page 100: Introdução à Programação

100

Estruturas de Controle: Repetição para quem não conhece as estruturas de repetição

Exemplo: Problema: Dizer “Alô Mundo” 12 vezes Sem o uso de uma estrutura de repetição teríamos:

Algoritmo Alô Mundo Var Inicio Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Fim

Page 101: Introdução à Programação

101

Estruturas de Controle: Repetição Para

PARA <variável contadora> DE <valor inicial> ATE <valor final> [PASSO <valor de incremento>] FAÇA <instruções a serem executadas repetidamente até a <variável contadora> atingir o valor final> FIM-PARA

SINTAXE:

Page 102: Introdução à Programação

102

Estruturas de Controle: Repetição Para

Problema: Dizer “Alô Mundo” 12 vezes

Algoritmo Alô Mundo Var nconta: inteiro Inicio PARA nconta DE 1 ATE 12 FACA Escreva (“Alô Mundo”) ...... FIMPARA Fim

Algoritmo Alô Mundo Var Inicio Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Escreva (“Alô Mundo”) Fim

Instruções sequenciais

Instruções com repetição

Page 103: Introdução à Programação

103

Estruturas de Controle: Repetição Para

1) Exibir na tela a seguintes mensagens: Número 1 Número 2 . . . Numero 100

2) Agora, o usuário da sua Calculadora (escolha caso) deseja realizar

10 cálculos. Ou seja, depois de executar a operação escolhida pelo usuário, seu algoritmo não deve simplesmente mostrar o resultado e chegar ao fim. Ou seja, o programa deve ficar à disposição do usuário para realizar mais 9 outros cálculos.

3) Exibir cada um dos números pares a partir de 2 até um número informado pelo usuário. E ao final exibir a soma desses números.

EXERCÍCIO

Page 104: Introdução à Programação

104

Estruturas de Controle: Repetição Enquanto

ENQUANTO <expressão booleana> FAÇA <instruções a serem executadas enquanto a condição lógica (booleana) resultar em VERDADEIRO> FIM-ENQUANTO

SINTAXE:

A <expressão lógica> é verificada logo na entrada de cada repetição.

Portanto, pode ser que as instruções jamais sejam executadas

Page 105: Introdução à Programação

105

Estruturas de Controle: Repetição Enquanto

Algoritmo Alô Mundo Var nconta: inteiro Inicio nconta <- 1 ENQUANTO (nconta <= 12) FACA Escreva (“Alô Mundo”) ...... nconta <- nconta + 1; FIMENQUANTO Fim

Problema: Dizer “Alô Mundo” 12 vezes (agora com ENQUANTO)

Dica: A estrutura PARA seria mais adequada para a implementação deste problema

Inicialização da Variável de controle

Expressão/Condição Lógica (booleana)

Instrução que afeta a expressão lógica:

Neste caso é uma alteração no valor da variável de controle.

Caso seja omitido/esquecido, haverá um LOOP INFINITO

Page 106: Introdução à Programação

106

Estruturas de Controle: Repetição Enquanto

1) Agora, no seu programa “Categoria de Atletas”, após a seleção cada

atleta, o usuário deve ter a opção de continuar fazendo o cadastro de vários outros atletas ou finalizar o programa. E ao final do programa, você deve exibir: “De um total de X atletas selecionados, o atleta mais velho é FULANO”. Dica: pergunte ao usuário “Deseja registrar mais um Atleta ? (“SIM” ou “NÃO”)

2) Mostre na tela cada um do números impares a partir do número 1, você deve parar quanto a soma desses números ultrapassar o limite de 1000. No final exibir: “A soma dos números impares de 1 até X é de Y”

EXERCÍCIO

Page 107: Introdução à Programação

107

Estruturas de Controle: Repetição Repita

REPITA <instruções a serem executadas repetidamente até a expressão booleana retornar VERDADEIRO> ATÉ <expressão booleana>

SINTAXE:

A <expressão lógica> somente é verificada no final de cada repetição.

Portanto, as instruções são executadas pelo menos 1 vez.

Page 108: Introdução à Programação

108

Estruturas de Controle: Repetição Repita

Algoritmo Alô Mundo Var quermais: string Inicio REPITA Escreva (“Alô Mundo”) ...... ESCREVA(“Deseja continuar ? S ou N:”); LEIA(quermais); ATE (quermais = “N”) Fim

Problema: Dizer “Alô Mundo”, pelo menos uma vez e quantas vezes mais o usuário quiser

Não há a obrigatoriedade de

Inicialização da Variável de controle

Expressão/Condição Lógica (booleana)

Instrução que afeta a expressão lógica:

Neste caso é uma instrução de

entrada do usuário, que altera a variável de controle.

Caso seja omitido/esquecido, haverá um LOOP INFINITO

Page 109: Introdução à Programação

109

Estruturas de Controle: Repetição: Repita

1) Adapte o seu algoritmo Calculadora, de maneira que sempre que o usuário informar os valores 0 (zero) para os dois números, o programa é finalizado, não permitindo mais a realização de novos cálculos. Ao final exibir a mensagem: “Calculadora Finalizada pelo usuário !!!”.

2) Utilize o problema de “números pares”. Mas agora você não deve mostra na tela os números múltiplos de 3. Além disso, a cada múltiplo de dez, você deve dar a seguinte opção ao usuário: “Deseja continuar com a exibição dos números ? (S ou N)“. E ao final exibir: “Programa Finalizado pelo usuário !!!”.

3) Realize o Teste de Mesa dos algoritmos acima

EXERCÍCIO

Page 110: Introdução à Programação

110

Estruturas de Controle: Repetição Problemas propostos

1) Potência: Supondo que a linguagem de programação que você utiliza não possui operador de potenciação. Então, utilize estrutura de repetição para calcular a potência de um número, o usuário deve informar a base e o expoente, e o programa deve exibir o resultado. (realize o teste de mesa)

2) Progressões Aritmética e Geométrica: Lembrando: PA: é uma sequência cujo o próximo termo é a soma do número antecessor com a razão da PA. PG: é uma sequência cujo o próximo termo é o produto do número antecessor pela a razão da PG. Assim, solicite ao usuário o primeiro termo e a razão. Então, exiba cata termo, do primeiro ao décimo, linha a linha, ex.: 2º Termo: P.A.: 7 e P.G.: 12. E no final seu algoritmo deve exibir a sequencia completa separada por virgula, tanto da P.A. como da PG. Veja o exemplo da ilustração abaixo com apenas 6 termos.

Exemplo:

Primeiro termo: 3 Razão: 4

Page 111: Introdução à Programação

111

Curiosidades A Sequência de Fibonacci “Os números preferidos pela Natureza” É uma sucessão de números que, misteriosamente, aparece em muitos

fenômenos da natureza. Descrita no final do século 12 pelo italiano Leonardo Fibonacci, ela é infinita e começa com 0 e 1. Os números seguintes são sempre a soma dos dois números anteriores. Portanto, o inicio da sequencia é: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233....

Page 112: Introdução à Programação

112

Curiosidades A Sequência de Fibonacci A razão Áurea “O número de Ouro”

Artes Esse recurso matemático também foi uma das principais marcas do Renascimento. A Mona Lisa, de Leonardo da Vinci, usa a razão na relação entre tronco e cabeça e entre elementos do rosto. Arquitetura Os gregos já conheciam a proporção, embora não a fórmula para defini-la. A largura e a altura da fachada do Paternon, templo do século V a.C. estão na proporção de 1 para 1,618. As Grandes Pirâmides Mais um mistério: cada bloco é 1,618 vezes maior que o bloco do nível imediatamente acima. Em algumas, as câmaras internas têm comprimento 1,618 vezes maior que sua largura.

Outra curiosidade é que os termos da sequência também estabelecem a chamada “proporção áurea”, muito usada na arte, na arquitetura e no design por ser considerada agradável aos olhos. Seu valor é de 1,618 e, quanto mais você avança na sequência de Fibonacci, mais a divisão entre um termo e seu antecessor se aproxima desse número.

Page 113: Introdução à Programação

113

Estruturas de Controle: Repetição Problemas propostos

3) Sequencia de Fibonacci:

Solicite ao usuário a quantidade de números de Fibonacci que ele deseja ver, e então mostre a sequencia de Fibonacci até o número dado pelo usuário. Exiba cata número, linha a linha, ex.: 1º Número de Fibonacci: X. E no final seu algoritmo deve exibir a sequencia completa separada por virgula.

Page 114: Introdução à Programação

114

Estruturas de Controle: Repetição A instrução: volte (utilizado dentro de estruturas de repetição)

Page 115: Introdução à Programação

115

Estruturas de Controle: Repetição A instrução: interrompa (utilizado dentro de estruturas de repetição)

Page 116: Introdução à Programação

116

Escolha sua linguagem

Page 117: Introdução à Programação

117

Bibliografia/Materiais Ciência da Computação - Uma Visão Abrangente 11ª Edição J. Glenn

Brookshear ed. Bookman

Introdução a Lógica Para Ciência da Computação - Jair Minoro Abe; João Inácio Da Silva Filho; Alexandre Scalzitti, ed. Arte e Ciência

Site http://www.infoescola.com/

Site: http://www.dicasdeprogramacao.com.br/

Curso Básico de Lógica de Programação - Paulo Sérgio de Moraes

Unicamp: Link: http://www.inf.ufsc.br/~vania/teaching/ine5231/Logica.pdf

Slides Prof. Fernando M. Quinhã Pereira Link: http://pt.slideshare.net/marciapoposki/linguagem-de-programao-46262273

Slides Prof. Mauro Jansen Link: http://pt.slideshare.net/MauroJansen1/algoritmos-e-lp-parte3pseudocdigo

Page 118: Introdução à Programação

118

Mais Links sobre Linguagens de Programação

http://www.dialetodigital.com/blog/conteudos-programacao/