SlideShare uma empresa Scribd logo
1 de 42
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 linguagem
estruturada
 Linguagem C
rodrigo@ic.ufal.br
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
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, 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
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
Por que?
Instituto de Computação – UFAL
Por que programar pode ser divertido?
 Nós sempre adoramos “fazer as coisas”
rodrigo@ic.ufal.br
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
Instituto de Computação – UFAL
Por que programar pode ser divertido?
 Somos desafiados por problemas interessantes
a todo momento
rodrigo@ic.ufal.br
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
 Memória
rodrigo@ic.ufal.br
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Instituto de Computação – UFAL
Como entender um algoritmo?
 Vocabulário
 Fluxo
 Estado
 Depois aprenderemos outros princípios
rodrigo@ic.ufal.br
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Métricas de estimativa de esforço em projetos de teste de software
Métricas de estimativa de esforço em projetos de teste de softwareMétricas de estimativa de esforço em projetos de teste de software
Métricas de estimativa de esforço em projetos de teste de software
Samanta Cicilia
 
Tutorial básico google docs
Tutorial básico google docs Tutorial básico google docs
Tutorial básico google docs
lilianrmedeiros
 

Mais procurados (20)

Criação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTMLCriação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTML
 
Informática Básica - Aula 02 - A evolução e caracterização dos computadores
Informática Básica - Aula 02 - A evolução e caracterização dos computadoresInformática Básica - Aula 02 - A evolução e caracterização dos computadores
Informática Básica - Aula 02 - A evolução e caracterização dos computadores
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Métricas de estimativa de esforço em projetos de teste de software
Métricas de estimativa de esforço em projetos de teste de softwareMétricas de estimativa de esforço em projetos de teste de software
Métricas de estimativa de esforço em projetos de teste de software
 
MS Excel - Aula 01
MS Excel - Aula 01MS Excel - Aula 01
MS Excel - Aula 01
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Sistema operacional windows_10
Sistema operacional windows_10Sistema operacional windows_10
Sistema operacional windows_10
 
Sistema windows 10
Sistema windows 10Sistema windows 10
Sistema windows 10
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico
 
Aula I - Word
Aula I - WordAula I - Word
Aula I - Word
 
Tutorial básico google docs
Tutorial básico google docs Tutorial básico google docs
Tutorial básico google docs
 
Informática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional WindowsInformática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional Windows
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Algoritmos - capítulo 1
Algoritmos - capítulo 1Algoritmos - capítulo 1
Algoritmos - capítulo 1
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
 
Tic modulo-25
Tic modulo-25Tic modulo-25
Tic modulo-25
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 

Destaque

Destaque (20)

Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - Programação 1
 
Concurso de Pitch - EDIFPI
Concurso de Pitch - EDIFPIConcurso de Pitch - EDIFPI
Concurso de Pitch - EDIFPI
 
Algoritmos - Introdução à Computação
Algoritmos - Introdução à ComputaçãoAlgoritmos - Introdução à Computação
Algoritmos - Introdução à Computação
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
Programação lógica
Programação lógicaProgramação lógica
Programação lógica
 
aula 10 logica de programacao
aula 10 logica de programacaoaula 10 logica de programacao
aula 10 logica de programacao
 
aula 05 - Logica de programacao
aula 05 - Logica de programacaoaula 05 - Logica de programacao
aula 05 - Logica de programacao
 
aula 11 de logica de programacao
aula 11 de logica de programacaoaula 11 de logica de programacao
aula 11 de logica de programacao
 
Algoritmos - Comandos de Seleção
Algoritmos - Comandos de SeleçãoAlgoritmos - Comandos de Seleção
Algoritmos - Comandos de Seleção
 
aula 07 - Logica de programacao
aula 07 - Logica de programacaoaula 07 - Logica de programacao
aula 07 - Logica de programacao
 
Algoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de ProgramaAlgoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de Programa
 
aula 06 - Logica de programacao
aula 06 - Logica de programacaoaula 06 - Logica de programacao
aula 06 - Logica de programacao
 
aula 09 logica de programacao
aula 09 logica de programacaoaula 09 logica de programacao
aula 09 logica de programacao
 
Aula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAula 02 - Lógica de Programação
Aula 02 - Lógica de Programação
 
Algoritmos - Registros
Algoritmos - RegistrosAlgoritmos - Registros
Algoritmos - Registros
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
aula 04 - Logica de programacao
aula 04 - Logica de programacaoaula 04 - Logica de programacao
aula 04 - Logica de programacao
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 

Semelhante a Aula 1 - Programação 1

utilizando os recuros do google
utilizando os recuros do googleutilizando os recuros do google
utilizando os recuros do google
Marcelo Zanetti
 
Logica programacao estruturadados-INFORMATICA PARA CONCURSO
Logica programacao estruturadados-INFORMATICA PARA CONCURSOLogica programacao estruturadados-INFORMATICA PARA CONCURSO
Logica programacao estruturadados-INFORMATICA PARA CONCURSO
EDILENE CABRAL
 

Semelhante a Aula 1 - Programação 1 (20)

Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1
 
2 - Algoritmos e Estruturas de Dados - Algoritmo.pptx
2 - Algoritmos e Estruturas de Dados - Algoritmo.pptx2 - Algoritmos e Estruturas de Dados - Algoritmo.pptx
2 - Algoritmos e Estruturas de Dados - Algoritmo.pptx
 
Aula 1
Aula 1Aula 1
Aula 1
 
01 fundamentos de programação
01   fundamentos de programação01   fundamentos de programação
01 fundamentos de programação
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
utilizando os recuros do google
utilizando os recuros do googleutilizando os recuros do google
utilizando os recuros do google
 
Olimpíada de matemática
Olimpíada de matemáticaOlimpíada de matemática
Olimpíada de matemática
 
Modulo 2
Modulo 2Modulo 2
Modulo 2
 
Testes de Software - Módulo 2
Testes de Software - Módulo 2Testes de Software - Módulo 2
Testes de Software - Módulo 2
 
Algop - aula 03
Algop - aula 03Algop - aula 03
Algop - aula 03
 
Curso Scratch 2015
Curso Scratch 2015Curso Scratch 2015
Curso Scratch 2015
 
Logica programacao estruturadados-INFORMATICA PARA CONCURSO
Logica programacao estruturadados-INFORMATICA PARA CONCURSOLogica programacao estruturadados-INFORMATICA PARA CONCURSO
Logica programacao estruturadados-INFORMATICA PARA CONCURSO
 
Pj 2009 avioes_overflow
Pj 2009 avioes_overflowPj 2009 avioes_overflow
Pj 2009 avioes_overflow
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Curso de Raciocínio Lógico p/ Concurso TJ-PI
Curso de Raciocínio Lógico p/ Concurso TJ-PICurso de Raciocínio Lógico p/ Concurso TJ-PI
Curso de Raciocínio Lógico p/ Concurso TJ-PI
 
Algoritmos e Programação_01
Algoritmos e Programação_01Algoritmos e Programação_01
Algoritmos e Programação_01
 
Curso Informática p/ Concurso Polícia Civil PE
Curso Informática p/ Concurso Polícia Civil PECurso Informática p/ Concurso Polícia Civil PE
Curso Informática p/ Concurso Polícia Civil PE
 

Mais de Isaac Barros

Mais de Isaac Barros (10)

Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1
 
Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1
 
Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Aula 11 strings - Programação 1
Aula 11 strings - Programação 1
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1
 
Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1
 
Aula 7 decisao - Programação 1
Aula 7 decisao - Programação 1Aula 7 decisao - Programação 1
Aula 7 decisao - Programação 1
 
Aula 6 - Programação 1
Aula 6 - Programação 1Aula 6 - Programação 1
Aula 6 - Programação 1
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1
 
Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1
 

Aula 1 - Programação 1

  • 1. Programação I Prof. Rodrigo Paes rodrigo@ic.ufal.br
  • 2. Instituto de Computação – UFAL “Make the Future - A Career in Computer Science” rodrigo@ic.ufal.br
  • 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. 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. Instituto de Computação – UFAL Avaliação  Exercícios  Provas  Trabalho rodrigo@ic.ufal.br
  • 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. 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
  • 9. Instituto de Computação – UFAL Por que programar pode ser divertido?  Nós sempre adoramos “fazer as coisas” rodrigo@ic.ufal.br
  • 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. Instituto de Computação – UFAL Por que programar pode ser divertido?  Somos desafiados por problemas interessantes a todo momento rodrigo@ic.ufal.br
  • 12. Instituto de Computação – UFAL Por que programar pode ser divertido?  Estamos sempre aprendendo rodrigo@ic.ufal.br
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Instituto de Computação – UFAL Como entender um algoritmo?  Vocabulário  Fluxo  Estado  Depois aprenderemos outros princípios rodrigo@ic.ufal.br
  • 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. 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. 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. 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. 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. 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. 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