Ficha Unidade Curricular: |
Linguagens
De Programao I |
Docente: |
Rui
Silva Moreira |
Grau Acadmico: |
Doutor |
Categoria
Funcional: |
Professor
Associado |
Curso: |
Engenharia Informtica |
Ciclo De
Estudos: |
1
Ciclo |
Ano Lectivo: |
2015-2016 |
Semestre Curricular: |
1
Semestre |
N. Total ECTS: |
7 |
N. ECTS
Contacto: |
3 |
Tipologia
Das Aulas: |
Terico-Prtica (TP) e Prtica-Laboratorial (PL) |
A linguagem C surgiu no inicio da dcada de 70 nos Bell Telephone Laboratories e foi utilizada como linguagem de desenvolvimento do sistema Unix. por isso considerada uma linguagem de sistema, com um mbito de aplicao alargado. Foi mais tarde normalizada pelo American National Standards Institute (ANSI) e considerada actualmente uma linguagem genrica de ampla utilizao.
Esta unidade curricular pretende que os alunos consigam compreender e expressar-se algoritmicamente atravs da linguagem C. Inicialmente os conceitos bsicos da linguagem so introduzidos (cf. tipos de dados, operadores e expresses, estruturas de controlo, estruturao de funes, vectores, estruturas, apontadores e gesto de memria, etc.) de modo a que os alunos consigam analisar, compreender e desenvolver programas em C. Posteriormente, pretende-se que os alunos dominem a implementao de estruturas de dados lineares com recurso a apontadores (cf. pilhas, listas ligadas, etc.) e ficheiros (cf. de texto e binrios), mecanismos vulgarmente utilizadas na modelizao e desenvolvimento de solues concretas. Os alunos devero ser capazes de compreender fluentemente qualquer programa em C e utilizar todas as potencialidades da linguagem para definir estruturas de dados e desenvolver os algoritmos necessrios resoluo de mltiplos problemas de programao.
ECTS:
Presencial: 7
No Presencial: 0
Total (Presencial + No Presencial): 7
Tipologia:
(x) Formao Especfica
( ) Formao Bsica
( ) Unidade Curricular de Opo
( ) Projecto de Graduao
Parcela (Horas)
Terica
Terico-Prtica: 32
Prtica
Prtica Laboratorial: 32
Ensino Clnico
Seminrio
Trabalho de Campo: 10
Estgio
Orientao Tutorial: 10
Avaliao:
Nota: 1 ECTS = 26 horas
Algoritmia e Programao
Lista de competncias a alcanar no final da unidade curricular de acordo com o formato dos Descritores de Dublin:
1. Conhecimento e capacidade de
compreenso:
1.1. Domnio da sintaxe e da semntica da linguagem C
1.2. Capacidades de abstraco e de raciocnio na elaborao de programas em C
1.3. Domnio das tcnicas e mtodos de estruturao e desenvolvimento de aplicaes e projectos em C
1.4. Domnio da correcta utilizao de tipos de dados, operadores e expresses, estruturas de controlo, estruturao dos programas em funes, vectores, estruturas de dados e apontadores
1.5. Domnio da implementao de estruturas de dados lineares com recurso a apontadores (cf. pilhas, listas ligadas, etc.) e ficheiros (cf. de texto e binrios)
2. Aplicao de conhecimentos e
compreenso:
2.1. Conhecimentos para utilizar/aplicar a linguagem C na modelizao e implementao de programas em C para problemas reais
2.2. Conhecimentos para compreender e interpretar fluentemente diferentes tipos de programas em C
2.3. Conhecimentos para utilizar/aplicar a linguagem C na implementao de estruturas de dados dinmicas
2.4. Conhecimentos para utilizar/aplicar tipos estruturados e ficheiros na resoluo de problemas reais
3. Realizao de
julgamento/tomada de decises:
3.1. Capacidade para definir e escolher estruturas de dados alternativas
3.2. Capacidade para definir e escolher a estruturao de programas
3.3. Capacidade para definir e escolher solues algortmicas adequadas
3.4. Capacidade para definir e escolher solues de armazenamento persistente de dados
4. Comunicao:
4.1. Capacidade de descrever/explicar um programa ou funo
4.2. Capacidade para estruturar e desenvolver programas em grupo
4.3. Capacidades de apresentao e justificao de solues desenvolvidas
5. Competncias de
auto-aprendizagem:
5.1. Capacidade/curiosidade para conhecer e aprofundar conhecimentos sobre a utilizao de linguagens de programao
5.2. Capacidades de autonomia e de auto-disciplina para procurar solues alternativas e ultrapassar autonomamente dificuldades inerentes ao desenvolvimento de programas
0. Apresentao
0.1. Enquadramento e Objectivos
0.2. Metodologia e Sistema de Avaliao
0.3. Contedo Programtico e Bibliografia
1. Introduo programao em C
1.1. Ambiente de programao
1.1.1. Plataforma de desenvolvimento (CodeBlocks)
1.1.2. Criao de projectos
1.1.3. Ciclo de desenvolvimento
1.1.4. Execuo de programas
1.2. Conceitos bsicos em C
1.2.1. Estrutura dos programas
1.2.2. Entrada e sada standard de dados
1.3. Variveis e tipos de dados
1.3.1. Tipos de dados primitivos
1.3.2. Declarao e atribuio
1.3.3. Operadores e expresses
1.4. Estruturas de controlo bsicas
1.4.1.
Execuo condicional (if-else; switch)
1.4.2.
Ciclos (for, while,
do-while)
1.4.3. Controlo da execuo (break, continue)
2. Estruturao dos programas em funes
2.1. Definio de funes
2.2. Passagem de parmetros por valor
2.3. Variveis locais
2.4. Valores de retorno
2.5. Recursividade
3. Vectores e Strings
3.1. Declarao e inicializao de vectores
3.2. Passagem de vectores por parmetro
3.3. Definio de constantes e macros
3.4. Cadeias de caracteres (Strings)
3.5. Funes de manipulao de Strings
3.6. Vectores multi-dimensionais
4. Apontadores
4.1. Declarao e inicializao apontadores
4.2. Aritmtica de apontadores
4.3. Apontadores e vectores (Arrays)
4.4. Passagem de vectores para funes
4.5. Passagem de parmetros por referncia
4.6. Apontadores para apontadores
5. Estruturas de dados
5.1. Declarao de estruturas de dados (struct)
5.2. Declarao e inicializao de variveis do tipo struct
5.3. Declarao de tipos de estruturas (typedef)
5.4. Operadores sobre estruturas
5.5. Passagem de estruturas como parmetros de funes
5.6. Alocao/libertao dinmica de memria
6. Apontadores e estruturas de dados dinmicas
6.1. Estruturas com apontadores
6.2. Implementao de pilhas (Stack) com listas ligadas
6.3. Implementao de filas (Queue) com listas ligadas
6.4. Algoritmos de ordenao e pesquisa
7. Ficheiros
7.1. Entrada e sada de dados (streams)
7.2.
Ficheiros standard (stdin, stdout, stderr)
7.3. Modos de abertura de ficheiros
7.4. Ficheiros de texto
7.5. Ficheiros binrios
7.6. Ficheiros de acesso aleatrio
8. Conceitos avanados
8.1. Instrues ao pr-processador
8.2. Variveis de registo (register)
8.3. Variveis do tipo enum
8.4. Variveis do tipo union
8.5. Apontadores para funes
8.6. Funes e variveis static
8.7. Organizao de projectos em vrios ficheiros
Designao da unidade lectiva; Horas Contacto (HC) - (T+TP+P+L+TC+OT); Horas de Estudo Individual (HEI); ECTS; Bibliografia (B)
1. Apresentao; HC:1; HEI;ECTS;B:
2. Introduo programao em C; HC: 6; HEI: 8; ECTS: 0,5; B: [1], [2], [3]
3. Estruturao dos programas em funes; HC: 6; HEI: 8; ECTS: 0,5; B: [1], [2], [3]
4. Vetores e Strings; HC: 8; HEI: 18; ECTS: 1; B: [1], [2], [3]
5. Apontadores; HC: 8; HEI: 18; ECTS: 1; B: [1], [2], [3]
5. Estruturas de dados; HC: 10; HEI: 16; ECTS: 1; B: [1], [2], [3], [4], [5]
7. Apontadores e estruturas dados dinmicas; HC: 12; HEI: 26; ECTS: 1,5: B: [1], [2], [3], [4], [5]
8. Ficheiros; HC: 8; HEI: 18; ECTS: 1: B: [1], [2], [3]
9. Conceitos avanados; HC: 6; HEI: 8; ECTS: 0,5; B: [1], [2], [3]
TOTAL
Horas Contacto (TP+PL): 84
Horas Estudo Individual: 98
Horas Totais: 182
ECTS: 7
N ECTS = N horas/26
O sistema de avaliao desta disciplina segue na generalidade o regulamento pedaggico da UFP e define em especfico as seguintes regras de clculo:
1 -
Avaliao contnua
A avaliao compreende duas componentes: uma componente Terico-Prtica (TP) e uma componente Prtica-Laboratorial (PL). A classificao final da disciplina ser calculada atravs da seguinte expresso:
Nota final = 50% Nota Componente TP + 50% Nota Componente PL
Componente
Terico-Prtica (TP)
A componente TP realiza-se de forma contnua durante o semestre e inclui os seguintes elementos de avaliao:
Dois testes terico-prticos de avaliao individual: incidem sobre os conhecimentos leccionados at ao momento em que so realizados. Um teste realiza-se a meio do semestre e o outro no fim do semestre em data a indicar. Os testes incluiro perguntas sobre a sintaxe e semntica da linguagem C, exerccios de interpretao ou escrita de programas ou instrues em C e a implementao de determinadas estruturas de dados e algoritmos utilizando a linguagem C.
A falta aos momentos de avaliao ser convertida numa nota 0 (zero) para efeitos de clculo da classificao. A classificao obtida na componente TP ser calculada atravs da seguinte expresso:
Nota Componente TP = 50% 1 Teste + 50% 2 Teste
Componente
Prtica Laboratorial (PL)
A componente PL realiza-se de modo contnuo durante as aulas e atravs da realizao de projectos prticos realizados individualmente ou em grupo (mximo 2 alunos), sobre um ou mais temas propostos durante o semestre. A avaliao da componente PL inclui os seguintes elementos de avaliao:
Um teste prtico de avaliao individual: incide sobre os conhecimentos leccionados at ao momento em que so realizados. O teste realiza-se em data a indicar e incluir exerccios de implementao de estruturas de dados e algoritmos utilizando a linguagem C.
Projecto: no final do semestre (em data a especificar) os alunos devero entregar um relatrio com todas as estruturas de dados e as funes C que implementam a totalidade do projecto proposto. Os alunos tero que marcar presena em duas ou mais sesses de discusso/anlise dos trabalhos propostos durante as horas de atendimento para acompanhamento do projecto e/ou esclarecimento de dvidas. Devero fazer ainda, em sala de aula, uma defesa e demonstrao das solues desenvolvidas.
A falta aos momentos de avaliao ser convertida numa nota 0 (zero) para efeitos de clculo da classificao. A classificao obtida na componente PL ser calculada atravs da seguinte expresso:
Nota Componente PL = 40% Teste + 60% Projecto.
O acesso s pocas de exame, relativas apenas componente TP, faz-se de acordo com o regulamento pedaggico. A componente PL no pode ser efectuada por exame.
2 - Exames
Os exames sero realizados de acordo com o regulamento pedaggico da UFP nos perodos previstos no cronograma e incidiro sobre a totalidade da matria includa no programa da disciplina. O docente poder solicitar o desenvolvimento de trabalhos com apresentao oral de modo a melhor aferir o nvel de conhecimentos e competncias alcanadas pelos alunos. A classificao final do aluno ser calculada utilizando a equao indicada acima.
[1] L. Damas, Linguagem C, 10 Edio, FCA, 1999.
[2] M. S, Fundamentos de Programao usando C, FCA, 2004.
[3] B. Kernighan &
D. Ritchie, The C Programming Language, Prentice-Hall International, 1988.
[4] J. Tremblay &
P. Sorensen, Introduction to Data Structures Applications, McGraw-Hill, 1984.
[5] J. Vasconcelos & J. Carvalho, Algoritmia e Estruturas de Dados: Programao nas linguagens C e Java, Centro Atlntico, 2005.
Computador Porttil
CodeBlocks (http://www.codeblocks.org/)
Introduo programao em C: ambiente de programao; estruturao dos programas; variveis e tipos de dados primitivos; operadores e expresses; controlo do fluxo de execuo. Estruturao dos programas em funes: passagem de parmetros por valor, variveis locais e funes recursivas. Vectores e Strings: declarao e inicializao de vectores; passagem de vectores por parmetro; funes de manipulao de Strings e vectores multi-dimensionais. Apontadores: declarao e inicializao de apontadores; aritmtica de apontadores; apontadores e vectores; passagem de parmetros por referncia e apontadores para apontadores. Estruturas de dados: declarao de tipos e estruturas de dados (struct); declarao e inicializao de variveis do tipo struct; passagem de estruturas como parmetros de funes; alocao/libertao dinmica de memria. Apontadores e estruturas de dados dinmicas: implementao de pilhas e filas com listas ligadas. Ficheiros: entrada e sada de dados e streams de ficheiros (stdin, stdout, stderr); ficheiros de texto e binrios; Ficheiros sequenciais e de acesso aleatrio. Conceitos avanados: instrues ao pr-processador; variveis de registo, enumerao e unio; apontadores para funes; funes e variveis estticas.
Introduction to C
programming: programming environment, structuring programs; variables and
primitive data types; operators and expressions; flow control. Structuring
programs into functions: passing parameters by-value, local variables and
recursive functions. Arrays and Strings: declaring and initializing arrays;
passing arrays as parameters; functions for string manipulation and
multi-dimensional arrays. Pointers: declaring and initializing pointers;
pointer arithmetic; pointers and arrays; passing parameters by-reference and
pointer to pointers. Data structures: declaring types and data structures;
declaring and initializing variables of type struct;
operators on structures; passing structures as functions parameters; dynamic
memory allocation/deallocation. Pointers and dynamic
data structures: implementing stacks and queues with linked lists. Files: I/O
data streams; text and binary files; sequential and random access files.
Advanced concepts: pre-processor instructions; variables of type register, enum and union; pointers to functions; static variables and
functions.
Course Title: Linguagens
de programao I / Programming languages
I |
Code |
|||||
Language of
Instruction PT
|
Assessment Method Avaliao contnua Continue evaluation |
Level of Course Licenciatura Undergraduate |
Number of Credits |
|||
Year of Studies 1 Ciclo, 1 ano
|
Name of Lecturer Rui Moreira |
Winter Semester X Spring Semester ð |
Total Hours: 175 |
|||
Course
Objectives: Programao
de estruturas de dados e algoritmos em C. Programming da structures and algorithms in C. |
||||||
Course
Description: 1. Introduo programao em C 2. Estruturao dos programas em funes 3. Vectores e Strings 4. Apontadores 5. Estruturas de dados 6. Apontadores e estruturas de dados dinmicas 7. Ficheiros 8. Conceitos
avanados |
1. Introducing to C
programming 2. Structuring programs into
functions 3. Vectors and strings 4. Pointers 5. Data structures 6. Pointers and dynamic data
structures 7. Files 8. Advanced concepts |
|||||
Obligatory Reading |
[1] L. Damas,
Linguagem C, 10 Edio, FCA, 1999. [2] M. S, Fundamentos
de Programao usando C, FCA, 2004. [3] B. Kernighan & D. Ritchie, The C
Programming Language, Prentice-Hall International, 1988. |
|||||
Supplementary Reading |
[4] J. Tremblay & P. Sorensen,
Introduction to Data Structures with Applications, McGraw-Hill, 1984. [5] J. Vasconcelos & J. Carvalho, Algoritmia e Estruturas de
Dados: Programao nas linguagens C e Java, Centro Atlntico, 2005. |
|||||
Method of Teaching |
Aulas
terica e prticas / Theoretical and practical classes |
|||||
Prerequisites |
Conhecimentos
de estruturas de dados e algoritmia Knowledge of data structures and algorithms |
|||||
Assessment method |
Exames
& projectos / Exams
& projects |
|||||
Responsible person |
Rui Moreira |
e-mail:
rmoreira@ufp.edu.pt |
||||
Modelo A3ES: LP1
Esta unidade curricular pretende que os alunos consigam compreender e expressar-se algoritmicamente atravs da linguagem de programao C. Inicialmente os conceitos bsicos da linguagem so introduzidos (cf. tipos de dados, operadores e expresses, estruturas de controlo, estruturao de funes, vectores, estruturas, apontadores e gesto de memria, etc.) de modo a que os alunos consigam analisar, compreender e desenvolver programas em C. Posteriormente, pretende-se que os alunos dominem a implementao de estruturas de dados lineares com recurso a apontadores (cf. pilhas, listas ligadas, etc.) e ficheiros (cf. texto e binrios), bem como de mecanismos vulgarmente utilizadas na modelizao e desenvolvimento de solues concretas em C. Os alunos devero ser capazes de compreender fluentemente qualquer programa em C e utilizar todas as potencialidades da linguagem para definir estruturas de dados e desenvolver os algoritmos necessrios resoluo de mltiplos problemas de programao.
This
course intents students may
understand and algorithmically express themselves through the C programing
language. Initially the basic concepts of the language are introduced (cf. data
types, operators and expressions, control structures, structuring functions,
vectors, structs, pointers and memory management,
etc.) so that students can analyze, understand and develop programs in C.
Thereafter, it is intended that students master the implementation of linear
data structures using pointers (cf. stacks, linked lists, etc.) and files (cf.
text and binary), as well as mechanisms commonly used in the modeling and
development of practical and concrete C solutions. Students should be able to
fluently understand any C program and make full use of the language for
defining data structures and develop the algorithms needed to solve multiple
programming problems.
1. Introduo programao em C
2. Estruturao dos programas em funes
3. Vectores e Strings
4. Apontadores
5. Estruturas de dados
6. Apontadores e estruturas de dados dinmicas
7. Ficheiros
8. Conceitos avanados
1. Introducing to C
programming
2. Structuring
programs into functions
3. Vectors and strings
4. Pointers
5. Data structures
6. Pointers and
dynamic data structures
7. Files
8. Advanced concepts
Os contedos programticos esto coerentes com os objectivos de aprendizagem na medida em que abordam todos os temas sobre a linguagem C que devero ser dominados pelos alunos no final da unidade curricular. Em particular comea-se por abordar os conceitos fundamentais inerentes aos tipos de dados e estruturao de programas em C. Particulariza-se inicialmente o estudo na manipulao de vetores e strings e posteriormente abordam-se os apontadores bem como a sua aplicao na passagem de parmetros por referncia e na definio e manipulao de estruturas de dados dinmicas. Todos os temas abordados so exemplificados com a aplicao em vrios exerccios concretos. Os objectivos da aprendizagem esto portanto alinhados com os temas abordados tanto ao nvel terico-prtico como prtico, sendo aplicados em exemplos concretos variados tanto nas aulas como em trabalhos para casa.
The contents are
consistent with the learning objectives since they addresses all the issues
about the C programming language that must be mastered by the students at the
end of the course. In particular it begins by addressing the fundamental
concepts inherent to applications structure and data types used on C programs.
Initially the study particularizes the manipulation of vectors and strings and afterwards
addresses pointers as well as its application for passing parameters that
reference out scope variables (passage by reference) and defining and
manipulating dynamic data structures. All covered topics are exemplified with
applications in several practical exercises. The learning objectives are
therefore aligned with the themes addressed both at practical and theoretic-practical
levels, and applied in various concrete examples both in the classroom and in
homework assignments.
Esta unidade curricular est organizada em aulas terico-prticas (TP) e prticas (PR). A metodologia de ensino utilizada no mbito das aulas TP baseia-se na exposio oral dos contedos programticos e na sua imediata exemplificao em aplicaes e exerccios concretos sobre os temas abordados. Paralelamente, no contexto das aulas prticas laboratoriais, os alunos tm oportunidade de aplicar e desenvolver mais exerccios que complementam a base de experincias com o desenvolvimento e estruturao de funes e programas em C. A avaliao contnua, contemplando em partes iguais a componente TP e PR. A componente TP avaliada por dois exames realizados durante o semestre. A componente PR avaliada pela realizao de um exame e pela implementao de um projeto prtico cujos requisitos so propostos durante o semestre.
This course is
organized into theoretic-practical (TP) and practical (PR) classes. The
teaching methodology used within the TP classes is based on the oral
presentation of contents and immediate exemplification with concrete
applications and exercises on the topics covered. In parallel, in the context
of laboratory classes, students have the opportunity to apply and further
develop exercises that complement the experience basis regarding the
development and structuring of functions and programs in C. The assessment is continuous,
covering in equal parts the TP and PR components. The TP component is assessed
by two exams during the semester. The PR component is assessed through an exam
and the implementation of a practical project whose requirements are proposed
during the semester.
As metodologias de ensino aplicadas nesta unidade curricular procuram levar os alunos a contactar e dominar os conceitos mais importantes para o desenvolvimento de aplicaes na linguagem de programao C. Procura-se ainda que os alunos desenvolvam competncias prticas na estruturao de aplicaes e desenvolvimento de programas em C. As aulas terico-prticas e em particular as aulas prticas laboratoriais permitem um contato permanente com a implementao e estruturao de aplicaes com base em funes, facilitando portanto o progresso gradual no desenvolvimento de aplicaes em C. Esta experincia e contato com contextos prticos especficos e concretos permite ainda melhorar o conhecimento e aplicao da linguagem C, sendo essencial para aumentar o progresso tcnico e as competncias de programao dos estudantes.
Teaching methodologies
applied in this course seek to lead students to contact and master the most
important concepts for the development of applications using the C programming language.
We intend also that students develop practical skills in structuring applications
and development of programs in C. The theoretic-practical classes and in
particular the laboratory classes allow permanent contact with the structuring
and implementation of applications mainly based on functions, thus facilitating
the gradual progress in the development of applications in C. This experience
and contact with specific and concrete practical contexts allows also to improve the knowledge and the application of the C
language, thus being essential to increase the technical progress and
programming skills of students.
[1] L. Damas, Linguagem C, 10 Edio, FCA, 1999.
[2] M. S, Fundamentos de Programao usando C, FCA, 2004.
[3] B. Kernighan &
D. Ritchie, The C Programming Language, Prentice-Hall International, 1988.
[4] J. Tremblay &
P. Sorensen, Introduction to Data Structures Applications, McGraw-Hill, 1984.
[5] J. Vasconcelos & J. Carvalho, Algoritmia e Estruturas de Dados: Programao nas linguagens C e Java, Centro Atlntico, 2005.