Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

80
Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar

Transcript of Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Page 1: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Construção de Algoritmose Programação

Prof. Dr. Ednaldo Pizzolato

DC - UFSCar

Page 2: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Disciplina que fornecerá instrumentos para que o aluno aprenda a desenvolver soluções computacionais para problemas bem determinados.

Fazem parte do escopo da disciplina o aprendizado de fluxogramas, algoritmo e linguagem C.

Page 3: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Avaliação:

Existem atividades práticas (AP) que auxiliam o aprendizado. A média das avaliações práticas terá peso cor-respondente a 20% das avaliações na média final.

Page 4: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Avaliação:

Existem também as avaliações teóricas cuja média corresponderá a 80% da média final.

Assim, a média final (MF) será:

MF = 20% MAP + 80% MAT

Page 5: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Avaliação:

Se o aluno não obtiver média igual ou superior a 6, tal aluno deverá fazer uma prova extra chamada de prova substitutiva que substituirá (em benefício do aluno) sua pior nota.

Page 6: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Avaliação:

A SUB não poderá ser feita para aumentar a nota final.

Caso o aluno tenha feito a SUB, sua média nunca será superior a 7.

Page 7: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Avaliação:

Caso o aluno mesmo com a sub não tenha conseguido obter média de aprovação (igual ou superior a 6), e caso o mesmo aluno tenha obtido média igual ou superior a 5, poderá realizar uma prova de recuperação no início do próximo semestre. Tal prova versará sobre todo o conteúdo e a média final será a média aritmética entre a média final obtida com a sub e a nota da prova de recuperação. Quem fizer a recuperação e conseguir aprovação terá média final 6.

Page 8: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Aulas:

As aulas acontecerão no laboratório (com computadores). Assim, será possível testar as informações imediatamente (bem como tirar dúvidas e fazer experimentos diferentes).

Page 9: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Aulas:

As provas práticas acontecerão também no laboratório. Elas serão questões relativas às atividades práticas que os alunos deverão fazer em casa. Ou seja, as atividades práticas terão suas notas através das provas práticas.

Page 10: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Aulas:

As provas teóricas acontecerão na sala oficial divulgada pela UFSCar. Elas terão questões relativas ao conteúdo ministrado durante o período.

Page 11: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Datas:

Serão 3 provas e uma substitutiva. Acontecerão nos seguintes dias:

P1 – 14/04P2 – 12/05P3 – 23/06Sub – 30/06

Page 12: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Material de Apoio:

Haverá uma área de apoio no MOODLE que permitirá que o aluno faça downloads de slides. Essa área, na verdade, servirá de apoio para a disciplina.

www.moodle.ufscar.br

Page 13: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Bibliografia:

Senne, E.L.F. – Primeiro curso de programação em C, Visual Books, 2003.

Kernighan, B.W. & Ritch, D.M. – C: A linguagem de Programação, Rio de Janeiro, Campus, 1986.

Mizrahi, V. – Treinamento em Liguagem C – Módulo 1 e 2, São Paulo, McGraw-Hill, 1990.

Page 14: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

ApresentaçãoApresentação

Bibliografia:

Medina, M. & Fertig, C. - Algoritmos e Programação – Teoria e Prática, Novatec, 2005.

Tremblay, J-P. & Bunt, R. - Ciência dos Computadores – Uma Abordagem Algoritmica, McGraw-Hill, 1981.

Page 15: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO

COMPUTAÇÃO

Área que estuda os computadorese o que eles podem fazer.

Page 16: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO

software

hardware

Programação

Equipamento

Page 17: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO• HardwareHardware

– São os equipamentos e dispositivos eletrônicos, elétricos e mecânicos que compõem o computador

• SoftwareSoftware– São os programas e aplicativos

que contêm instruções para comandar o hardware

É a parte que você chuta

É a parte que você xinga

Page 18: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃOINTRODUÇÃO

Programação

software

hardware

Page 19: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO

processamentoEntrada Saída

Page 20: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO

10 20 30 20

Exemplo: Cálculo da média entre 3 números

Entradas: ???

Saídas: ???

Page 21: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO

Unidade deprocessamento

Memória

Entrada

Saída

PentiumAthlonMotorola+Co-proces-sador

TecladoMouseModem

MonitorImpressoraModem

MODELO DE COMPUTADOR

Primária Secundária

Page 22: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Modelo de computador

• Memória– Armazenamento de dados e

programas

Unidade deprocessamento

Memória

Entrada

Saída

•EndereçamentoIdentificação de onde as informações estão

•CapacidadeQuantidade de informação que pode ser armazenada

•VolatilidadeExigência de eletricidade

•VelocidadeTaxa de transferência dos dados para processamento

Page 23: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Tipos básicos

• Memória– Não existem posições vazias– Há sempre bits em posições de

memória• Pode-se não saber o que está lá

• Em posições com conteúdo desconhecido, diz-se que existe “lixo”

– Alguns compiladores mais modernos, mas não todos, tendem a ter bits zero nas áreas de dados

Nunca conte com isso!!!

Page 24: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO• Hardware e periféricos executam operações Hardware e periféricos executam operações

sob controle da UCP (unidade central de sob controle da UCP (unidade central de processamento)processamento)

• UCP segue os comandos armazenados na UCP segue os comandos armazenados na memória primáriamemória primária

• O sistema operacional é o conjunto básico de O sistema operacional é o conjunto básico de comandos que gerenciam o computadorcomandos que gerenciam o computador– Gerencia também o uso de outros

programas• Editores de texto• Planilhas de cálculo• Jogos• Programas em geral... feitos pelo usuário

Page 25: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

INTRODUÇÃO

Hardware Periféricos

S.O.

Aplicativos

Page 26: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Sistemas operacionais• Exemplos de S.O.

(principais)– 1961 – CTSS– 1966 – DOS/360 (IBM)– 1969 – Unix– 1970 – DOS/Batch 11

(PDP-11)– 1976 – CP/M– 1978 – VMS– 1981 – MS/DOS

(Microsoft)– 1981 – SunOS– 1984 – MacOS (McIntosh)– 1985 – AmigaOS– 1985 – Windows 1.0– 1987 – Minix– 1987 – IRIX (SGI)– 1987 – OS/2 (IBM)

– 1987 – Windows 2.0– 1989 – SCO Unix– 1991 – Linux– 1992 – Windows 3.1– 1993 – FreeBSD– 1993 – Windows NT

3.1– 1995 – Windows 95– 1997 – MacOS 7.6– 1998 – Windows 98– 1999 – MacOS 8– 2000 – Windows 2000– 2000 – Windows ME– 2001 – Windows XP– 2001 – MacOS X– 2003 – Windows 2003

Server– 2005 – Windows Vista

Page 27: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Aplicativos

Aplicativos

Instruções em 0s e 1s

Linguagem de Programação

Tradutor ou Compilador

Algoritmo

Page 28: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Algoritmo: – Definição informal

Conjunto finito de instruções que, em um tempo também finito, transforma um conjunto de dados em um conjunto de dados processados, com o intuito de resolver um problema. Uma linguagem de programação permite que um algoritmo seja “convertido” em programa.

SOLUÇÃO ALGORITMICA

Page 29: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Algoritmos

• Algoritmos envolvem– Linguagem algorítmica

• Formalização dos comandos• Formalização de estruturas de controle

– Ferramental de representação de dados• Tipos de dados variados• Composições de tipos de dados

– Metodologia de desenvolvimento• Abordagem de problemas e proposição de solução

– Objetivo final• Algoritmos têm como objetivo ser a base para programas

Page 30: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

SOLUÇÃO ALGORITMICA

• Lógica de interpretação– Sequencia linear

• Remoção de ambiguidade• Abstração da execução

– Velocidade arbitrária– Memória infinita– Sem limitação para a representação de

informação

Page 31: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

SOLUÇÃO ALGORITMICA

• Ciclo de desenvolvimento– Entendimento do problema– Entendimento da solução não-

algorítmica– Proposição da solução algorítmica– Depuração da solução: testes, correções,

reavaliação da solução– Avaliação da solução quanto a

melhorias e desempenho

Page 32: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

SOLUÇÃO ALGORITMICA

• Entendimento do problema– Avaliação de qual o problema– Determinação com clareza de quais são os dados de

que se dispõe– Determinação com clareza de qual a resposta à qual

se precisa chegar

Page 33: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

SOLUÇÃO ALGORITMICA

• Entendimento da solução não-algorítmica– Aquisição de conhecimento (ou consulta a alguém

que o tenha) para que se tenha uma solução para o problema

• Proposição da solução algorítmica– Desenvolvimento do algoritmo

• Estruturação organizada• Abordagem com enfoque do panorama mais geral para

o mais específico

Page 34: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

SOLUÇÃO ALGORITMICA

• Depuração da solução: testes, correções, reavaliação da solução– Avaliação do algoritmo para certificar que as respostas

produzidas são as esperadas• Checagem para diferentes entradas das saídas produzidas

– Correção e adequação do algoritmo frente às deficiências encontradas

• Avaliação da solução quanto a melhorias e desempenho– Reavaliar a solução proposta

• Busca de melhores opções para a solução proposta• Avaliação das partes do algoritmo para torná-lo mais rápido

(usando um menor número do comandos/operações)

Page 35: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Aplicativos

Aplicativos

Instruções em 0s e 1s

Linguagem de Programação

Tradutor ou Compilador

Algoritmo

Page 36: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Programação

• Máquina programável– Capacidade de executar instruções a

partir de uma lista de comandos especificada por um programador

• Cartões perfurados

• Fitas de papel perfurado

• HD, CD, DVD etc.

Page 37: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Programação• No começo:

– Os programas eram feitos através da mudança física dos circuitos (chaves).

• Depois:– Evoluiu para programas armazenados;– A máquina é capaz de obter a lista de comandos e

armazená-la internamente, em um dispositivo chamado memória.

• Trabalhos: – História dos computadores até 1900– História dos computadores de 1901 a 1960– História dos computadores de 1961 a 2009– História da programação

Page 38: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Trabalho

Trabalhos (em powerpoint):

Título

Número do Trabalho

Nome de cada membro do grupo

Data da Entrega

Conteúdo

Bibliografia

Page 39: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Perguntas a serem respondidas– O que é um ábaco?

– O que é uma régua de cálculo?

– O que são os bastões de Napier?

– O que são válvulas, relés e transístores?

– O que são bugs e por que esta denominação?

– Qual foi a participação de Da Vinci, Pascal, Babbage, Ada Augusta, Hollerith, Von Neumann entre outros na história dos computadores e da programação?

Trabalho

Page 40: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Bibliografia– Ciência dos Computadores (Livro)– http://www.hitmill.com/computers/history/index.html– http://lecture.eingang.org/toc.html– http://www.islandnet.com/~kpolsson/comphist/– http://www.maxmon.com/history.htm– http://inventors.about.com/library/weekly/aa051599.htm– Outros sites na internet

Trabalho

Page 41: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Voltando ao assunto de programação...

Programação

Page 42: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Programação

• Como era no início...– Instruções do processador

• Exigia conhecimento das instruções (em binário?!?)

• Exigia paciência para identificar e corrigir erros

• A chance de erros era grande

10001010 11000100 8AC416

Page 43: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Linguagem montadora– Mnemônicos para as instruções do

processador8AC416 MOV

ADDSUBJMP...

Programação

Page 44: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Linguagem montadora– Um programa específico

• Interpreta os mnemônicos• Gera a instrução adequada para o

processador

– Nome do programa• Programa montador• Em inglês: assembler

– Nome da “linguagem” dos mnemônicos• Assembly

Programação

Page 45: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Linguagem montadora– Dificuldades

• Ainda sujeita a erros

• Ainda exigia atenção do programador

• O assembly era específico para cada processador

– Vantagens• Documentação

– O texto assembly admitia comentários escritos pelo programador

– Os comentários eram simplesmente ignorados pelo programa montador

Programação

Page 46: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Linguagem de nível alto– Substitui o assembly por instruções

independentes do processador– O programador não escreve

diretamente as instruções do processador, mas um conjunto de comandos mais abstrato

B = A

Copia o conteúdo da posição de memória chamada A para B

Programação

Page 47: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Linguagem de nível alto– Um programa interpreta o código escrito na

linguagem• Equipamentos distintos interpretam o mesmo

código para gerar instruções para seus próprios processadores

– Vantagens• Um mesmo código de nível alto pode ser usado

em várias máquinas diferentes

– Desvantagens• Máquinas diferentes exigem programas

específicos para interpretar a linguagem• Nem sempre estes programas interpretam exatamente a mesma linguagem

– Dialetos!!!

Programação

Page 48: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

A fica no endereço A0FF0216

B fica no endereço A0FF0616

C fica no endereço A0FF0A16

Carrega o conteúdo de A0FF0216

Carrega o conteúdo de A0FF0616

Soma os valores carregadosArmazena o resultado em A0FF0A16

C = A + B

1001010000110101110011011100100100111101000011011110101000101001110010100011110100001101111010100010100111001010010101011010101000101001

...

Programação

Page 49: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Compiladores e Interpretadores

Aplicativos

Instruções em 0s e 1s

Linguagem de Programação

Tradutor ou Compilador

Algoritmo

Page 50: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Compiladores e Interpretadores• Compilador

– Interpreta o código de nível alto inteiro e gera todo o conjunto de instruções

– Se houver erro, nenhuma instrução é gerada

• Interpretador– Interpreta o código de nível alto comando por

comando e o executa na hora– Se houver erro, o programa executa até o ponto

do erro, então pára

- Somente executa se não houver erros (sintáticos) no programa

- Resultados parciais podem ser obtidos antes do erro

Page 51: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Compiladores e Interpretadores

• Um compilador converte um programa (escrito em uma linguagem de programação) em um código compreendido pelo computador.

• Um interpretador também executa tarefa semelhante à de um compilador, mas a diferença está no fato de que o interpretador terá que executar a mesma tarefa de “tradução” a cada vez que o usuário executar o programa.

Page 52: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Compiladores e Interpretadores• O interpretador tem

que ouvir “pouco a pouco” o que o locutor está falando e traduzir para todos os ouvintes. Se o locutor for apresentar 10 palestras iguais, o intérprete terá que traduzir 10 vezes...

Bla...

Page 53: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Compiladores e Interpretadores• O compilador ouve

tudo uma única vez e cria um “livro” tradu-zido com o conteúdo da palestra do locutor. Assim, o trabalho do compilador ocorre so-mente uma vez e as coisas ficam bem mais rápidas...

Bla...

Page 54: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Compiladores e Interpretadores

Algoritmo

Programa em

uma linguagem

Tradução

ExecutávelC

C++Pascal

Cobol

JavaC#

PL/I

Lisp

Page 55: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

Aplicativos

Aplicativos Instruções em 0s e 1s

Linguagem de Programação

Tradutor ou Compilador

Algoritmo

Page 56: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Sistema de base decimal– Composto de 10 algarismos (0 a 9)– Algarismo é o termo usado para denominar

os símbolos de zero a nove e é em homenagem a um matemático chamado al-Khowarizmi.

– 5.326 = 5 x 1000 + 3 x 100 + 2 x 10 + 6 x 1

– = 5 x 103 + 3 x 102 + 2 x 101 + 6 x 100

Bases

Page 57: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Sistema binário– Composto de 0s e 1s – Nro = bn x 2n + bn-1 x 2n-1 + .... + b0 x 20 – Exemplo:

• 01000010• 00001101• 00001010• 01101001

– Bits 0s e 1s– Byte agrupamento de 8 bits– Palavra agrupamento de 4 bytes

Bases

Page 58: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Conversão de bases• 61 base 2 ??• 61 2• 1 30 2• 0 15 2• 1 7 2• 1 3 2• 1 1 2• 1 0

Bases

1 1 1 1 0 1

Page 59: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• 1 1 1 1 0 1• 1 x 25 = 32• + • 1 x 24 = 16• + • 1 x 23 = 08• + • 1 x 22 = 04• + • 0 x 21 = 00• +• 1 x 20 = 01

Bases

32 + 16 + 08 + 04 + 01 = 61

Page 60: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Mudar da base 10 para a base 8 (octal)– 61– 120– 56

Bases

Page 61: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Base Hexadecimal – Valores entre 0 e F, onde

• A = 10• B = 11• C = 12• D = 13• E = 14• F = 15

Portanto, 4A3F16 = 1900710

16.384 + 2.560 + 48 + 15

Bases

Page 62: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Operações– Soma de binários

• 0 + 0 = 0• 0 + 1 = 1• 1 + 0 = 1• 1 + 1 = 0 (e vai 1)

0 0 1 1 1 0 1 1

Bases

0

1

1

1

11

Page 63: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Operações– Subtração de binários

• 0 - 0 = 0

• 1 - 1 = 0

• 1 - 0 = 1

• 0 - 1 = 1 (e empresta 1)

Bases

Page 64: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Operações– Adição de Hexadecimais

B C 7

3 4 B

F 1 2

7 + 11 = 18 – 16 = 2 (e vai 1)

1 + 12 + 4 = 17 – 16 = 1 (e vai 1)

Bases

11

Page 65: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Código ASCII– Representação interna (computador)

de símbolos em binário• A = 0100 0001

• B = 0100 0010

• C = 0100 0011

• ...

Representação

Page 66: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

• Vamos brincar um pouco de programar!

Motivação - programação

Page 67: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES

• COMANDOS– F (FRENTE)

– T (TRAS)

– D (DIREITA)

– E (ESQUERDA)

Page 68: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES

• SOLUÇÃO 1– DD– FFF– EE– FF– DDDD– TT– EEEE– FFF– DDDDD

Page 69: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES

• SOLUÇÃO 2– D2– F3– D3– F3

PERGUNTA: Pode-se trocar a ordem dos comandos?

Page 70: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 2

Siga em frente até a prefeitura.

Depois vire à direita e siga em frente por um quarteirão e meio.

Page 71: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 2Siga em frente significa que os sinais de trânsito devem ser respeita-dos.

Page 72: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

Um professor de física necessita de uma solução computacional que resolva o problema de cálculo da velocidade final de um objeto, solto do repouso na direção vertical a partir de uma dada altura, quando este atinge o solo. Este problema é parte de um outro problema maior em que o professor está trabalhando, em cinética.

v0 = 0

v = ?

Page 73: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

Entendimento do problema• É um caso de queda livre

Entendimento da solução não-algorítmica

• Consultando o material do cursinho

• Fazendo as manipulações algébricas adequadas

• Solução:

hgv 2

h – alturag – aceleração gravitacional

v0 = 0

hgv 2 hv 43,4

Page 74: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

– Desenvolvimento do algoritmoalgoritmo quedaLivreinício Obtenha o valor da altura Calcule a velocidade Devolva como resposta a velocidade calculadafim

Esboço inicial

Page 75: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

– Desenvolvimento do algoritmoalgoritmo quedaLivreinício Obtenha o valor para “altura” Calcule “velocidade” pela fórmula “ ” Devolva o valor de “velocidade”fim

Esboço mais refinado

alturavelocidade 43,4

Page 76: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

• Exemplo– Desenvolvimento do algoritmo

algoritmo quedaLivre{ Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } declare altura, velocidade: realinício leia(altura) velocidade 4,43 * raiz(altura) escreva(velocidade)fim

Versão final

Page 77: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

• Exemplo– Observações

• O problema proposto foi bastante específico– A altura deve ser dada em metros e o valor deve ser

positivo– A velocidade resultante é em m/s

• O algoritmo não é geral– O valor da gravidade foi estimado em 9,8m/s2

– Não se admite outro valor para g– Não se admite velocidade inicial diferente de zero– Não se considera resistência do ar– Etc. etc. etc.

Page 78: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

– Teste do algoritmo• Acompanhamento dos cálculos

realizadosValor para h Valor

esperadoValor

calculado8,00 12,52 12,509,50 13,65 13,6213,73 16,40 16,38

Page 79: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

• Exemplo– Melhorias

• Verificou-se que o cálculo intermediário da velocidade podia ser omitido

Algoritmo QuedaLivre{ Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } Declare Altura, Velocidade: realInício Leia (Altura) Velocidade 4,43 * Raiz(Altura) Escreva (Velocidade)Fim

Versão final

Page 80: Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar.

PROBLEMA SIMPLES 3

• Exemplo– Melhorias

Algoritmo QuedaLivre{ Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } Declare Altura, Velocidade: realInício Leia (Altura) Velocidade 4,43 * Raiz(Altura) Escreva (Velocidade)Fim

Versão final

algoritmo quedaLivre{ Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } declare Altura: realinício leia (altura) escreva (4,43 * raiz(altura))fim