Programação de Computadores

Base Knowledge

Basic knowledge of a programming language.

Teaching Methodologies

In theoretical classes, the predominant teaching methodology is the expository method, complemented by the analysis of illustrative examples. Laboratory classes allow the consolidation of theoretical knowledge acquired throughout the semester through guided resolution of proposed problems. There will also be a project component that will be developed in the classroom during the semester.

Laboratory classes are held at the Computer Support Labs where students have personal computers at their disposal.

 

Learning Results

Objectives: The main objective of this course is to provide students with the techniques/tools they need to solve, write, debug, and test small and medium-sized applications using the C programming language.

Competences

  1. Apply the concepts and techniques needed to develop efficient algorithms to solve proposed problems.
  2. Develop programs in a structured way in the C language, tackling real problems in an efficient and organised manner.
  3. Systematically debug and test programs, interpreting and analysing the results to ensure the correctness and efficiency of the developed code.
  4. Demonstrate an understanding of the main characteristics and concepts of object-oriented languages, contributing to a more comprehensive vision when solving programming problems.
  5. Actively contribute to group work, communicating effectively, sharing ideas and knowledge, and collaborating constructively to achieve the proposed objectives.
  6. Demonstrate ability in writing and documenting technical reports
  7. Adopt ethical practices when carrying out academic work, avoiding plagiarism and properly referencing sites and authors, and promoting academic integrity and intellectual honesty.

Program

1. Pointers

 – Addresses and pointers

 – Declaration of pointers

 – Operators * and &

 – Pointers and data types

 – Arithmetic of pointers

 – Pointers to pointers

2. Arrays

 – Arrays and strings as function arguments

 – Arrays of pointers 

 – Multidimensional arrays

 – Multidimensional arrays as function arguments

3. Dynamic Storage Allocation

 – Memory allocation

 – Main functions of dynamic memory allocation

 – Free memory

4. Ordering and Searching Algorithms

 – Searching and Sorting Algorithms

 – Selection Sort

 – Bubble Sort

 – Insertion Sort

 – Linear Search

 – Sentinel Linear Search

 – Binary Search

5. Structures 

 – Definition

 – Declaration and initialization of structures

 – Structure processing rules

 – Nested Structures

 – Definition of new types

 – Arrays of structures

 – Functions and structures

 – Union

 – Bit Fields

6. Files

 – Text files versus binary files

 – Streams

 – Basic file operations

 – Standard files

 – Direct access and sequential access

– Files of Structures 

 – Insert, change, and delete Elements from a file

7. Dynamic Data Structures

 – Self-referential structures

 – Types of dynamic data structures

 – Linked lists

 – Operations on linked lists

8. Writing Large Programs

 – Header Files

 – Dividing a program into multiple files

9. Introduction

 – Programming paradigms

 – Characteristics of object-oriented languages

 – Classes and Objects

 – Analysis of small programs in C ++

Curricular Unit Teachers

Verónica Maria Marques do Carreiro Silva Vasconcelos

Internship(s)

NAO

Bibliography

Recommended Bibliography:

Vasconcelos, V., Marques, L. (2012). Linguagem C – Textos de apoio. Instituto Superior de Engenharia de Coimbra.

Damas, L. (1999). Linguagem C. FCA – Editora de Informática.

Rodrigues, P., Pereira, P. , Sousa, M. (1998).  Programação em C++ . FCA – Editora de Informática, 3ª Ed.

Ritchie, D. M., Kernighan, B. W., & Lesk, M. E. (1988). The C programming language. Englewood Cliffs: Prentice Hall.

Schildt, H. (2000). Teach Yourself C. McGraw-Hill, 4th Ed.

King, K. N. (2008). C programming: a modern approach. WW Norton & Company.

Vasconcelos, V. (2021).  Notes used in classes, lab sheets, solved exercises, and support software. Coimbra: ISEC.