|
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) |
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.
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
Algoritmia e Programa�‹o
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
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
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
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.
[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.
Computador Port‡til
CodeBlocks (http://www.codeblocks.org/)
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.
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 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 1¼ 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
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.
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. 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
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.
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.
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.
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 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.
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» 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.