Publication in the Diário da República: Despacho n.º 7795/2021 - 09/08/2021
6 ECTS; 1º Ano, 1º Semestre, 42,0 PL + 28,0 TP , Cód. 91124.
Lecturer
            - Pedro Daniel Frazão Correia (1)(2)
(1) Docente Responsável
(2) Docente que lecciona
Prerequisites
          Not applicable.
Objectives
          Solving problems using algorithms.
Using a programming language to express an algorithm.
Using 'C' programming language to build a computer program.
Program
          1 - Concepts of computing and computers:
     - History of computing;
     - How computers work;
     - Ergonomics.
2- Algorithms and languages:
    Notions of logic;
    Algorithm development;
    Algorithm specification languages;
    Flowcharts;
    Programming languages.
3 - Information manipulation:
    - Introduction to the C language;
    - Basic data types;
    - Variables and constants;
    - Reading data;
    - Writing data;
    - Operators:
      On integers;
      On reals;
      On characters;
      Casting.
4- Conditional decision structures:
    - Logical values; 
    - Logical and relational operators;
    - Logical expressions;
    - Conditional decision:
        If-else;
        Decision by choice:
         Switch
         Break
      - Conditional assignment: decision operator ? ;
      - Instruction blocks
      - Indentation
5 - Repetition Structures:
     - Repetition with initial control:
        While
        For
     - Repetition with final control:
        Do -while
     - Change in cycle execution flow:
        Break
        Continue
     - Chained cycles;
     - Infinite cycles;
     - Increment and decrement operators;
     - Compound assignment;
6 - Composite data structures:
       - Arrays 
         Concept of Array; 
         Declaration and initialisation of arrays;
         Reading, writing and processing arrays;
         Multidimensional arrays.
       - Structs
         Concept of structures;
         Declaration and initialisation of structures;
         Reading, writing and processing structures;
7 - Modularisation of problems:
    - Definition of Procedures and Functions;
    - Passing parameters;
    - Return types;
    - Function library;
8 - Pointers and dynamic memory:
     - Pointers: Definition;
     - Passing function parameters by value and by 
       reference;
     - Strings:
       Strings and characters;
       Declaration and initialisation of strings;
       Reading, writing and processing strings;
       Passing strings to functions;
       String.h library.
     - Dynamic memory allocation.
Translated with DeepL.com (free version)
Evaluation Methodology
          Continuous assessment:
  Theoretical Part (70%): Two closed-book tests with a minimum average mark of of 7 out of 20.
  Practical Part (30%): Practical Work with a minimum mark of 10 out of 20. 
Exam-based assessment:
 Theoretical (70%): Closed-book test with a minimum mark of 7 out 20.
 Practical (30%): mark of the practical work done as part of continuous assessment or closed-book test with a minimum mark of 10. 
Bibliography
          - Damas, L. (1999). Linguagem C. Portugal:  FCA
- Kerninghan, B.  e Ritchie, D. (1988). The C Programming Language . Portugal:  PEARSON EDUCATION (US)
Teaching Method
          Lectures: course content presentation
Practical classes: Laboratorial classes with practical experiments.
Software used in class
          Algorithmi; CodeBlocks IDE


















