Programação I
Prof. Rodrigo Paes
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
“Make the Future - A Career in Computer Science”
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Objetivos
 Desenvolver o raciocínio lógico de programação
 Aprender a programar em uma li...
Instituto de Computação – UFAL
Programa da disciplina
 Resolução de problemas e desenvolvimento de
algoritmos.
 Análise ...
Instituto de Computação – UFAL
Avaliação
 Exercícios
 Provas
 Trabalho
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Referências
 Livro
 Evaristo, Jaime. Aprendendo a Programar Programando
na Linguagem C, 2...
Instituto de Computação – UFAL
Exercícios
 Utilizaremos o Huxley
 www.thehuxley.com
 Datas de entrega definidas no próp...
Por que?
Instituto de Computação – UFAL
Por que programar pode ser divertido?
 Nós sempre adoramos “fazer as coisas”
rodrigo@ic.uf...
Instituto de Computação – UFAL
Por que programar pode ser divertido?
 Por que é um prazer fazer algo que é util para
as p...
Instituto de Computação – UFAL
Por que programar pode ser divertido?
 Somos desafiados por problemas interessantes
a todo...
Instituto de Computação – UFAL
Por que programar pode ser divertido?
 Estamos sempre aprendendo
rodrigo@ic.ufal.br
Conceitos básicos
Instituto de Computação – UFAL
Organização básica de um computador
 Unidade de Entrada
 Unidade de Saída
 Processador
...
Instituto de Computação – UFAL
Sequência de instruções
rodrigo@ic.ufal.br
Instrução 01
Instrução 02
Instrução 03
.
.
.
Ins...
Instituto de Computação – UFAL
Que tipos de programas você conhece?
 Games
 Editores de Texto
 Internet Banking
 Paint...
Instituto de Computação – UFAL
Alguma vez você se preocupou com …
 No paintbrush quando você clica no lápis …
 Por que e...
Instituto de Computação – UFAL
Mas alguém se preocupou com isso!
 O programador !!!
 Programa de computador
(software)
...
Instituto de Computação – UFAL
E como isso funciona?
 Passo 1: Programador pensa como o software
deve fucionar
 Passo 2:...
Instituto de Computação – UFAL
Voltando aos objetivos dessa disciplina
 Vamos aprender a pensar nessas instruções
 Lógic...
Instituto de Computação – UFAL
Problema 1
 Objetivo: Atravessar o rio
 A canoa só suporta o homem e mais
01 carga
 Lemb...
Instituto de Computação – UFAL
Solução
1. Atravesse a galinha.
2. Retorne sozinho.
3. Atravesse a raposa.
4. Retorne com a...
Instituto de Computação – UFAL
Pronto … fizemos!
 Acabamos de desenvolver o nosso primeiro
algoritmo
 Algoritmo
 Sequên...
Instituto de Computação – UFAL
Uma balança
 Dispõe-se de três esferas idênticas na
forma, sendo duas delas de mesmo peso ...
Instituto de Computação – UFAL
Exaustão:: analisar todas as possibilidades
 (a+b,c)
 (a+c,b)
 (b+c,a)
 (a,c)
 (a,b)
...
Instituto de Computação – UFAL
Solução :: Algoritmo
 Escolha duas esferas.
 Coloque cada uma das esferas escolhidas num
...
Instituto de Computação – UFAL
Algoritmo … um pouco mais formal
inicio
// representa os pesos das esferas a, b e c
var pa,...
Instituto de Computação – UFAL
Ponto importante!
 Na maioria dos nossos problemas temos uma
estrutura
 Ler os dados de e...
Instituto de Computação – UFAL
rodrigo@ic.ufal.br
inicio
// representa os pesos das esferas a, b e c
var pa, pb, pc : real...
Instituto de Computação – UFAL
Outro exemplo: “que horas são?”
 Suponha o diálogo
- Que horas são?
- São 10:15 da manhã
-...
Instituto de Computação – UFAL
O algoritmo
inicio
var horas, minutos, total : inteiro
leia horas, minutos
total = horas * ...
Instituto de Computação – UFAL
Como entender um algoritmo?
 Aprenda o vocabulário
inicio
var horas, minutos, total : inte...
Instituto de Computação – UFAL
Como entender um algoritmo?
 Entenda o fluxo
 passo-a-passo
inicio
var horas, minutos, to...
Instituto de Computação – UFAL
Veja o estado
inicio
var horas, minutos, total : inteiro
leia horas, minutos
total = horas ...
Instituto de Computação – UFAL
Como entender um algoritmo?
 Vocabulário
 Fluxo
 Estado
 Depois aprenderemos outros pri...
Instituto de Computação – UFAL
Mais exemplos
 Como obter 04 litros de água, sendo que temos
 1 recipiente com capacidade...
Instituto de Computação – UFAL
Decomposição
 Temos dois recipientes
 Se usarmos o de 3
 4 = 3+1
 Precisamos de 01 litr...
Instituto de Computação – UFAL
Decomposição
 Ok … sabemos como obter 01 litro … vamos ao
algoritmo
 Algoritmo:
 Obtenha...
Instituto de Computação – UFAL
Decomposição
 Obtendo 01 litro
 Encha o recipiente de 03 litros
 Transfira o conteúdo do...
Instituto de Computação – UFAL
 Posição inicial:
 Posição final
 Regras
 elas podem pular para a casa vizinha (frente ...
Instituto de Computação – UFAL
rodrigo@ic.ufal.br
1 2 3 4 5
2 1 3 4 5
2 1 3 4 5
2 3 1 4 5
2 3 1 4 5
2 3 4 1 5
2 3 4 1 5
2 ...
Instituto de Computação – UFAL
E quem vai executar esses algoritmos?
 Travessia do barco
 Balanças
 Número de minutos p...
Upcoming SlideShare
Loading in …5
×

Aula 1 - Programação 1

283 views
200 views

Published on

Aulas da Disciplina de Programação I do Professor Rodrigo Paes, UFAL

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
283
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Aula 1 - Programação 1

  1. 1. Programação I Prof. Rodrigo Paes rodrigo@ic.ufal.br
  2. 2. Instituto de Computação – UFAL “Make the Future - A Career in Computer Science” rodrigo@ic.ufal.br
  3. 3. Instituto de Computação – UFAL Objetivos  Desenvolver o raciocínio lógico de programação  Aprender a programar em uma linguagem estruturada  Linguagem C rodrigo@ic.ufal.br
  4. 4. Instituto de Computação – UFAL Programa da disciplina  Resolução de problemas e desenvolvimento de algoritmos.  Análise do problema.  Estratégias de solução.  Representação e documentação.  Programação de algoritmos usando uma linguagem de programação.  Estruturação de programas.  Noções de tipos e estrutura elementares de dados.  Conceito de recursão e sua aplicação. rodrigo@ic.ufal.br
  5. 5. Instituto de Computação – UFAL Avaliação  Exercícios  Provas  Trabalho rodrigo@ic.ufal.br
  6. 6. Instituto de Computação – UFAL Referências  Livro  Evaristo, Jaime. Aprendendo a Programar Programando na Linguagem C, 2008  Download Grátis:  http://www.ic.ufal.br/professor/jaime  jaime@ccen.ufal.br  C completo e Total  Citações durantes os slides  Internet  Google It !!  Site da disciplina  https://sites.google.com/site/ldsicufal/disciplinas/programa o_i rodrigo@ic.ufal.br
  7. 7. Instituto de Computação – UFAL Exercícios  Utilizaremos o Huxley  www.thehuxley.com  Datas de entrega definidas no próprio huxley rodrigo@ic.ufal.br
  8. 8. Por que?
  9. 9. Instituto de Computação – UFAL Por que programar pode ser divertido?  Nós sempre adoramos “fazer as coisas” rodrigo@ic.ufal.br
  10. 10. Instituto de Computação – UFAL Por que programar pode ser divertido?  Por que é um prazer fazer algo que é util para as pessoas rodrigo@ic.ufal.br
  11. 11. Instituto de Computação – UFAL Por que programar pode ser divertido?  Somos desafiados por problemas interessantes a todo momento rodrigo@ic.ufal.br
  12. 12. Instituto de Computação – UFAL Por que programar pode ser divertido?  Estamos sempre aprendendo rodrigo@ic.ufal.br
  13. 13. Conceitos básicos
  14. 14. Instituto de Computação – UFAL Organização básica de um computador  Unidade de Entrada  Unidade de Saída  Processador  Memória rodrigo@ic.ufal.br
  15. 15. Instituto de Computação – UFAL Sequência de instruções rodrigo@ic.ufal.br Instrução 01 Instrução 02 Instrução 03 . . . Instrução n CP
  16. 16. Instituto de Computação – UFAL Que tipos de programas você conhece?  Games  Editores de Texto  Internet Banking  Paint  Software em celulares  Facebook  Google+  Skype  … rodrigo@ic.ufal.br
  17. 17. Instituto de Computação – UFAL Alguma vez você se preocupou com …  No paintbrush quando você clica no lápis …  Por que ele não toca um som ao invés de mudar o cursor do mouse?  No powerpoint  Ao clicar com o mouse, por que ele muda de slide ao invés de encerrar a apresentação?  Você já se preocupou com os detalhes da arquitetura do seu computador ao rodar o messenger? rodrigo@ic.ufal.br
  18. 18. Instituto de Computação – UFAL Mas alguém se preocupou com isso!  O programador !!!  Programa de computador (software)  Conjunto de instruções  Executadas pelo computador  Ou seja,  O programador especifica as instruções que o computador deve executar !! rodrigo@ic.ufal.br
  19. 19. Instituto de Computação – UFAL E como isso funciona?  Passo 1: Programador pensa como o software deve fucionar  Passo 2: Ele especifica o funcionamento do software em uma linguagem de programação  Passo 3: A especificação é convertida em uma linguagem de máquina, assim o computador entenderá  Passo 4: O computador executa o programa rodrigo@ic.ufal.br
  20. 20. Instituto de Computação – UFAL Voltando aos objetivos dessa disciplina  Vamos aprender a pensar nessas instruções  Lógica de programação  Vamos aprender a especificar essas instruções  Linguagem de programação C rodrigo@ic.ufal.br
  21. 21. Instituto de Computação – UFAL Problema 1  Objetivo: Atravessar o rio  A canoa só suporta o homem e mais 01 carga  Lembre-se  Raposa come galinha  Galinha come o milho rodrigo@ic.ufal.br
  22. 22. Instituto de Computação – UFAL Solução 1. Atravesse a galinha. 2. Retorne sozinho. 3. Atravesse a raposa. 4. Retorne com a galinha. 5. Atravesse o milho. 6. Retorne sozinho. 7. Atravesse a galinha. rodrigo@ic.ufal.br
  23. 23. Instituto de Computação – UFAL Pronto … fizemos!  Acabamos de desenvolver o nosso primeiro algoritmo  Algoritmo  Sequência de instruções que resolvem um determinado problema rodrigo@ic.ufal.br
  24. 24. Instituto de Computação – UFAL Uma balança  Dispõe-se de três esferas idênticas na forma, sendo duas delas de mesmo peso e a terceira de peso maior.  A questão é descobrir qual a esfera de peso diferente, realizando-se apenas 01 pesagem numa balança de dois pratos. rodrigo@ic.ufal.br A B C
  25. 25. Instituto de Computação – UFAL Exaustão:: analisar todas as possibilidades  (a+b,c)  (a+c,b)  (b+c,a)  (a,c)  (a,b)  (b,c) rodrigo@ic.ufal.br A B C A BC AB C A C A B B C
  26. 26. Instituto de Computação – UFAL Solução :: Algoritmo  Escolha duas esferas.  Coloque cada uma das esferas escolhidas num dos pratos da balança.  Se a balança ficar equilibrada, forneça como resposta a esfera não escolhida;  caso contrario, forneça como resposta a esfera do prato que esta num nível mais baixo. rodrigo@ic.ufal.br
  27. 27. Instituto de Computação – UFAL Algoritmo … um pouco mais formal inicio // representa os pesos das esferas a, b e c var pa, pb, pc : real // entrada de dados leia pa, pb, pc se ( pa == pb ) entao imprima "A resposta é a esfera C" senao se ( pa > pb ) entao imprima "A resposta é a esfera A" senao imprima “A resposta é B" fim_se fim rodrigo@ic.ufal.br A B A B
  28. 28. Instituto de Computação – UFAL Ponto importante!  Na maioria dos nossos problemas temos uma estrutura  Ler os dados de entrada  Manipular os dados  Imprimir a saída esperada  O nosso trabalho será  Como produzir a saída esperada com base nos dados de entrada? rodrigo@ic.ufal.br
  29. 29. Instituto de Computação – UFAL rodrigo@ic.ufal.br inicio // representa os pesos das esferas a, b e c var pa, pb, pc : real // entrada de dados leia pa, pb, pc se ( pa == pb ) entao imprima "A resposta é a esfera C" senao se ( pa > pb ) entao imprima "A resposta é a esfera A" senao imprima “A resposta é B" fim_se fim Entrada de dados Saída Saída Saída manipulação manipulação manipulação
  30. 30. Instituto de Computação – UFAL Outro exemplo: “que horas são?”  Suponha o diálogo - Que horas são? - São 10:15 da manhã - Quantos minutos se passaram desde o início do dia? … melhor ainda, você consegue fazer um algoritmo que dada as horas e minutos você me diga quantas horas se passaram desde o início do dia?  Qual é a entrada?  Qual é a saída esperada?  O que você precisa fazer para manipular a entrada e transformá-la na saída? rodrigo@ic.ufal.br
  31. 31. Instituto de Computação – UFAL O algoritmo inicio var horas, minutos, total : inteiro leia horas, minutos total = horas * 60 + minutos imprima “Se passaram "+ total +" minutos." fim rodrigo@ic.ufal.br
  32. 32. Instituto de Computação – UFAL Como entender um algoritmo?  Aprenda o vocabulário inicio var horas, minutos, total : inteiro leia horas, minutos total = horas * 60 + minutos imprima “Se passaram "+ total +" minutos." fim rodrigo@ic.ufal.br
  33. 33. Instituto de Computação – UFAL Como entender um algoritmo?  Entenda o fluxo  passo-a-passo inicio var horas, minutos, total : inteiro leia horas, minutos total = horas * 60 + minutos imprima “Se passaram "+ total +" minutos." fim rodrigo@ic.ufal.br
  34. 34. Instituto de Computação – UFAL Veja o estado inicio var horas, minutos, total : inteiro leia horas, minutos total = horas * 60 + minutos imprima “Se passaram "+ total +" minutos." fim rodrigo@ic.ufal.br Memória: horas minutos total 38126 -487432 234987 15 30 930 Cenário 1: São dados como entrada 15 e 30 horas minutos total 2322 111134 0 8 10 490 Cenário 2: São dados como entrada 8 e 10
  35. 35. Instituto de Computação – UFAL Como entender um algoritmo?  Vocabulário  Fluxo  Estado  Depois aprenderemos outros princípios rodrigo@ic.ufal.br
  36. 36. Instituto de Computação – UFAL Mais exemplos  Como obter 04 litros de água, sendo que temos  1 recipiente com capacidade de 3 litros  1 recipiente com capacidade de 5 litros  Dessa vez, vamos focar apenas na resolução do problema  Ou seja, o vocabulário é livre.  Escreva um conjunto de passos de forma que qualquer pessoa, se seguir o seu conjunto de passos obterá o resultado  “receita de bolo” rodrigo@ic.ufal.br 3 3 litros 5 litros
  37. 37. Instituto de Computação – UFAL Decomposição  Temos dois recipientes  Se usarmos o de 3  4 = 3+1  Precisamos de 01 litro  Se usarmos o de 5  4 = 5-1  Precisamos remover 01 litro  Ou seja, se soubermos obter 01 litro, resolvemos o problema rodrigo@ic.ufal.br 3 5 3 3 5 + + = 1L
  38. 38. Instituto de Computação – UFAL Decomposição  Ok … sabemos como obter 01 litro … vamos ao algoritmo  Algoritmo:  Obtenha 01 litro  Adicione 01 litro ao recipiente de 05 litros  Encha o recipiente de 03 litros  Transfira o conteúdo do recipiente de 03 litros para o recipiente de 05 litros rodrigo@ic.ufal.br
  39. 39. Instituto de Computação – UFAL Decomposição  Obtendo 01 litro  Encha o recipiente de 03 litros  Transfira o conteúdo do recipiente de 3 litros para o recipiente de 5 litros  Encha o recipiente de 3 litros  Com o conteúdo do recipiente de 3 litros, complete o recipiente de 5 litros  Esvazie o recipiente de 5 litros  Adicione 01 litro ao recipiente de 05 litros  Encha o recipiente de 03 litros  Transfira o conteúdo do recipiente de 03 litros para o recipiente de 05 litros rodrigo@ic.ufal.br 3 3 5 + + = 1L Note: sobrou 01 litro no recipiente de 03 litros
  40. 40. Instituto de Computação – UFAL  Posição inicial:  Posição final  Regras  elas podem pular para a casa vizinha (frente ou trás), se ela estiver vazia;  elas podem pular sobre a rã vizinha para uma casa livre (frente ou trás). Mais um exemplo com vocabulário livre! rodrigo@ic.ufal.br 1 2 3 4 5 5 4 3 2 1
  41. 41. Instituto de Computação – UFAL rodrigo@ic.ufal.br 1 2 3 4 5 2 1 3 4 5 2 1 3 4 5 2 3 1 4 5 2 3 1 4 5 2 3 4 1 5 2 3 4 1 5 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 3 2 4 5 1 3 2 4 5 1 3 4 2 5 1 3 4 2 5 1 3 4 5 2 1 3 4 5 2 1 3 4 5 2 1 3 4 5 2 1 3 4 5 2 1 4 3 5 2 1 4 3 5 2 1 4 5 3 2 1 4 5 3 2 1 4 5 3 2 1 4 5 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1
  42. 42. Instituto de Computação – UFAL E quem vai executar esses algoritmos?  Travessia do barco  Balanças  Número de minutos passados  Baldes  Rãs  O processador do algoritmo  Próxima aula … rodrigo@ic.ufal.br

×