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