Ficha Unidade Curricular:

Linguagens De Programaćčo I

Docente:

Rui Silva Moreira

Grau Académico:

Doutor

Categoria Funcional:

Professor Associado

Curso:

Engenharia Informática

Ciclo De Estudos:

1ľ Ciclo

Ano Lectivo:

2015-2016

Semestre Curricular:

1ľ Semestre

N.ľ Total ECTS:

7

N.ľ ECTS Contacto:

3

Tipologia Das Aulas:

Teórico-Prática (TP) e Prática-Laboratorial (PL)

 

 

 

 

 

 

 

 

 

 

 

 

1        Introdućčo

A linguagem C surgiu no inicio da década 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 aplicaćčo alargado. Foi mais tarde normalizada pelo American National Standards Institute (ANSI) e é considerada actualmente uma linguagem genérica de ampla utilizaćčo.

Esta unidade curricular pretende que os alunos consigam compreender e expressar-se algoritmicamente através da linguagem C. Inicialmente os conceitos básicos da linguagem sčo introduzidos (cf. tipos de dados, operadores e expressões, estruturas de controlo, estruturaćčo de funćões, vectores, estruturas, apontadores e gestčo de memória, etc.) de modo a que os alunos consigam analisar, compreender e desenvolver programas em C. Posteriormente, pretende-se que os alunos dominem a implementaćčo de estruturas de dados lineares com recurso a apontadores (cf. pilhas, listas ligadas, etc.) e ficheiros (cf. de texto e binários), mecanismos vulgarmente utilizadas na modelizaćčo e desenvolvimento de solućões concretas. Os alunos deverčo 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 necessários ą resolućčo de múltiplos problemas de programaćčo.

2        Distribuićčo das Horas de Trabalho

ECTS:

Presencial: 7

Nčo Presencial: 0

Total (Presencial + Nčo Presencial): 7

 

Tipologia:

(x) Formaćčo Específica

( ) Formaćčo Básica

( ) Unidade Curricular de Općčo

( ) Projecto de Graduaćčo

 

Parcela                 (Horas)

Teórica                                                                     

Teórico-Prática: 32

Prática                                                                      

Prática Laboratorial: 32

Ensino Clínico                                     

Seminário                                             

Trabalho de Campo: 10

Estágio                                                                      

Orientaćčo Tutorial: 10

Avaliaćčo:

 

Nota: 1 ECTS = 26 horas

3        Requisitos Prévios

Algoritmia e Programaćčo

4        Competźncias / Resultados da Aprendizagem

Lista de competźncias a alcanćar no final da unidade curricular de acordo com o formato dos Descritores de Dublin:

1.     Conhecimento e capacidade de compreensčo:

1.1.  Domínio da sintaxe e da semČntica da linguagem C

1.2.  Capacidades de abstracćčo e de raciocínio na elaboraćčo de programas em C

1.3.  Domínio das técnicas e métodos de estruturaćčo e desenvolvimento de aplicaćões e projectos em C

1.4.  Domínio da correcta utilizaćčo de tipos de dados, operadores e expressões, estruturas de controlo, estruturaćčo dos programas em funćões, vectores, estruturas de dados e apontadores

1.5.  Domínio da implementaćčo de estruturas de dados lineares com recurso a apontadores (cf. pilhas, listas ligadas, etc.) e ficheiros (cf. de texto e binários)

2.     Aplicaćčo de conhecimentos e compreensčo:

2.1.  Conhecimentos para utilizar/aplicar a linguagem C na modelizaćčo e implementaćčo 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 implementaćčo de estruturas de dados dinČmicas

2.4.  Conhecimentos para utilizar/aplicar tipos estruturados e ficheiros na resolućčo de problemas reais

3.     Realizaćčo de julgamento/tomada de decisões:

3.1.  Capacidade para definir e escolher estruturas de dados alternativas

3.2.  Capacidade para definir e escolher a estruturaćčo de programas

3.3.  Capacidade para definir e escolher solućões algorítmicas adequadas

3.4.  Capacidade para definir e escolher solućões de armazenamento persistente de dados

4.     Comunicaćčo:

4.1.  Capacidade de descrever/explicar um programa ou funćčo

4.2.  Capacidade para estruturar e desenvolver programas em grupo

4.3.  Capacidades de apresentaćčo e justificaćčo de solućões desenvolvidas

5.     Competźncias de auto-aprendizagem:

5.1.  Capacidade/curiosidade para conhecer e aprofundar conhecimentos sobre a utilizaćčo de linguagens de programaćčo

5.2.  Capacidades de autonomia e de auto-disciplina para procurar solućões alternativas e ultrapassar autonomamente dificuldades inerentes ao desenvolvimento de programas

5        Conteúdos Programáticos

0.     Apresentaćčo

0.1.   Enquadramento e Objectivos

0.2.   Metodologia e Sistema de Avaliaćčo

0.3.   Conteúdo Programático e Bibliografia

1.     Introdućčo ą programaćčo em C

1.1.   Ambiente de programaćčo

1.1.1.     Plataforma de desenvolvimento (CodeBlocks)

1.1.2.     Criaćčo de projectos

1.1.3.     Ciclo de desenvolvimento

1.1.4.     Execućčo de programas

1.2.   Conceitos básicos em C

1.2.1.     Estrutura dos programas

1.2.2.     Entrada e saída standard de dados

1.3.   Variáveis e tipos de dados

1.3.1.     Tipos de dados primitivos

1.3.2.     Declaraćčo e atribuićčo

1.3.3.     Operadores e expressões

1.4.   Estruturas de controlo básicas

1.4.1.     Execućčo condicional (if-else; switch)

1.4.2.     Ciclos (for, while, do-while)

1.4.3.     Controlo da execućčo (break, continue)

2.     Estruturaćčo dos programas em funćões

2.1.   Definićčo de funćões

2.2.   Passagem de parČmetros por valor

2.3.   Variáveis locais

2.4.   Valores de retorno

2.5.   Recursividade

3.     Vectores e Strings

3.1.   Declaraćčo e inicializaćčo de vectores

3.2.   Passagem de vectores por parČmetro

3.3.   Definićčo de constantes e macros

3.4.   Cadeias de caracteres (Strings)

3.5.   Funćões de manipulaćčo de Strings

3.6.   Vectores multi-dimensionais

4.     Apontadores

4.1.   Declaraćčo e inicializaćčo apontadores

4.2.   Aritmética de apontadores

4.3.   Apontadores e vectores (Arrays)

4.4.   Passagem de vectores para funćões

4.5.   Passagem de parČmetros por referźncia

4.6.   Apontadores para apontadores

5.     Estruturas de dados

5.1.   Declaraćčo de estruturas de dados (struct)

5.2.   Declaraćčo e inicializaćčo de variáveis do tipo struct

5.3.   Declaraćčo de tipos de estruturas (typedef)

5.4.   Operadores sobre estruturas

5.5.   Passagem de estruturas como parČmetros de funćões

5.6.   Alocaćčo/libertaćčo dinČmica de memória

6.     Apontadores e estruturas de dados dinČmicas

6.1.   Estruturas com apontadores

6.2.   Implementaćčo de pilhas (Stack) com listas ligadas

6.3.   Implementaćčo de filas (Queue) com listas ligadas

6.4.   Algoritmos de ordenaćčo e pesquisa

7.     Ficheiros

7.1.   Entrada e saída 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 binários

7.6.   Ficheiros de acesso aleatório

8.     Conceitos avanćados

8.1.   Instrućões ao pré-processador

8.2.   Variáveis de registo (register)

8.3.   Variáveis do tipo enum

8.4.   Variáveis do tipo union

8.5.   Apontadores para funćões

8.6.   Funćões e variáveis static

8.7.   Organizaćčo de projectos em vários ficheiros

6        Metodologia de Ensino-Aprendizagem e Execućčo de ECTS

Designaćčo da unidade lectiva; Horas Contacto (HC) - (T+TP+P+L+TC+OT); Horas de Estudo Individual (HEI); ECTS; Bibliografia (B)

1. Apresentaćčo; HC:1; HEI;ECTS;B:

2. Introdućčo ą programaćčo em C; HC: 6; HEI: 8; ECTS: 0,5; B: [1], [2], [3]

3. Estruturaćčo dos programas em funćões; 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 dinČmicas; 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 avanćados; 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

7        Sistema de Avaliaćčo

O sistema de avaliaćčo desta disciplina segue na generalidade o regulamento pedagógico da UFP e define em específico as seguintes regras de cálculo:

 

1 - Avaliaćčo contínua

A avaliaćčo compreende duas componentes: uma componente Teórico-Prática (TP) e uma componente Prática-Laboratorial (PL). A classificaćčo final da disciplina será calculada através da seguinte expressčo:

 

Nota final = 50% Nota Componente TP + 50% Nota Componente PL

 

Componente Teórico-Prática (TP)

A componente TP realiza-se de forma contínua durante o semestre e inclui os seguintes elementos de avaliaćčo:

 

• Dois testes teórico-práticos de avaliaćčo individual: incidem sobre os conhecimentos leccionados até ao momento em que sčo realizados. Um teste realiza-se a meio do semestre e o outro no fim do semestre em data a indicar. Os testes incluirčo perguntas sobre a sintaxe e semČntica da linguagem C, exercícios de interpretaćčo ou escrita de programas ou instrućões em C e a implementaćčo de determinadas estruturas de dados e algoritmos utilizando a linguagem C.

 

A falta aos momentos de avaliaćčo será convertida numa nota 0 (zero) para efeitos de cálculo da classificaćčo. A classificaćčo obtida na componente TP será calculada através da seguinte expressčo:

 

Nota Componente TP = 50% 1ľ Teste + 50% 2ľ Teste

 

Componente Prática Laboratorial (PL)

A componente PL realiza-se de modo contínuo durante as aulas e através da realizaćčo de projectos práticos realizados individualmente ou em grupo (máximo 2 alunos), sobre um ou mais temas propostos durante o semestre. A avaliaćčo da componente PL inclui os seguintes elementos de avaliaćčo:

 

• Um teste prático de avaliaćčo individual: incide sobre os conhecimentos leccionados até ao momento em que sčo realizados. O teste realiza-se em data a indicar e incluirá exercícios de implementaćčo de estruturas de dados e algoritmos utilizando a linguagem C.

 

• Projecto: no final do semestre (em data a especificar) os alunos deverčo entregar um relatório com todas as estruturas de dados e as funćões C que implementam a totalidade do projecto proposto. Os alunos terčo que marcar presenća em duas ou mais sessões de discussčo/análise dos trabalhos propostos durante as horas de atendimento para acompanhamento do projecto e/ou esclarecimento de dúvidas. Deverčo fazer ainda, em sala de aula, uma defesa e demonstraćčo das solućões desenvolvidas.

 

A falta aos momentos de avaliaćčo será convertida numa nota 0 (zero) para efeitos de cálculo da classificaćčo. A classificaćčo obtida na componente PL será calculada através da seguinte expressčo:

 

Nota Componente PL = 40% Teste + 60% Projecto.

 

O acesso ąs épocas de exame, relativas apenas ą componente TP, faz-se de acordo com o regulamento pedagógico. A componente PL nčo pode ser efectuada por exame.

 

2 - Exames

Os exames serčo realizados de acordo com o regulamento pedagógico da UFP nos períodos previstos no cronograma e incidirčo sobre a totalidade da matéria incluída no programa da disciplina. O docente poderá solicitar o desenvolvimento de trabalhos com apresentaćčo oral de modo a melhor aferir o nível de conhecimentos e competźncias alcanćadas pelos alunos. A classificaćčo final do aluno será calculada utilizando a equaćčo indicada acima.

8        Bibliografia

[1] L. Damas, Linguagem C, 10Ľ Edićčo, FCA, 1999.

[2] M. Sá, Fundamentos de Programaćčo 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: Programaćčo nas linguagens C e Java, Centro AtlČntico, 2005.

9        Recursos Didácticos

Computador Portátil

CodeBlocks (http://www.codeblocks.org/)

10    Resumo

Introdućčo ą programaćčo em C: ambiente de programaćčo; estruturaćčo dos programas; variáveis e tipos de dados primitivos; operadores e expressões; controlo do fluxo de execućčo. Estruturaćčo dos programas em funćões: passagem de parČmetros por valor, variáveis locais e funćões recursivas. Vectores e Strings: declaraćčo e inicializaćčo de vectores; passagem de vectores por parČmetro; funćões de manipulaćčo de Strings e vectores multi-dimensionais. Apontadores: declaraćčo e inicializaćčo de apontadores; aritmética de apontadores; apontadores e vectores; passagem de parČmetros por referźncia e apontadores para apontadores. Estruturas de dados: declaraćčo de tipos e estruturas de dados (struct); declaraćčo e inicializaćčo de variáveis do tipo struct; passagem de estruturas como parČmetros de funćões; alocaćčo/libertaćčo dinČmica de memória. Apontadores e estruturas de dados dinČmicas: implementaćčo de pilhas e filas com listas ligadas. Ficheiros: entrada e saída de dados e streams de ficheiros (stdin, stdout, stderr); ficheiros de texto e binários; Ficheiros sequenciais e de acesso aleatório. Conceitos avanćados: instrućões ao pré-processador; variáveis de registo, enumeraćčo e uničo; apontadores para funćões; funćões e variáveis estáticas.

11    Abstract

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.

 


 

12    ECTS

Course Title:

Linguagens de programaćčo I / Programming languages I

Code

Language of Instruction

PT

Assessment Method

Avaliaćčo contínua

Continue evaluation

Level of Course

Licenciatura

Undergraduate

Number of Credits

 

Year of Studies

Ciclo, 1ľ ano

Name of Lecturer

Rui Moreira

Winter Semester     X

Spring Semester      ð

 

Total Hours:

175

Course Objectives:

Programaćčo de estruturas de dados e algoritmos em C.

 

Programming da structures and algorithms in C.

Course Description:

1. Introdućčo ą programaćčo em C

2. Estruturaćčo dos programas em funćões

3. Vectores e Strings

4. Apontadores

5. Estruturas de dados

6. Apontadores e estruturas de dados dinČmicas

7. Ficheiros

8. Conceitos avanćados

 

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Ľ Edićčo, FCA, 1999.

[2] M. Sá, Fundamentos de Programaćčo 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: Programaćčo nas linguagens C e Java, Centro AtlČntico, 2005.

Method of Teaching

Aulas teórica e práticas / 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

 

1        Objetivos de Aprendizagem (conhecimentos, aptidões e competźncias a desenvolver pelos estudantes) – 1000 caracteres

Esta unidade curricular pretende que os alunos consigam compreender e expressar-se algoritmicamente através da linguagem de programaćčo C. Inicialmente os conceitos básicos da linguagem sčo introduzidos (cf. tipos de dados, operadores e expressões, estruturas de controlo, estruturaćčo de funćões, vectores, estruturas, apontadores e gestčo de memória, etc.) de modo a que os alunos consigam analisar, compreender e desenvolver programas em C. Posteriormente, pretende-se que os alunos dominem a implementaćčo de estruturas de dados lineares com recurso a apontadores (cf. pilhas, listas ligadas, etc.) e ficheiros (cf. texto e binários), bem como de mecanismos vulgarmente utilizadas na modelizaćčo e desenvolvimento de solućões concretas em C. Os alunos deverčo 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 necessários ą resolućčo de múltiplos problemas de programaćčo.

Learning Goals (knowledge, skills and competences to be developed by students)

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.

2        Conteúdos Programáticos – 1000 caracteres

1. Introdućčo ą programaćčo em C

2. Estruturaćčo dos programas em funćões

3. Vectores e Strings

4. Apontadores

5. Estruturas de dados

6. Apontadores e estruturas de dados dinČmicas

7. Ficheiros

8. Conceitos avanćados

 

Program Content

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

 

3        Demonstraćčo da coerźncia dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular – 1000 caracteres

 

Os conteúdos programáticos estčo coerentes com os objectivos de aprendizagem na medida em que abordam todos os temas sobre a linguagem C que deverčo ser dominados pelos alunos no final da unidade curricular.  Em particular comeća-se por abordar os conceitos fundamentais inerentes aos tipos de dados e estruturaćčo de programas em C. Particulariza-se inicialmente o estudo na manipulaćčo de vetores e strings e posteriormente abordam-se os apontadores bem como a sua aplicaćčo na passagem de parČmetros por referźncia e na definićčo e manipulaćčo de estruturas de dados dinČmicas. Todos os temas abordados sčo exemplificados com a aplicaćčo em vários exercícios concretos. Os objectivos da aprendizagem estčo portanto alinhados com os temas abordados tanto ao nível teórico-prático como prático, sendo aplicados em exemplos concretos variados tanto nas aulas como em trabalhos para casa.

 

Demonstration of the consistency between the syllabus and the learning objectives of the course

 

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 application’s 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.

 

 

4        Metodologias de ensino (avaliaćčo incluída) – 1000 caracteres

 

Esta unidade curricular está organizada em aulas teórico-práticas (TP) e práticas (PR). A metodologia de ensino utilizada no Čmbito das aulas TP baseia-se na exposićčo oral dos conteúdos programáticos e na sua imediata exemplificaćčo em aplicaćões e exercícios concretos sobre os temas abordados. Paralelamente, no contexto das aulas práticas laboratoriais, os alunos tźm oportunidade de  aplicar e desenvolver mais exercícios que complementam a base de experiźncias com o desenvolvimento e estruturaćčo de funćões e programas em C. A avaliaćčo é contínua, 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 realizaćčo de um exame e pela implementaćčo de um projeto prático cujos requisitos sčo propostos durante o semestre.

Teaching methodologies (including evaluation)

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.

 

5        Demonstraćčo da coerźncia das metodologias de ensino com os objetivos de aprendizagem da unidade curricular – 3000 caracteres

 

As metodologias de ensino aplicadas nesta unidade curricular procuram levar os alunos a contactar e dominar os conceitos mais importantes para o desenvolvimento de aplicaćões  na linguagem de programaćčo C. Procura-se ainda que os alunos desenvolvam competźncias práticas na estruturaćčo de aplicaćões e desenvolvimento de programas em C. As aulas teórico-práticas e em particular as aulas práticas laboratoriais permitem um contato permanente com a implementaćčo e estruturaćčo de aplicaćões com base em funćões, facilitando portanto o progresso gradual no desenvolvimento de aplicaćões em C. Esta experiźncia e contato com contextos práticos específicos e concretos permite ainda melhorar o conhecimento e aplicaćčo da linguagem C, sendo essencial para aumentar o progresso técnico e as competźncias de programaćčo dos estudantes.

Demonstration of the consistency between the teaching methodologies with the learning objectives of the course

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.

 

6        Bibliografia de consulta/existźncia obrigatória – 1000 caracteres

[1] L. Damas, Linguagem C, 10Ľ Edićčo, FCA, 1999.

[2] M. Sá, Fundamentos de Programaćčo 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: Programaćčo nas linguagens C e Java, Centro AtlČntico, 2005.