Fundamentos de Programação Turma CI-240-EST Josiney de Souza josineys@inf.ufpr.br
Fundamentos de Programação CI-240-EST Tópicos da disciplina: Apresentação: modelo de um computador, algoritmos, programas, linguagens de programação Primeiros elementos da linguagem Python Estruturas de Controle Condicionais Estruturas de Controle de Repetição Estruturas de Dados: Listas Funções Arquivos
Fundamentos de Programação CI-240-EST Bibliografia (Python): Introdução à Programação com Python (Menezes, N.N.C.) Aprendendo Python (Lutz, M. & Ascher, D.) Bibliografia auxiliar: Algoritmos e Programação - Teoria e Prática (Medina, M. & Fertig, C.) Notas de aula de Algoritmos e Estruturas de Dados I (Castilho, Silva, Weingaertner) - http://www.inf.ufpr.br/cursos/ci055/apostila.pdf
Fundamentos de Programação CI-240-EST Material de apoio: Notas de aulas Python (http://www.inf.ufpr.br/nicolui/grad/ci240/docs/n otasaula/notas.pdf) Guia de referência do Python Site (https://docs.python.org/3/tutorial/) Documentação Google Outro material...
Fundamentos de Programação CI-240-EST Avaliação: 3 provas e 1 trabalho Média = 0,2*(P1 + P2 + P3) + 0,4*TRAB Aprovado: Média 70 Exame: 40 Média < 70 Reprovado: Média < 40
Fundamentos de Programação CI-240-EST Segunda chamada: 25/11: Substitui provas 1 e 2 27/11: Substitui prova 3 Casos cobertos pela resolução CEPE 37/97 Preencher formulário de segunda chamada Anexar documento comprovante Entregar na recepção do DInf, ou Entregar ao professor (gabinete ou sala de aula)
Fundamentos de Programação CI-240-EST Casos não cobertos pela CEPE 37/97: Se faltou em duas ou mais provas Reprovado Final/Exame como substitutiva Exame substitui a prova perdida Se a média parcial entre 40 e 69 Soma-se a média parcial com a Final Calcula-se a média final
Fundamentos de Programação CI-240-EST Presença: Lista de presença Máximo de 25% de faltas Total de aulas: 34 Mínimo de presença: 25,5 26 Máximo de faltas: 8,5 8 Alunos nas turmas certas 26/08 turmas ajustadas
Fundamentos de Programação CI-240-EST Calendário: 03/08 Início das aulas do semestre 05/08 Início das aulas 26/08 Regularização das matrículas 27/11 Último dia letivo 30/11 Último dia letivo do semestre 08-14/12 Exames
Fundamentos de Programação CI-240-EST Avaliação: Prova 1: 28/08 (sexta-feira) Prova 2: 18/09 (sexta-feira) Prova 3: 09/10 (sexta-feira) Segunda Chamada 25/11: provas P1 e P2 (quarta-feira) 27/11: prova P3 (sexta-feira) Final/Exame: 09/12 (quarta-feira)
Fundamentos de Programação CI-240-EST Outras informações: IDLE: Ambiente Integrado de Desenvolvimento (IDE) Linguagem Python Pode trazer e usar: Computador Celular Tablet
Fundamentos de Programação CI-240-EST Mais informações: Página da disciplina: http://www.inf.ufpr.br/cursos/ci240 http://www.inf.ufpr.br/josineys/ci240est Informações dos slides Recados e avisos E-mail: josineys@inf.ufpr.br
Agenda do Dia Aula 1 (05/08/15) Revisão de Modelo de um Computador Problemas e Soluções Algoritmos Programas Linguagens de Programação
Modelo von Neumann Computador de propósito geral: Programa armazenado: programa em memória, assim como os dados Podem ser modificados Podem ser substituídos Componentes: unidade central de processamento, memória, entrada e saída
Modelo von Neumann Unidade Central de Processamento / Central Processing Unit (CPU) Memória / Memory Entrada / Input Saída / Output
Modelo von Neumann Registradores Unidade de Lógica e Aritmética Unidade Central Memória / Memory Entrada / Input Saída / Output
Modelo von Neumann: Hardware Unidade Central de Processamento (CPU): Unidade de Controle: busca programa na memória, executa instrução após instrução Unidade de Lógica e Aritmética: operações sobre números e endereços Registradores: memória da CPU, guarda dados Status de controle de execução Contador de programa Valores a calcular
Modelo von Neumann: Hardware Outros componentes: Memória: memória principal ou RAM. É volátil, possui espaços endereçados. Expressa em bytes (MB, GB) Entrada: dispositivo para inserir dados no processamento. Exemplo: teclado (entrada padrão), mouse/rato Saída: dispositivo para exibir dados do processamento. Exemplo: tela (saída padrão), impressora, arquivos
Problemas e Soluções No mundo real temos: Problemas: representam situações do mundo físico que podem ser transformadas em modelos que os representem Soluções: são as respostas possíveis para problemas do mundo físico; utilizam métodos e cálculos para resolução Problema Físico Modelagem Modelo Matemático Resolução Solução
Problemas e Soluções Tanto problemas quanto soluções: Pode existir mais de uma solução para os problemas Algumas soluções são melhores que outras sob algum aspecto Alguns problemas são casos particulares de outros similares Sempre que possível, é melhor resolver o problema mais genérico
Problemas e Soluções Exemplos de problemas: Contar o número de pessoas em um evento Trocando os quatro pneus Qual a melhor rota de ônibus?
Contando Pessoas em um Evento Solução 1: contar pessoa por pessoa, um por vez Não contar a mesma pessoa mais de uma vez Não se esquecer de contar alguém Vantagens: simples, fácil de executar, não exige conhecimento prévio, sem recursos extras Desvantagens: tempo de contagem (se sala for grande e estiver cheia), altas chances de errar E se fosse em um comício?
Contando Pessoas em um Evento Solução 2: contar carteiras vazias Vantagens: simples, fácil de executar, sem recursos extras Desvantagens: requer saber quantas carteiras há, tempo de contagem (se sala for grande e estiver quase vazia) E se fosse em um comício?
Contando Pessoas em um Evento Solução 3: contagem por estatística Vantagens: mais rápido que outras soluções para públicos maiores Desvantagens: deve-se saber a metragem da praça de antemão e estimar pessoas por metro quadrado, número impreciso
Contando Pessoas em um Evento Solução 4: roletas/catracas Vantagens: número exato Desvantagens: instalação dos equipamentos, ambiente controlado (evitar de burlar catracas)
Contando Pessoas em um Evento Outras soluções: Solução 5: filas organizadas e de mesmo tamanho Solução 6: trabalho distribuído em paralelo (cada primeiro conta sua fila e ao final soma-se os valores de cada fileira) Solução 7: trabalho distribuído binariamente (todos se levantam e se atribuem o número 1; aos pares, somam-se os números; 1 o guarda, outro se senta) Quais as vantagens e desvantagens?
Algoritmo Um algoritmo é: Uma sequência finita de instruções Quando executado, produz uma solução Registra-se uma solução para um problema Outra pessoa pode executar Exemplo: fazer um bolo
Programa Um programa é: Um algoritmo de forma detalhada tal qual o necessário Bolo de chocolate: claras em neve? Pegue todos os ingredientes? Programa de computador, linguagem de computador Quem faz vai entender? Computador vai entender?
Modelo von Neumann: Software Atualmente, há softwares para: Navegar na Internet: Firefox, Chrome, IE Suite de escritório: Microsoft Office, LibreOffice Entretenimento: VLC, emuladores Sistema Operacional: Windows, Mac OS, Linux Como são feitos?
Modelo von Neumann: Software Usamos a programação para criar um programa através de algoritmos Um algoritmo deve passar por algumas fases antes de se tornar programa Escrevemos o algoritmo em uma linguagem O algoritmo deve ser processado, adaptado para o computador Em linguagem do computador, o programa deve ser carregado em memória
Modelo von Neumann: Software Linguagens existentes: Linguagem natural Linguagem de alto nível Linguagem de baixo nível Linguagem de máquina
Modelo von Neumann: Software Linguagens existentes: Linguagem natural: falada e escrita pelas pessoas. Exemplo: português, inglês, alemão Linguagem de alto nível: subconjunto da linguagem natural. Códigos legíveis aos humanos usados para programar. Exemplo: C, C++, Java, Pascal, Fortran, Cobol
Modelo von Neumann: Software Linguagens existentes: Linguagem de baixo nível: subconjunto da linguagem natural. Menos legível, mais próximo da linguagem de máquina. Exemplo: Assembly Linguagem de máquina: linguagem entendível pelo computador, incompreensível para humanos
Modelo von Neumann: Software Linguagem Natural Linguagem de Alto Nível Linguagem de Baixo Nível 1 2 Linguagem de Máquina Linguagem de Máquina 3 4 Memória
Modelo von Neumann: Software Componentes de software: 1: Compilador (Compiler): transforma o código-fonte de linguagem de alto nível para código objeto 2: Montador (Assembler): transforma o código-fonte de linguagem de baixo nível para código objeto 3: Ligador (Linker): transforma o código objeto para formato executável 4: Carregador (Loader): carrega arquivos em formato executável para execução
Modelo von Neumann: Software Normalmente: Não é necessário fazer todos os passos Os compiladores compilam e ligam os arquivos automaticamente Com Python, temos uma linguagem interpretada: Não possuem compilação Não geram código objeto Existe um programa que lê o código-fonte, interpreta a instrução e ele mesmo a executa
Próxima Aula Primeiros elementos de Python