Prévia do material em texto
Programação 1A Ciências Atuariais 2024.1 Professor Lucas Sampaio (lsl4@cin.ufpe.br) Objetivos Introduzir conceitos e técnicas fundamentais de programação Usar a linguagem Python para expressar os conceitos e técnicas Atenção! Não é um curso de Python. Foco nos fundamentos da programação com computadores. Conteúdo Programático Ementa Problemas e soluções. Noções de Algoritmos e Sub-algoritmos. Instruções condicionais e incondicionais. Iteração e Recursão. Conceito de programação. Estruturas e tipos de dados. Procedimentos (iterativos e recursivos). Matrizes, registros e arquivos. Estruturas Dinâmicas. Ambientes IDEs: VS Code, PyCharm, etc Notebook Jupyter com Google Colab Árbitro Virtual Beecrowd (listas de exercícios) Conteúdo Programático 1. Breve História da Computação 2. Algoritmos • Conceito de algoritmo • Representação de algoritmos • Estrutura básica de algoritmo Conteúdo Programático 3. Noções básicas de Linguagens de Programação • Tipos primitivos de dados • Variáveis e atribuição • Operadores aritméticos e booleanos • Instruções de entrada e saída • Instruções sequenciais • Estruturas Condicionais (if, else, else if) • Estruturas de repetição (while, for, do while) Conteúdo Programático 4. Linguagens de Programação • Ambiente de programação • Funções matemáticas pré-definidas • Manipulação de Strings • Tipos Abstratos de Dados • Estruturas de Dados (listas, arrays, matrizes) • Modularização de programas: procedimentos, funções • Manipulação de arquivos Conteúdo Programático Conceitos de programação Operadores aritméticos, lógicos e relacionais Comandos condicionais Laços de repetição Strings, listas e tuplas Dicionários Funções e recursão Manipulação de arquivos Lista de Exercícios 1 Lista de Exercícios 2 Lista de Exercícios 3 Lista de Exercícios 4 Lista de Exercícios 5 Lista de Exercícios 6 Metodologia Listas de exercícios Focadas em cada assunto conforme cronograma Ambiente Beecrowd: https://judge.beecrowd.com/pt/ Google Classroom Aulas síncronas e presenciais Aulas expositivas e dialogadas Aulas de acompanhamento (dúvidas e resoluções de exercícios) Com chamada Avaliação Listas: 40% da nota As listas devem ser entregues até data às 23:59 A correção é realizada pelo árbitro virtual no ambiente Beecrowd Avaliação (prática???): 60 % da nota Informações sobre a disciplina Ambiente Classroom Todo o material didático da disciplina O cronograma atualizado com todas as datas Turma: Bibliografia básica Bibliografia Básica 1. BROOKSHEAR, J. Glenn. Ciência da computação: uma visão abrangente . 7.ed. Porto Alegre: Bookman, 2005. 2. LOPES, Anita; GARCIA, Guto. Introdução à programação: 500 algoritmos resolvidos. Rio de Janeiro: Editora Campus, 2002. 3. SEBESTA, Robert W. Conceitos de linguagens de programação. 5.ed. Porto Alegre: Bookman, 2003. Bibliografia complementar 1. CORMEN, Thomas H. Algoritmos: teoria e prática. Rio de Janeiro: Editora Campus, 2002. 2. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lógica para desenvolvimento de programação de computadores . 21. ed. São Paulo: Érica, 2008. 3. OLIVEIRA, Ulysses de. Introdução à programação. João Pessoa: Editora Universitária, 2000. 4. SCHILDT, Herbert. C completo e total. 3.ed., rev. e atual. São Paulo: Pearson Education do Brasil, 1997. 5. ZIVIANI, Nivio. Projeto de algoritmos: com implementações em Java e C++ . São Paulo: Cengage Learning, 2007. Outras referências... Li nk : ht tp s: //w w w .u fs m .b r/a pp /u pl oa ds /s ite s/ 67 9/ 20 19 /0 8/ Ap os til a_ Py th on _v _1 .p df Referência de exercícios... https://judge.beecrowd.com/ Acesso a turma para lista de nivelamento https://judge.beecrowd.com/ Acesso a turma para lista de nivelamento https://judge.beecrowd.com/ Acesso a turma para lista de nivelamento https://judge.beecrowd.com/ Referência de exercícios... https://wiki.python.org.br/ListaDeExercicios Conteúdos Digitais Disponíveis Gratuitamente https://www.w3schools.com/python/default.asp https://ricardoduarte.github.io/python-para-desenvolvedores https://www.py4e.com/ Para a dinâmica de aprendizagem da disciplina funcionar, é importante realizar as práticas e exercícios passados em sala (não deixem acumular atividades). Quem deixa acumular as atividades, tende a ter um desempenho inferior. Organizem seu tempo entre as disciplinas. Boas práticas Onde a tecnologia está presente no nosso cotidiano? Contextualização Contextualização Contextualização Contextualização Contextualização Breve história da computação • O Ábaco (3500~2000 a.c) foi o primeiro dispositivo que permitia realizar cálculos com grandes números. • Ainda muito utilizado em certos centros de ensino ao redor do mundo. História do computador História do computador • Em 1801, na França, durante a revolução industrial, Joseph Marie Jacquard (1752- 1834) inventou um tear mecânico controlado por grandes cartões perfurados. • Foi tamanho o sucesso que Jacquard foi quase morto quando levou o tear para Lyon. As pessoas tinham medo que o tear lhes fizesse perder o emprego. • Em 7 anos, já haviam 11 mil teares desse tipo operando na França. História do computador • Charles Babbage iniciou um projeto de uma máquina analítica (1834), que seria programável e permitiria a execução de qualquer cálculo matemático. • O projeto, totalmente mecânico, era composto de uma memória, um engenho central, engrenagens e alavancas usadas para a transferência de dados da memória para o engenho central e dispositivos para entrada e saída de dados. História do computador • O inglês George Boole estabelece a lógica binária para armazenar informações (1847). As gerações de computadores eletrônicos... • Em 1943, o inglês Alan Turing constrói o Colossus que inicia a primeira geração de computadores modernos, que utilizam válvulas. • A válvula é um tubo de vidro, similar a uma lâmpada fechada sem ar em seu interior, ou seja, um ambiente fechado a vácuo, e contendo eletrodos, cuja finalidade é controlar o fluxo de elétrons. • As válvulas aqueciam bastante e costumavam queimar com facilidade. Histórico (1ª geração) • O armazenamento dos dados era realizado em cartões perfurados, que depois passaram a ser feitos em fita magnética. • Um dos representantes desta geração é o ENIAC (1945). Ele possuía 17.468 válvulas, pesava 30 toneladas, tinha 180 m² de área construída, sua velocidade era da ordem de 100 kHz e possuia apenas 200 bits de memória RAM. Histórico (1ª geração) Histórico (1ª geração) Histórico (1ª geração) • ENIAC: Eletronic Numerical Integrator and Computer (Computador e Integrador Numérico Eletrônico). • Construído na Universidade da Pensilvânia; • Primeiro computador digital de propósito geral do mundo; • Desenvolvido par realizar cálculos balísticos durante a segunda guerra mundial. • Sem o computador, os cálculos com trajetória e alcance eram feitos por mais de 200 pessoas utilizando calculadoras de mesa: • Trabalho chegava a durar horas e até mesmo dias, para apenas uma arma . Histórico (1ª geração) • A segunda geração de computadores foi marcada pela substituição da válvula pelo transistor. • O transistor revolucionou a eletrônica em geral e os computadores em especial. • Eles eram muito menores do que as válvulas a vácuo e tinham outras vantagens: não exigiam tempo de pré-aquecimento, consumiam menos energia, geravam menos calor e eram mais rápidos e confiáveis. • No final da década de 50, os transistores foram incorporados aos computadores. Histórico (2ª geração) • Na segunda geração o conceito de Unidade Central de Procedimento (CPU), memória, linguagem de programação e entrada e saída foram desenvolvidos. Histórico (2ª geração) https://medium.com/trainingcenter/a- arquitetura-de-von-neumann-121489873fd4• O tamanho dos computadores diminuiu consideravelmente. • Outro desenvolvimento importante foi a mudança da linguagem de máquina para a linguagem Assembly. • Em seguida vieram as linguagens de alto nível, como Fortran e Cobol. No mesmo período surgiu o armazenamento em disco, complementando os sistemas de fita magnética e possibilitando ao usuário acesso rápido aos dados desejados. Histórico (2ª geração) Histórico (2ª geração) • A terceira geração de computadores foi marcada pela utilização dos circuitos integrados, feitos de silício. • Também conhecidos como microchips, eles eram construídos integrando um grande número de transistores, o que possibilitou a construção de equipamentos menores e mais baratos. • Mas o diferencial dos circuitos integrados não era o apenas o tamanho, mas o processo de fabricação que possibilitava a construção de vários circuitos simultaneamente, facilitando a produção em massa. Histórico (3ª geração) • Um computador que representa esta geração foi o IBM’s System/360, voltado para o setor comercial e científico (1964). • Ele possuía uma arquitetura plugável, na qual o cliente poderia substituir as peças que dessem defeitos. Além disso, um conjunto de periféricos eram vendidos conforme a necessidade do cliente. • A IBM, que até então liderava o mercado de computadores, passou a perder espaço quando concorrentes passaram a vender periféricos mais baratos e que eram compatíveis com sua arquitetura. • No final desta geração já começaram a surgir os computadores pessoais. Surgimento das linguagens de alto nível. Histórico (3ª geração) Histórico (3ª geração) Histórico (3ª geração) Histórico (3ª geração) • Os computadores da quarta geração são reconhecidos pelo surgimento dos processadores (1971) - unidade central de processamento. • Os sistemas operacionais como MS-DOS, UNIX, Apple’s Macintosh foram construídos. • Linguagens de programação orientadas a objetos como C++ e Smalltalk foram desenvolvidas. • Discos rígidos eram utilizados como memória secundária. • Impressoras matriciais, e os teclados com os layouts atuais foram criados nesta época. Histórico (4ª geração ???) • Os computadores eram mais confiáveis, mais rápidos, menores e com maior capacidade de armazenamento. • Esta geração é marcada pela venda de computadores pessoais. Histórico (4ª geração ???) • Os computadores da quinta geração usam processadores com milhões de transistores. • Nesta geração surgiram as arquiteturas de 64 bits, os processadores que utilizam tecnologias RISC e CISC, discos rígidos com capacidade superior a 10 TB, 64 GB de RAM, pen-drives com mais de 2TB, entre outros avanços. Histórico (5ª geração ???) • A quinta geração está sendo marcada pela inteligência artificial e por sua conectividade. • A inteligência artificial pode ser verificada em jogos e robôs ao conseguir desafiar a inteligência humana. • A conectividade é cada vez mais um requisito das indústrias de computadores. • Hoje em dia, queremos que nossos computadores se conectem ao celular, a televisão e a muitos outros dispositivos como geladeira e câmeras de segurança. Histórico (5ª geração ???) Lei de Moore e os seus desafios... Lei de Moore e os seus desafios... • Tamanho dos transistores x leis da física • Custo de produção • Problemas de dissipação de calor • Miniaturização x Integridade do sinal Lei de Moore e os seus desafios... Exercício Programação 1A Ciências Atuariais 2024.1