Manual de Docência para a Disciplina de Programação
Engenharia Civil, 1º ano
José Manuel Torres
Número de horas do programa: 60 horas
Número de horas Semanal: 4 Horas
Número de horas por aula: 2 aulas de 2 h cada
1. Algoritmos e Computação
1.1 Noção de Algoritmo
1.2 Representação de Algoritmos
1.2.1 Linguagem auxiliar (pseudo-código)
1.2.2 Diagrama de fluxo (fluxograma)
1.2.3 Linguagem de programação
1.3 Prova e Teste de Algoritmos
1.3.1 Seguimento de algoritmos
1.3.2 Prova matemática de algoritmos
1.3.3 Teste de algoritmos
1.4 Programação "top-down" e "bottom-up"
1.5 Resolução de Problemas
1.5.1 Análise do Problema
1.5.2 Especificação do Programa
1.5.3 Codificação do Programa
1.5.4 Teste e Refinamento do Programa
1.5.5 Geração da Documentação
1.5.6 Manutenção do Programa
Objectivos:
Introduzir a noção de algoritmo e de problema; apresentar metodologias para representar algoritmos; introduzir as diversas etapas no desenvolvimento de um algoritmo para resolução de problemas.
Bibliografia principal:
2. Introdução à Programação
2.1 Conceitos de programa e software
2.2 Tipos de software
2.3 Linguagem máquina, assembly e de alto nível
2.4 Programação em linguagens de alto nível
2.4.1 Programa fonte
2.4.2 Compilador
2.4.3 Interpretador
2.4.4 Programa objecto
2.4.5 Bibliotecas
2.4.6 Programa executável
2.5 Principais linguagens de programação de alto nível e suas aplicações
Objectivos:
Introduzir a noção de programação, software e diversos tipos de linguagens de programação; apresentar o ciclo de desenvolvimento de um programa de software.
Bibliografia principal:
3. Estruturas de controlo
3.1 Instruções simples e estruturadas
3.2 Instruções condicionais
3.2.1 Instrução "if-then-else"
3.2.2 Instrução de selecção "case"
3.3 Instruções repetitivas
3.3.1 Instrução "while"
3.3.2 Instrução "until"
3.3.3 Instrução "for"
Objectivos:
Introduzir as diversas estruturas de controlo como ferramentas básicas para construir programas.
Bibliografia Principal:
4. Tipos e declarações de dados, expressões e funções intrínsecas
4.1 Tipos de dados
4.1.1 Tipos ordinais
4.1.2 Tipos reais
4.1.3 Tipo cadeia de caracteres
4.1.4 Definição e conversão de tipos
4.2 Declaração de constantes
4.3 Operadores e expressões
4.3.1 Definição de operando, operador e expressão
4.3.2 Operadores aritméticos
4.3.3 Operadores lógicos
4.3.4 Operadores booleanos
4.3.5 Operadores relacionais
4.3.6 Regras de precedência na avaliação de expressões
4.4 Funções intrínsecas
Objectivos:
Introduzir a noção de tipos de dados, variáveis, constantes, operadores e expressões.
Bibliografia Principal:
5. Variáveis indexadas e cadeias de caracteres
5.1 Introdução à indexação
5.2 Conceitos de vector e matriz
5.3 Utilização de vectores
5.3.1 Pesquisa em vectores: linear e binária
5.3.2 Ordenação de vectores: por selecção, por fusão, "Buble sort", por partição e troca
5.4 Utilização de matrizes
5.5 Utilização de cadeias de caracteres
5.5.1 Conceito de cadeia de caracteres
5.5.2 Operações sobre cadeias de caracteres
Objectivos:
Introduzir a utilização de tipos de dados indexados em programas e respectivos algoritmos de pesquisa e ordenação.
Bibliografia Principal:
6. Subrotinas/Procedimentos e funções
6.1 Conceitos de procedimento e função
6.2 Variáveis locais vs globais
6.3 Subrotinas/Procedimentos
6.3.1 Introdução aos procedimentos
6.3.2 Tipos de parâmetros
6.3.3 Passagem de parâmetros por valor
6.3.4 Passagem de parâmetros por referência
6.4 Funções
6.4.1 Introdução às funções
6.4.2 Diferenças relativamente aos procedimentos
6.4.3 Parâmetros de entrada
6.4.4 Parâmetro de retorno
6.5 Introdução à recursividade
Objectivos:
Introduzir a noção de programação estruturada; apresentar o conceito de função e procedimento. Definir o conceito de recursividade.
Bibliografia Principal:
7. Projectos de programação
7.1 Desenvolvimento de pequenos projectos de programação
Objectivos:
Implementação prática de pequenos projectos de programação que estejam relacionados com os conteúdos leccionados previamente.
Bibliografia Principal:
Teaching Manual for Programming
José Manuel Torres
Course duration: 60 hours
Week schedule: 4 hours
Hours per class: 2 classes of 2 h each
Syllabus:
1. Algorithms and Computation
1.1. Algorithm definition
1.2. Algorithm representation
1.2.1. Pseudo-code language
1.2.2. Flow-graph diagram
1.2.3. Programming language
1.3. Algorithm proof and testing
1.3.1. Tracing algorithms
1.3.2. Mathematical proof of algorithms
1.3.3. Algorithm testing
1.4. Top-down and bottom-up programming
1.5. Problem solving
1.5.1. Problem analysis
1.5.2. Problem specification
1.5.3. Problem coding
1.5.4. Program Test and Refinement
1.5.5. Documentation generation
1.5.6. Program maintenance
Purpose:
Present the notion of algorithm and problem; introduce methodologies to represent algorithms; present the several stages in the development of an algorithm to solve problems.
Main Bibliography:
2. Introduction to Programming
2.1. Concept of program and software
2.2. Software types
2.3. Machine language, assembly and high level language
2.4. Programming in high level languages
2.4.1. Source program
2.4.2. Compiler
2.4.3. Interpreter
2.4.4. Object Code
2.4.5. Libraries
2.4.6. Executable program
2.5. Main high level programming languages and applications
Purpose:
Present the notion of programming, software and of programming languages; introduce the typical development cycle of a software program.
Main Bibliography:
3. Control structures
3.1. Simple and structured instructions
3.2. Conditional instructions
3.2.1. "if-then-else" instructions
3.2.2. "case" selection instructions
3.3. Repetitive instructions
3.3.1. "while" instructions
3.3.2. "until" instructions
3.3.3. "for" instructions
Purpose:
Introduce the several control structures as basic tools to develop programs.
Main Bibliography:
4. Data types, expressions and declarations
4.1. Data types
4.1.1. Ordinal types
4.1.2. Real types
4.1.3. String types
4.1.4. Type definition and type conversion
4.2. Constant declaration
4.3. Operators and expressions
4.3.1. Definition of operand, operator and expression
4.3.2. Arithmetic operators
4.3.3. Logic operators
4.3.4. Boolean operators
4.3.5. Relational operators
4.3.6. Precedence rules in expression evaluation
4.4. Intrinsic functions
Purpose:
Introduce the notion of data types, variables, constants, operators and expressions
Main Bibliography:
5. Arrays and Strings
5.1. Introduction to indexing
5.2. Vector and matrix definition
5.3. Use of vectors
5.3.1. Search in vectors: linear search and binary search
5.3.2. Vector sorting: Selection sorting, Fusion sorting, Bubble sorting, Quick sorting
5.4. Matrix use
5.5. Strings
5.5.1. Concept of string
5.5.2. Operations with strings
Purpose:
Introduce the use of indexed data types in programs and of searching and sorting algorithms.
Main Bibliography:
6. Subroutines/Procedures and functions
6.1. Notion of procedure and function
6.2. Local vs global variable
6.3. Subroutines/Procedures
6.3.1. Introduction to Procedures
6.3.2. Parameters type
6.3.3. Passing parameters by value
6.3.4. Passing parameters by reference
6.4. Functions
6.4.1. Introduction to functions
6.4.2. Differences between functions and procedures
6.4.3. In parameters
6.4.4. Out parameters
6.5. Introduction to recursion
Purpose:
Introduce the notion of structured programming; present the concept of function and procedure. Define the concept of recursion.
Main Bibliography:
7. Development programming projects
7.1. Practical development of small programming projects
Purpose:
Practical implementation of small software projects related with the topics of the previous chapters.
Main Bibliography: