Sei sulla pagina 1di 42

Programao de Computadores I Cincia da Computao

Prof. Aline Paes / alinepaes@ic.uff.br

Apresentao do curso

Apresentaes
Quem sou eu?
Aline Paes Doutora em Inteligncia Artificial, COPPE/UFRJ, com estgio de doutorado no Imperial College London www.ic.uff.br/~alinepaes professora do IC desde 03/2013 professora desde 02/2006

Apresentaes
Quem so vocs?
O que sabe de computao ? O que sabe de programao ? Expectativas para o curso de Cincia da Computao ? Expectativas para a disciplina ?

O que vocs esperam do curso?

Horrio e Local
Quartas: sala 101-H Sextas: laboratrio (por enquanto apenas na sala) Monitoria
Sala 321 do bloco E Alexandre Sander e Marcelo Almeida Verificar os dias e horrios disponveis

Comunicao
Grupo no Facebook: TODOS devem se inscrever
e participar ativamente Prog1 B1 Computao UFF 2013-2
https://www.facebook.com/groups/prog1.b1.comp.uff.2013.2/

Slides das aulas Avisos gerais Dvidas, discusses tpicos de aula, trabalhos, exerccios Arquivos e links interessantes

Regulamento da UFF
Presena
75% das aulas (Art. 80, 14) Nenhuma falta ser abonada (Art. 80, 15)

Segunda Chamada
No ser permitida a Avaliao de Aprendizagem em Carter Excepcional (i.e., 2 chamada) Com exceo dos casos citados no Art. 87 (congressos, competies ou servio militar), de acordo com os procedimentos do Art. 88 (aviso na coordenao do curso com 30 dias de antecedncia).

Avaliao
Duas provas individuais, sem consulta + trabalho em grupo Mdia final:
4 X P1 + 4 X P2 + 2 X Trab

Aprovado
(presena >= 75%) E (Mdia >= 6.0)

Verificao suplementar
(presena >= 75%) E (4.0 <= Mdia < 6.0) ser aprovado na VS o aluno que tirar >= 6.0

Reprovado
caso contrrio

Trabalho
Grupos de 4 componentes
Nota s contar para aqueles que ficarem com mdia das provas >= 4.0 Constitudos na primeira semana de aula Mesma formao at o final do curso Entreguem por e-mail (assunto: Prog I - Grupo) o nome e o e-mail de cada participante do grupo.

Autoavaliao
No final do curso, cada membro avaliar todos os membros do grupo Essa informao ser usada na distribuio das notas

Trabalho
Objetivo: Implementar um jogo
Combinar o tema escolhido para o jogo Os grupos podem optar por implementar jogos j conhecidos ou criar seus prprios jogos Cdigo fonte deve ser entregue no final Nota final ser definida de acordo com: escolha do jogo cdigo fonte relatrios apresentao

Atraso na entrega do trabalho ter 1 ponto de multa por dia

Trabalho
Dois seminrios sero feitos durante o curso:
1 seminrio Explicar como ser o jogo Apresentar desenhos e algoritmos detalhando a dinmica do jogo 2 seminrio Apresentar o jogo funcionando Discutir as dificuldades encontradas durante o desenvolvimento

Datas
Primeira avaliao: 01/11 Segunda avaliao: 18/12 Entrega dos trabalhos: at 30/12 Vista de provas: 08/01 Apresentao dos trabalhos: 10/01 Avaliao suplementar: 15/01 Dias sem aulas:
23/10 e 25/10 (semana acadmica)

Exerccios
Sero apresentados exerccios ao final de cada tpico, nos slides de aula Recomendo fortemente que eles sejam feitos aps cada aula No para entregar: os exerccios so para vocs! No teremos gabaritos de exerccios: os alunos devem tirar suas dvidas pessoalmente ou por Facebook / email

Regras do Jogo
Participar das aulas com moderao
Dvidas compartilhadas com a turma No conversar assuntos aleatrios durante a aula

No assinar presena por colegas No colar ou dar cola em provas e trabalhos No plagiar trabalhos
e dar crdito apropriado quando usar trabalhos de terceiros

No sobrecarregar os colegas do grupo Estar presente em pelo menos 75% das aulas

Objetivos
Desenvolver pensamento computacional Solucionar problemas Escrever e entender cdigo Programar em Java
Criada pela SUN (hoje Oracle) em 1995 Muito popular Usada para manipulao de dados na internet e em dispositivos mveis Fcil partir para outras linguagens, se necessrio Segura til: muito cdigo reusvel disponvel

Objetivos
Escrever (computacionalmente) Ler (computacionalmente) Partir da descrio de um problema em algum domnio e mapear a soluo dele dentro dos domnios da computao Comear a pensar como um cientista da computao

Bibliografia

O que vamos aprender aqui?


Programao de computadores O que um progama? Por que precisamos deles?

Um pouco de histria
2400 AC: baco
Primeira tentativa de se criar um artefato capaz de contar Criada por Blaise Pascal, aos 19 anos Uma das primeiras mquinas mecnicas de calcular

1642: Pascalina

1822: Primeiro computador mecnico


Projetado por Charles Babbage mas no terminado devido falta de recursos Posteriormente, o seu projeto foi construdo e exposto em um museu

Um pouco de histria
1938: Z1
o primeiro computador programvel Muito foi perdido por causa da II Guerra Mundial 1943: Colossus Usado pelos britnicos para decodificar mensagens alems

Um pouco de histria
1946: ENIAC
Considerado o primeiro computador eletrnico de propsito geral Construdo na Universidade da Pensilvnia Ocupava uma sala inteira Pesava 30 toneladas Consumia 200 kw de potncia Entrada: leitora de cartes perfurados Sada: perfuradora de cartes

Um pouco de histria
1973: Alto primeiro computador pessoal construdo pela Xerox,

mas nunca produzido em


massa

J tinha mouse, interface grfica e sistema


operacional

As caractersticas do Alto foram incorporadas no


Macintosh

Um pouco de histria
Hoje: Computao mvel
laptop, tablet, celular Entrada: teclado, tela Sada: monitor, tela

Computadores e programas
Computador - mquina que pode executar programas Programa - sequencia bem precisa de passos que um computador deve executar Linguagem de programao: linguagem projetada para produzir programas de computadores.

Dentro dos computadores: o que eles entendem?


Para que o computador faa o que voc quer (e ele pode fazer (quase) tudo que voc mandar) necessrio falar a linguagem dele Qual a linguagem que o computador fala?

Bits and pieces


Your computer successfully creates the illusion that it contains photographs, letters, songs, and movies. All it really contains is bits, lots of them, patterned in ways you can't see. Your computer was designed to store just bits all the files and folders and different kinds of data are illusions created by computer programmers. (Hal Abelson, Ken Ledeen, Harry Lewis, in "Blown to Bits")

Instrues no computador
Operaes no computador so grupos de bits
0 ou 1 ligado ou desligado

Microprocessador
Move o contedo de grupos de bits adiciona pares de grupos de bits subtrai um grupo de bits de outro compara pares de grupos de bits etc

Bits and pieces


There are only 10 different kinds of people in the world: those who know binary and those who don't. - Annimo 1234 = 10011010010 = 4D2 A = 65 (decimal) = 01000001

Linguagens de montagem
Usa smbolos mais amigveis aos seres humanos para representar as instrues A memria do computador e os registradores tambm recebem nomes simblicos No so bits, mas ainda requerem um nvel de detalhe muito prximo ao que a mquina de fato faz

Assembler
Soma de dois nmeros

Linguagens de programao de alto nvel


Bem prximas da linguagem humana O programador pode se focar no que ele quer que o computador faa, ao invs de ter que detalhar como o computador executar cada instruo Abstrao Um outro programa (compilador / interpretador) se encarregar de traduzir seu programa para a linguagem de mquina

Programao
It has often been said that a person does not really understand something until he teaches it to someone else. Actually a person does not really understand something until after teaching it to a computer, i.e., express it as an algorithm." (Donald Knuth, in "American Mathematical Monthly," 81) "If you want something done right, write a program.", (Knuth's rule.)

Programao
Writing software, computer programs, is a lot like writing down the steps it takes to do something. Descreva como fazer um misto quente.

Um programa em Java
public class HelloPrinter { public static void main(String[] args) { System.out.println(Hello, World!); } }

Um programa em Java
public class HelloPrinter { public static void main(String[] args) { System.out.println(Hello, World!); } }
O que eu quero que seja feito

Um programa em Java
public class HelloPrinter { public static void main(String[] args) { System.out.println(Hello, World!); } }
Abstrao de quem vai executar a tarefa para mim

Um programa em Java
public class HelloPrinter { public static void main(String[] args) { System.out.println(3 + 4 + 5); } }

Um programa em Java
public class HelloPrinter { public static void main(String[] args) { System.out.println(3 + 4 + 5); } }

Erros
public class HelloPrinter { public static void main(String[] args) { System.ouch.println(Hello, world); } }

Erro?
public class HelloPrinter { public static void main(String[] args) { System.out.println(Helo, world); } }

Erro?
public class HelloPrinter { public static void main(String[] args) { System.out.println(1/0); } }

Apresentao da Disciplina de Programao de Computadores I Slides baseados em: - Curso de Programao I do Prof. Leonardo Murta - NYTimes Computing Timeline - Computational Thinking, Jeannette M. Wing Aline Paes / alinepaes@ic.uff.br

Potrebbero piacerti anche