45
Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Embed Size (px)

Citation preview

Page 1: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Turma:

Professor:

E-mail:

Página:

Ambiente virtual:

IEC037Introdução à Programação de Computadores

Aula 03 – Estrutura Sequencial

Page 2: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema Inicial

Como revestir uma das paredes de um banheiro, usando ferramentas e material fornecido?

Page 3: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Definição de algoritmo

Uma sequência finita e ordenada de passos sem ambiguidade que leva à

resolução de um problema.

Page 4: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema Inicial:: Solução 1

início

Separar material necessário

Preparar argamassa

Assentar as pastilhas

Fazer acabamento

fim

Page 5: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema Inicial:: Solução 2

início

Comprar material necessário

Contratar um pedreiro

Esperar ficar pronto

Pagar o pedreiro

fim

Existem várias maneiras de descrever uma

solução algorítmica.

Page 6: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Como descrever um algoritmo?

Narrativa• O algoritmo é descrito em linguagem natural, que é abstrata,

imprecisa e ambígua.

Fluxograma• Representação gráfica, através de símbolos geométricos

(retângulos, losangos, etc.), que enfatizam os passos individuais do algoritmo e suas interconexões.

Pseudo-Código• Emprega uma linguagem intermediária entre a linguagem natural

e uma linguagem de programação para descrever os algoritmos, usando um vocabulário mais restrito e sem ambiguidades.

Page 7: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Fluxogramas

Definição•Diagrama que utiliza símbolos para indicar a sequência de execução de um conjunto de comandos

Outras denominações•Diagrama de blocos•Diagrama de fluxo

Vantagem•Fácil leitura

Desvantagem•Escrita trabalhosa

Page 8: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Fluxogramas:: Simbologia

início / fim

ação

leitura de dados

saída

Deve começar com um verbo

Usado apenas quando a entrada não é conhecida. Se o valor for pré-definido, use o retângulo.

Sentido do fluxo de execução

Page 9: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 2

Qual a área da parede do banheiro a ser revestida, se ela mede 4,4m de largura por 3,2m de altura?

4,4m

3,2m

Page 10: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Processo de resolução de problemas algorítmicos

Fim

Início

1

Definir as entradas e as saídas2

Projetar o algoritmo3

Converter o algoritmo em linguagem de programação4

Testar solução5

Decompor

Refinarpasso a passo

Identificar o problema

Page 11: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Caracterização das Entradas e Saídas

Para uma identificação completa das entradas e saídas de um sistema, devemos levantar as seguintes características:

Nome da grandeza

Unidade de medida

Faixa de valores válidos

Page 12: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 2

Qual a área da parede do banheiro a ser revestida, se ela mede 4,4m de largura por 3,2m de altura?

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

EntradasLargura da

parede m 4,4m

Altura da parede m 3,2m

Saídas Área da parede m² > 0

Page 13: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 2:: Projetando a Solução

Deve-se atribuir o valor 4,4 para a largura. Deve-se atribuir o valor 3,2 para a altura. Deve-se atribuir o produto da largura pela altura à

área resultante:

𝐴=𝑏⋅ h

Page 14: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 2:: Solução

início

largura ← 4,4altura ← 3,2

área ← largura * altura

Exibir área

fim

Variáveis e atribuições

Page 15: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

O que são variáveis no contexto algorítmico?

Variáveis representam um espaço de memória onde se pode armazenar um valor.

Memória

4,4

3,2

altura

largura

Page 16: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Variáveis :: Características

altura ← 3,2

IdentificadorNome da variável

ValorAtribuiçãoComando que define ou redefine o valor de uma variável. Lê-se: “altura recebe 3,2” ou “atribuir 3,2 à altura”

Page 17: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Variáveis :: Analogia

Variáveis podem ser vistas como gavetas de um armário onde cabe apenas um único valor

largura

altura

início

largura ← 4,4altura ← 3,2

largura ← 7,8

fim

4,4

3,2

7,8

Page 18: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Qual a relação com variáveis no contexto matemático?

MatemáticaVariáveis podem assumir o

valor de qualquer elemento de um conjunto.

AlgoritmosVariáveis podem assumir apenas um único valor de

cada vez.

Page 19: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 3

Deseja-se revestir uma das paredes de um banheiro, que mede 4,7m × 2,9m, com pastilhas quadradas de 4cm de lado.

Quantas pastilhas são necessárias?

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas Lado da pastilha cm 4cm

Largura da parede m 4,7m Altura da parede m 2,9m

Saídas nº de pastilhas -- > 0

Page 20: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 3:: Projetando a Solução

Número de pastilhas ():

Área da parede:

Área da pastilha:

𝑁=Á reada paredeÁ reada pastilha

𝑙𝑎𝑟𝑔𝑢𝑟𝑎⋅𝑎𝑙𝑡𝑢𝑟𝑎

𝑙𝑎𝑑𝑜2

Como expressar essas operações aritméticas

no fluxograma?

?

Parte inteira mais 1

Page 21: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Operadores Aritméticos

São utilizados para realizar as operações aritméticas básicas.

Operador Operação Exemplo

+ Adição 1 + y

– Subtração x – y

* Multiplicação 8 * y

/ Divisão real 7 / 2 (= 3,5)

// Divisão inteira 7 // 2 (= 3)

% Resto da divisão inteira 7 % 2 (= 1)

** Potenciação x ** 2

Page 22: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Operadores Aritméticos

Entrada: 02 valores numéricos Saída: 01 valor numérico

OperadorAritmético

valor numérico

valor numéricovalor numérico

Page 23: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Operadores Aritméticos:: Formato

OperadorOperando1 Operando2

2a2 * a

Exemplos:

a ** 3

√55 ** 0,5

Page 24: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Operadores Aritméticos:: Prioridade

Prioridade Operador1 Parênteses mais internos2 Potenciação3 Multiplicação, divisão, resto4 Adição, subtração

Exemplos:

4 * 3 ** 2

(4 * 3) ** 2

4 * 5 % 3

4 * (5 % 3)

36

144

2

8

Na dúvida, use parênteses.

Da esquerda para a direita

Page 25: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Voltando ao Problema 3

Deseja-se revestir uma das paredes de um banheiro, que mede 4,7m × 2,9m, com pastilhas quadradas de 4cm de lado.

Quantas pastilhas são necessárias?

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas Lado da pastilha cm 4cm

Largura da parede m 4,7m Altura da parede m 2,9m

Saídas nº de pastilhas -- > 0

Page 26: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 3:: Solução

início

largura ← 470altura ← 290

lado ← 4

N ← (largura * altura) // (lado ** 2) + 1

Exibir N

fim

Operadores Aritméticos

470

290

4

8519

altura

largura

lado

N

Memória

Todos na mesma unidade de medida!

Page 27: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 4

Deseja-se revestir uma das paredes de um banheiro, que mede 5,2m × 3,2m, com pastilhas quadradas de 5cm de lado. As pastilhas são vendidas em caixas de 1000 unidades, que custam R$ 450,00 cada.

Quanto vou gastar?

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas

Lado da pastilha cm 5cm Largura da parede m 5,2mAltura da parede m 3,2m

Nº pastilhas por caixa Unid./caixa 1000Custo por caixa R$ R$ 450,00

Saídas Custo R$ > 0

Page 28: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 4:: Projetando a Solução

Reusamos solução do problema anterior: Número de pastilhas ()

Custo Total ():

custoTotal=N

Qtde .de pastilha por caixa⋅CustoUnit

Parte inteira mais 1

Page 29: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

3150,00

6656

Problema 4:: Solução

início

largura ← 520altura ← 320

lado ← 5custoUnit ← 450,00

N ← (largura * altura) // (lado ** 2)

Exibir custoTotal

fim

custoTotal ← ((N // 1000) + 1) * custoUnit

520

320

5

450,00

altura

largura

lado

custoUnit

Memória

N

custoTotal

Page 30: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

É possível generalizar a entrada?

Nas soluções anteriores, os fluxogramas foram específicos aos problemas.

Vamos generalizar o fluxograma utilizando um novo símbolo:

Leitura de dados

Page 31: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 4:: Solução generalizada

início

Ler larguraLer alturaLer lado

Ler custoUnit

N ← (largura * altura) // (lado ** 2)

Exibir custoTotal

fim

custoTotal ← ((N // 1000) + 1) * custoUnit

Page 32: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 5

Um professor esqueceu de corrigir uma questão de uma prova. Agora, ele tem de somar um ponto à nota dos alunos.

Qual algoritmo a ser adotado?

Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

Grandeza Unidade de medida Faixa de valores

Entradas Nota --- 0 a 10

Saídas Nota --- 1 a 11

Page 33: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 5:: Solução bruta

início

Ler notaInicial

notaFinal ← notaInicial + 1

Exibir notaFinal

fim

6,2

7,2notaFinal

notaInicial

Memória

Page 34: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 5:: Solução refinada

início

Ler nota

nota ← nota + 1

Exibir nota

fim

5,2nota

Memória

6,2nota

Memória

Page 35: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Mesma variável em ambos os lados do operador atribuição

nota ← nota + 1

início

Verificar valor atual da variável “nota”

Somar “nota”

Armazenar resultado na mesma variável “nota”

fimO que acontece??

Page 36: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 6

Qual o valor exibido pelo fluxograma abaixo?

início

A ← 5B ← 3

B ← B * A

Exibir B

fim

Page 37: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 6:: Solução

Qual o valor exibido pelo fluxograma abaixo?

início

A ← 5B ← 3

B ← B * A

Exibir B

fim

5

3

A

Memória

B

5

15

A

Memória

B

Page 38: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 7

Qual o valor exibido pelo fluxograma abaixo?início

VAL1 ← 10VAL2 ← 16

VAL3 ← VAL2 – VAL1

VAL3 ← VAL1 – VAL2

Exibir VAL3

fim

Page 39: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 7:: Solução

Qual o valor exibido pelo fluxograma abaixo?

1016

VAL1

Memória

VAL2?VAL3

início

VAL1 ← 10VAL2 ← 16

VAL3 ← VAL2 – VAL1

VAL3 ← VAL1 – VAL2

Exibir VAL3

fim

1016

VAL1VAL2

6VAL3

1016

VAL1VAL2

-6VAL3

Page 40: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 8

Qual os valores exibidos pelo fluxograma abaixo?início

PRIM ← 5

SEG ← PRIM

TER ← SEG

PRIM ← 8

Exibir PRIM, SEG, TER

fim

Page 41: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 8:: Solução

Qual os valores exibidos pelo fluxograma abaixo?

5?

PRIMMemória

SEG?TER

início

PRIM ← 5

SEG ← PRIM

TER ← SEG

PRIM ← 8

Exibir PRIM, SEG, TER

fim

55

PRIMSEG

?TER

55

PRIMSEG

5TER

85

PRIMSEG

5TER

Page 42: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 9

Deseja-se calcular o perímetro de um triângulo retângulo.

Conhece-se apenas as medidas dos catetos.

O que há de errado na solução ao lado?

início

Ler C1Ler C2

H ← (C1 ** 2 + C2 ** 2) ** 0,5

Exibir H

fim

Page 43: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Problema 9:: Solução

O problema a ser resolvido é a determinação do perímetro, e não da hipotenusa, que é apenas um passo intermediário.

início

Ler C1Ler C2

H ← (C1 ** 2 + C2 ** 2) ** 0,5

P ← H + C1 + C2

Exibir P

fim

Page 44: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Referências bibliográficas

Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec.

Farrer, Harry (2011). Algoritmos Estruturados, 3ª edição. Editora LTC.

Forbellone, A. L. V.; Eberspächer, H. F. (2006) Lógica de Programação, 3ª edição. Pearson.

HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7.

Page 45: Turma: Professor: E-mail: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial

Dúvidas?