Licenciatura em Engenharia Multimédia Unidade Curricular Programação de Computadores I Computer Programming I Objetivos -Compreender a linguagem Python e seus fundamentos; -Entender os paradigmas de programação; -Compreender a linguagem Python como programação orientada para objetos; -Compreender o desenvolvimento das funcionalidades da linguagem Python; -Apreender a especificidade das aplicações Python aplicadas à Multimédia. Summary of objectives -Understand Python and its foundations; -Understanding programming paradigms; -Understanding Python as programming oriented to objects; -Understanding developing the features of the Python language; -Grasping the specificity of Python applications applied to Multimedia. Enquadramento: Obrigatória, 1º ano - 1º Semestre Pré-requisitos: Créditos: 6 ECTS Horas contacto Orientação tutorial (OT): Seminário (S): Teóricas (T): Prática Laboratoriais (PL): Teórico-práticas (TP): 12 h 0 0 0 48 h Contextualização Científica Python é uma linguagem interpretada, dinamicamente digitada com uma sintaxe precisa e eficiente. Python tem uma boa REPL e novos módulos que podem ser exploradas a partir do REPL com dir () e docstrings. Esta é uma razão para preferir Python em relação C, C ++ ou Java. A linguagem Python está otimizada, nos dias de hoje, para algumas áreas importantes: a) A melhor linguagem para análise aprofundada de dados científicos; b) Inteligência artificial e aprendizagem automática de máquinas; c) É uma linguagem de uso geral que pode ser empregada em vários tipos de problemas. A biblioteca padrão inclui módulos para processamento de texto e expressões regulares, protocolos de rede (HTTP, FTP, SMTP, POP, XML-RPC, IMAP), acesso aos serviços do sistema operativo, criptografia e interface gráfica. Além da biblioteca padrão, existe uma grande variedade de extensões adicionais para todo tipo de aplicações; d) É tipicamente usada em aplicações Web como linguagem de scripting para administração de sistemas. A facilidade de integração com C faz de Python uma linguagem embutida atrativa em aplicações de maior porte. A possibilidade de uso de componentes COM faz da linguagem Python uma alternativa mais fácil (e barata) do que outras linguagens. Com o uso de ferramentas como o freeze ou Py2Exe é possível distribuir aplicações Python stand-alone, sem que o utilizador tenha que instalar o interpretador Python separadamente e) Praticamente tudo o que se faria com qualquer linguagem de programação, seja ela interpretada ou compilada pode-se fazer com Python: protótipos de sistemas, automatização de tarefas repetitivas como manipulação de texto, cópia de arquivos e outros. Podem criar programas que funcionam no modo texto, tanto interativos como servidores (ou daemons). Podem desenvolver-se programas em modo gráfico usando a interface nativa do seu sistema, ou então utilizando Tk, GTk, Qt, wxWidgets e tantas outras. Em termos científicos é sistematicamente utilizada como ferramenta de ensino de programação (pela sua facilidade de aprendizagem e implementação de conceitos de Ciência da Computação), teste e prototipagem, script, etc. Operacionalização dos Conteúdos 1. Introdução a. Linguagens: i. Da máquina ao utilizador, ii. Diferentes paradigmas: 1. Linguagens declarativas ou relacionais, 2. Linguagens funcionais, 3. Linguagens imperativas ou procedimentais, 4. Linguagens orientadas aos objetos. iii. Modelo PCAP. b. A linguagem Python. c. Programas: i. Exemplo de um programa. d. O primeiro programa: i. Funções. e. Fazer escolhas. f. Repetir. g. Intermezzo. h. Módulos. i. Adivinhar. j. Modo não interativo. 2. Objetos a. Generalidades. b. Números: i. Operações, ii. Coerção e construtores, iii. Precedência, iv. Outros casos, v. Exemplos. c. Booleanos. d. Cadeia de Carateres: i. Carateres de controlo, ii. Operações de conversão, iii. Comparar cadeias de carateres, iv. Operadores, v. Indexação, vi. Fatiamento, vii. Cadeias de carateres, Print e Formatação, viii. Mais operações, ix. Métodos específicos, x. Construtor. e. Range. f. Tuplos: i. Operações, ii. Empacotamento, iii. Construtor, iv. Representação, v. Embricamento, vi. Tuplos com nome. g. Intermezzo. h. Imutabilidade: i. Mutabilidade e memória, ii. Nonetype. 3. Programação Orientada aos Objetos a. Introdução. b. Encapsulamento. c. Intermezzo. d. Herança. e. Polimorfismo. f. UML. i. Exemplos: 1. Biblioteca da Escola, 2. Máquina multibanco. g. Exemplo: Mundos e Robôs: i. Predadores e presas. h. Classes abstratas. 4. Multimédia a. Introdução. b. Representação de imagens. c. O Módulo cIMAGE: i. Janelas, ii. Imagens, iii. Píxeis. d. Exemplos básicos. e. Manipulações simples: i. Negativo, ii. Cinzento, iii. Sépia. f. Intermezzo: abstração: i. Brilho. g. Exemplos complementares: i. Colorir o chão, ii. Distorcer uma imagem, iii. Espelho. h. Filtros: i. Convulação, ii. Extrair características, i. O formato da imagem PPM: i. De PPM para JPG, ii. De JPG para PPM. Bibliografia OBRIGATÓRIA: COSTA, Ernesto; Programação em Python, FCA, 2015. COMPLEMENTAR: LUBANOVIC, Bill Introducing Python: Modern Computing in Simple Packages; O’Reilly. BEAZLEY, David; Python Cookbook, Third edition; O’Reilly. META, Alex; Python: The Ultimate Crash Course for Python Programming; Learn Today. HATTEM, Rick; Mastering Python, PACKT. GUTTAG, John; Introduction to Computation and Programming Using Python: With Application to Understanding Data, MIT Press. SLATKIN, Brett; Effective Python: 59 Specific Ways to Write Better Python, Scott Meyers. GADDIS, Tony; Starting Out with Python, Global Edition. ABNER, Ben; Python: The ultimate beginners guide that intermediate and advanced users can also find use in, Edição de Autor. KINDER, Jesse; A Student’s Guide to Python for Physical Modeling, Princeton University Press. BEAZLEY, David; Python Essential Reference (4th Edition), Developer’s Library.