Baixe o app para aproveitar ainda mais
Prévia do material em texto
Computação 1 2016.1 Professora: Luciana Nascimento lmnascimento@cos.ufrj.br Aula 1 Aulas • Período Letivo 2016.1: 04/04/2016 a 06/08/2016 • 2 aulas por semana: • 1 aula teórica (T) • 1 aula prática (P, em laboratório) • Horários de aula: Turma Horários Salas EE1 e EE2 Seg: 08-10 (P) Ter: 10-12 (T) A204 H228 EB2 Seg: 10-12 (P) Ter: 13-15 (T) A204 A203 Aulas – Localização das Salas H228 A204 A203 Método de Avaliação • Média final mínima para aprovação: 5,0 • Frequência mínima: 75% • Prova 1 e Prova 2 • Individuais escritas • Aluno que faltar a UMA das provas tem direito à uma segunda chamada • Prova 3 final: Para quem não alcançar a nota mínima. Substitui a menor nota obtida nas provas P1 e P2. • Média Final: • Provas: 75% • Atividades em laboratório e trabalhos: 25% Que assunto vamos trabalhar em Computação I ? Lógica de Programação de Computadores Por que aprender lógica de programação? • Para resolver problemas de forma rápida e com precisão. • Exemplo lúdico e simples: Imagens: Material prof. Leonardo Carvalho Computador e Conceitos Preliminares Computação • Computação: Motivação para Computação: A necessidade de Calcular! • Primeiros a CALCULAR: pastores de ovelhas • Técnica utilizada: empilhamento de pedras para controle da quantidade de ovelhas do rebanho Calculus – lat. pedrinha Motivação para Computação: A necessidade de Calcular! Primeira tentativa bem sucedida de criação de uma máquina de contar: ábaco (China, cerca de 2500 a.C.) Motivação para Computação: A necessidade de Calcular! Bastões de Napier Régua de Cálculo - o primeiro computador analógico Primeiro instrumento moderno de calcular: Máquina de Pascal Gerações do Computador • Antes de 1943: Geração “zero” (baseado em engrenagens) • 1943-1959 Primeira Geração - Computadores à Válvulas • 1959-1964 Segunda Geração - Transístores e Circuitos Impressos • 1964-1972 Terceira Geração - Circuitos Integrados • 1972- ? Quarta Geração LSI (500 partes), VLSI (10000) • (Alguns dizem que paralelismo e VLSI são a quinta geração) O Computador • É uma maquina que manipula dados a partir de uma lista de instruções. • Arquitetura básica (Von Neumann): • Internamente os computadores modernos podem ser caracterizados por três partes distintas, a unidade central de processamento (UCP), a memória (MEM) e os dispositivos de entrada e saída (E/S). O que é necessário para criar um Programa de Computador? • Criar um programa de computador: • Analisar e entender o problema que se quer resolver • Inventar ou escolher uma solução • “Dizer” ao computador o que fazer para resolver o problema • É preciso “pensar da mesma forma que o computador” • E a base para isso é a lógica de programação • É preciso “falar a mesma língua do computador”. • Para isso utilizamos as linguagens de programação Lógica de Programação • Lógica: • Arte de pensar corretamente • Visa colocar ordem no pensamento • Representar de forma mais formal do pensamento • Programação (de computadores): • Instruir, dar ordens • Lógica de programação: • Conjunto de técnicas para encadear pensamentos a fim de alcançar soluções que resolvam problemas com qualidade. Lógica de Programação • INSTRUÇÃO: • Cada um dos passos, cada uma das ações a tomar (obedecendo a sequência lógica) para ir resolvendo o problema, ou para ir executando a tarefa. • Em informática, é a informação que indica a um computador uma operação elementar a executar • Ex.: “somar”, “subtrair”, “comparar se é maior”, etc • Uma só instrução não resolve problemas. É necessário: • Executar um conjunto de instruções • Executar em uma sequência lógica Lógica de Programação • EXEMPLO: para “fazer omelete” • Instruções: “quebrar ovos”, “bater ovos”, “pôr sal”, “ligar fogão”, “pôr óleo na frigideira”, “pôr frigideira no fogo”, “fritar ovos batidos”, etc... • Quanto às instruções isoladas: • Só “quebrar ovos”, ou só “pôr óleo na frigideira”, não é suficiente para cumprir a tarefa “fazer omelete” • Quanto à sequência lógica: • Se executarmos “fritar ovos batidos” antes de “bater ovos”, ou pior, antes de “quebrar ovos”, não iremos cumprir a tarefa “fazer omelete” A aplicação da lógica de programação produz algoritmos Lógica de Programação Imagine que uma pessoa decidia ir de táxi a uma reunião de negócios. Monte uma sequência de ações para que ela chegue ao prédio onde vai ocorrer a reunião. a)Entrar no prédio da reunião; b)Sair do táxi; c)Acenar para que o táxi pare; d)Perguntar o preço da corrida; e)Informar o destino ao motorista; f)Esperar o táxi; g)Pagar ao taxista; h)Entrar no táxi. Esperar o táxi Acenar para que o táxi pare Entrar no táxi Informar o destino ao motorista Perguntar o preço da corrida Pagar ao taxista; Sair do táxi; Entrar no prédio da reunião Algoritmo • Sequencia lógica e finita de instruções que devem ser executados para atingir um objetivo bem definido. • Exemplo básico: receita de bolo. • Algoritmos deve especificar ações claras e precisas, que a partir de um estado inicial, produzem um estado final bem definido. Algoritmo - Exemplo Um motorista que necessita efetuar a troca de um pneu furado segue uma rotina para realizar essa tarefa: 1. Verifica qual pneu está furado 2. Posiciona o macaco para levantar o carro 3. Pega o estepe 4. Solta os parafusos 5. Substitui o pneu furado 6. Recoloca os parafusos 7. Desce o carro 8. Guarda o macaco e o pneu furado Você sugeriria alguma mudança? Algoritmo • Algoritmo para trocar uma lâmpada: 1. Pegue uma escada; 2. Posicione a escada embaixo da lâmpada; 3. Pegue uma lâmpada nova; 4. Suba na escada; 5. Retire a lâmpada velha; 6. Coloque a lâmpada nova. Essa é a única forma de trocar uma lâmpada? Algoritmo • Ex.: Outro algoritmo para trocar uma lâmpada: 1. Pegue uma lâmpada nova; 2. Pegue uma escada; 3. Posicione a escada embaixo da lâmpada; 4. Suba na escada; 5. Retire a lâmpada velha; 6. Coloque a lâmpada nova. Essa é a única forma de trocar uma lâmpada? • Algoritmo para trocar uma lâmpada: 1. Pegue uma escada; 2. Posicione a escada embaixo da lâmpada; 3. Pegue uma lâmpada nova; 4. Suba na escada; 5. Retire a lâmpada velha; 6. Coloque a lâmpada nova. Algoritmo • Ex.: Outro algoritmo para trocar uma lâmpada: 1. Pegue uma escada; 2. Posicione a escada embaixo da lâmpada; 3. Suba na escada; 4. Grite até que alguém lhe escute e lhe traga uma lâmpada; 5. Retire a lâmpada velha; 6. Coloque a lâmpada nova. Mesmo problema, diferentes soluções... Algoritmo • Há algoritmos nos quais a execução de alguns passos pode depender de decisões a serem tomadas devido a uma ou mais condições. 1. Instrução; 2. Instrução; 3. Se <condição é verdadeira>: 3.1 Instrução 3.2 Instrução 4. Instrução; 5. ......... No exemplo dado, como você sabe se precisava trocar a lâmpada? Algoritmo Como você sabe se a lâmpada nova funcionou? • Algoritmo para trocar uma lâmpada: 1. Ligue o Interruptor; 2. Se a lâmpada não acender: 2.1 Pegue uma escada; 2.2 Posicione a escada embaixo da lâmpada; 2.3 Pegue uma lâmpada nova; 2.4 Suba na escada; 2.5 Retire a lâmpada velha; 2.6 Coloque a lâmpada nova. Algoritmo • Algoritmo para trocar uma lâmpada: 1. Ligue o Interruptor; 2. Se a lâmpada não acender: 2.1 Pegue uma escada; 2.2 Posicione a escada embaixo da lâmpada; 2.3 Pegue uma lâmpada nova; 2.4 Suba na escada; 2.5 Retire a lâmpada velha; 2.6 Coloque a lâmpada nova. 2.7 Se lâmpada nova não acende 2.7.1Desça da Escada; 2.7.2 Pegue uma lâmpada nova; 2.7.3 Suba na escada; 2.7.4 Retire a lâmpada velha; 2.7.5 Coloque a lâmpada nova. 2.7.6 Se lâmpada nova não acende ...... ....... ....... Quando vai parar?? Algoritmo • Alguns algoritmos precisam repetir instruções enquanto uma ou mais condições forem verdadeiras. 1. Instrução; 2. Instrução; 3. Enquanto <condição é verdadeira>: 3.1 Instrução 3.2 Instrução 4. Instrução; 5. ......... Algoritmo • Algoritmo para trocar uma lâmpada: 1. Ligue o Interruptor; 2. Se a lâmpada não acender: 2.1 Pegue uma escada; 2.2 Posicione a escada embaixo da lâmpada; 2.3 Pegue uma lâmpada nova; 2.4 Suba na escada; 2.5 Retire a lâmpada velha; 2.6 Coloque a lâmpada nova. 2.7 Enquanto lâmpada nova não acender: 2.7.1 Desça da Escada; 2.7.2 Pegue uma lâmpada nova; 2.7.3 Suba na escada; 2.7.4 Retire a lâmpada velha; 2.7.5 Coloque a lâmpada nova. Elabore um algoritmo que mova 3 discos de uma Torre de Hanói, que consiste em três hastes (a-b-c), que servem de suporte para 3 discos de tamanhos diferentes (1-2-3-4), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre o menor. O objetivo é transferir os três discos para outra haste. Algoritmo Informações: 4 discos 3 hastes Ações: movimentar um disco de cada vez de forma que fiquem ordenado (menor sobre o maior) Resultado: discos transferidos o ordenados para outra haste Algoritmo Algoritmo Resultado: algoritmo 1. - mover o disco 1 para a haste b 2. - mover o disco 2 para a haste c 3. - mover o disco 1 para a haste c 4. - mover o disco 3 para a haste b 5. - mover o disco 1 para a haste a 6. - mover o disco 2 para a haste b 7. - mover o disco 1 para a haste b fim algoritmo Conclusão: Objetivo da Disciplina Objetivos da Disciplina • Apresentar os fundamentos básicos da programação de computadores • Treinar o raciocínio lógico necessário para proframação • Aplicar os conceitos na prática, utilizando a linguagem Python. Ementa • Introdução à Lógica de Programação • Linguagens de Programação • Informação e Dados • Lógica, sequência lógica e instruções • Elementos de programação • O computador como calculadora • Programa armazenado • Subrotinas (funções) Ementa • Condições • Predicados e valores booleanos • O comando if • Algoritmos e estruturas de dados sequenciais • O comando while • O comando for • Strings e tuplas • Dicionários • Arquivos Ementa • Programação estruturada • Recursão • Estruturas de dados abstratas • Módulos e bibliotecas Bibliografia • Aprendendo Python David Ascher & Mark Lutz, Editora Bookman, 2ª edição, 2007, 566 páginas. • Beginning Python from Novice to Professional Magnus Lie Hetland, Apress, 2005, 640 pages. • Python Programming, an Introduction to Computer Science John Zelle, Franklin, Beedle, & Associates, 517 pages. • Programming Python Mark Lutz, O'Reilly, 2001, 1255 pages. • Python Cookbook Alex Martelli & David Ascher, O'Reilly, 2002, 575 pages. • Rapid GUI Programming with Python and Qt • Mark Summerfield. Prentice Hall, 2007, 584 pages.
Compartilhar