Fondamenti di Informatica I
Docente:
Corsi di Laurea:
Crediti:
Semestre:
Settore sc.-discipl.:
Dott. Gian Luca Marcialis
Laurea in Ingegneria Biomedica (Università di Cagliari)
5 CFU
II semestre
ING-INF/05
Obbiettivi
Il corso si propone di fornire concetti e nozioni di base di Informatica, coprendo la rappresentazione
dell’informazione, le architetture, le reti. Vengono anche dati elementi di progetto di algoritmi, utilizzando il
linguaggio C per mostrare alcuni esempi pratici.
Valutazione
L’esame prevede una prova scritta ed una prova orale.
Propedeuticità
Nessuna
PROGRAMMA
Elementi di algebra booleana
Generalità. Operazioni logiche (and, or, not)
Rappresentazione binaria dell'informazione
Numeri interi senza segno. Numeri interi in complemento a due. Rappresentazione in mantissa ed esponente per i
numeri reali (cenni)
Architetture di calcolatori
Il modello secondo Von Neumann (CPU, ALU, registri, bus, memorie, organizzazione e gestione dell'I/O).
Architettura dei sistemi informatici. Elementi della macchina di Von Neumann. Codifica dei dati e delle istruzioni di
programma. Comportamento della macchina di Von Neumann
Algoritmi e modelli di computazione
Definizione informale di linguaggio, algoritmo ed interprete. Che cos'è l'informatica. Il concetto di algoritmo. I
linguaggi per la programmazione di algoritmi. Differenza tra visione procedurale e visione orientata agli oggetti.
Introduzione al linguaggio C
Codifica degli algoritmi in un linguaggio di alto livello. Il nucleo del linguaggio C. Primi esempi di programmi C.
La costruzione incrementale dei programmi. Struttura dei programmi in linguaggio C. I/O standard.
Linguaggio C: strutture dati
Tipi semplici predefiniti (int, float, double e char). Definizione di nuovi tipi: regole sintattiche. Tipi semplici definiti
dall’utente (ridefinizione ed enumerazione esplicita dei valori). Tipi strutturati (array)
Linguaggio C: strutture di controllo
Istruzioni di selezione: if/then/else. Istruzioni cicliche: while/do, for. Istruzioni break e continue
Algoritmi di ordinamento in linguaggio C
Select-sort. Bubble-sort. Quick-sort
Strutture dati avanzate in linguaggio C
Pile e code
Linguaggio C: puntatori e allocazione dinamica della memoria
Il costruttore puntatore. Il costruttore struct. Array, puntatori e aritmetica dei puntatori. Strumenti per la gestione
dinamica dei dati e loro uso. Le operazioni di allocazione e cancellazione di memoria. Rischi della gestione
dinamica della memoria
Linguaggio C: funzioni e procedure
Struttura completa di un programma C. Le funzioni (definizione, chiamata, prototipo e passaggio dei parametri). Le
procedure. Il passaggio dei parametri per indirizzo. Aspetti avanzati nell’uso dei sottoprogrammi. Procedure e
funzioni predefinite
Bibliografia e testi consigliati
Oltre al materiale reso disponibile dal docente durante lo svolgimento del corso, è consigliata la consultazione dei
seguenti testi:
Test di riferimento
• Ceri, Mandriola, Sbattella, Informatica: Arte e Mestiere – McGraw-Hill
Approfondimenti sul linguaggio C
• Herbert Schildt – Linguaggio C. La guida completa – McGraw-Hill
• A. Kelley e I. Pohl, C: Didattica e Programmazione, Addison Wesley, 2003
Esercizi sul linguaggio C
• Byron S. Gottfried – Programmare in C – McGraw-Hill
Altri testi di interesse
• V. Aho, J.E. Hopcroft, and J.D. Ullman (1982), “Data Structures and Algorithms”, Addison-Wesley
Fundamentals of Computer Science I
Lecturer:
Bachelor/Master programs:
Credits:
Semester schedule:
Sc.-discipl. sector:
Dr. Gian Luca Marcialis
Bachelor of Biomedical Engineering (University of Cagliari)
5 CFU
II semester
ING-INF/05
Objectives of the course
The goal of the course is to teach basics of computer science, and also to give some guidelines to algorithms design.
The C language is adopted to show some examples.
Examination guidelines
The examination is written and oral.
Required background None
PROGRAMMA
Fundamentals of boolean algebra
Basic concepts. Logical operations (and, or, not)
Binary representation
Unsigned Integer. Twos complement representation. Floating point representation.
Computer Architecture
Von Neumann Architecture (CPU, ALU, registers, bus, memories, I/O). Instruction execution.
Algorithms and computational models
Definitions: language, algorithm, interpreter. Definition of “Computer Science”. Programming languages.
Procedural approach and Object Oriented approach.
Introduzione al linguaggio C
Algorithms translation in high level languages. The C language. Basic examples. Program structure in C language.
Standard I/O.
Data structures in C
Int, float, double, char. Struct and enum. Array.
Control flow structures in C
If/then/else. While/do, for. Break and continue.
Sorting in C
Selection-sort. Bubble-sort. Quick-sort.
Advanced data structures in C
Stack and Queue
Pointers and Dynamic memory allocation
Pointers. Array through pointers. Dynamic management of data. Pros and cons in dynamic memory allocation
Functions in C
An example of C programs. Functions: basics, calls, parameters management.
Reference books
Slides shown during lessons will be made available at the web site of the lecturer. Other books that can be used are:
Main reference book
• Ceri, Mandriola, Sbattella, Informatica: Arte e Mestiere – McGraw-Hill
C Language
• Herbert Schildt – Linguaggio C. La guida completa – McGraw-Hill
• A. Kelley e I. Pohl, C: Didattica e Programmazione, Addison Wesley, 2003
Exercises on C Language
• Byron S. Gottfried – Programmare in C – McGraw-Hill
Others
• V. Aho, J.E. Hopcroft, and J.D. Ullman (1982), “Data Structures and Algorithms”, Addison-Wesley