AVVISO 2

Gli studenti sono invitati a stare attenti a quei "gruppi matricole" WhatsApp e Telegram
che sembrano ufficiali (in quanto fanno uso del logo dell'Universita'), mentre non lo sono affatto.
I gruppi creati dal basso, creati/gestiti da studenti frequentanti sono i benvenuti,
mentre non lo sono quelli che hanno una apparente veste istituzionale ma non sono autorizzati dall'Ateneo di Pisa.
In particolare si invitano gli studenti a non fornire a questi ultimi i propri dati personali,
in quanto potrebbero non rispettare le disposizioni vigenti in materia di trattamento degli stessi.

AVVISO 1

Il canale MS Teams del corso e' il questo.
(si consiglia di installare prima Microsoft Teams)

Sito del corso di
Fondamenti di Programmazione ( Codice 862II - 9CFU )

Insegnamento del primo anno del Corso di Laurea in Ingegneria Informatica

DOCENTI

Marco Cococcioni     Lorenzo Fiaschi     Carlo Puliafito     Federico Rossi

MATERIALE DIDATTICO

1) Andrea Domenici, Graziano Frosini, "Introduzione alla Programmazione ed Elementi di Strutture Dati con il Linguaggio C++",
Milano: Franco Angeli (va bene dalla quinta edizione in poi)

2) Paolo Corsini e Graziano Frosini, "Note sull’organizzazione di un calcolatore e Rappresentazione dell’informazione", Edizioni ETS, Pisa, 2011

3) Slide del corso, in formato PDF:
Parte 0: Introduzione all'informatica e rappresentazione dei numeri
Parte 1: Programmazione in stile C, usando il linguaggio C++
Parte 2: Programmazione in C++ vera e propria (le Classi)

Tutte e tre le parti in un unico file pdf, pronto per la stampa [rilegare lungo lato vert. sin.]

MODALITA' DI ESAME (occorre iscriversi con ALMENO 6 GIORNI di anticipo)

Tutti i dettagli sono disponibili qui

ARGOMENTI DEL CORSO

Concetti di base della programmazione
Rappresentazione dell'informazione
Programmare in C
Concetti di base della programmazione a oggetti
Programmare in C++
Progettare ed implementare tipi di dato astratti

REGISTRO DELLE LEZIONI dello scorso anno (2024-2025)

Il registro delle lezioni di quest'anno si trova qui
Il registro delle lezioni DELLO SCORSO ANNO anno si trova invece qui

LABORATORI DEL GIOVEDI'

Il materiale didattico utilizzato nei laboratori del giovedi'
dello scorso anno si trova al seguente link.

MATERIALE DIDATTICO AGGIUNTIVO

  • [PDF] Tabella ASCII in formato pdf  (il codice cpp utilizzato per generarla e' scaricabile  qui)
  • [PDF] ESERCIZI RISOLTI sulla Rappresentazione dei numeri (naturali, interi e reali)
  • [PDF] Priorita' e Associativita' degli operatori in C++
  • [PDF] Approfondimento sulle classi di memorizzazione in C++

  • [C++] Radice quadrata intera di un numero non negativo  

  • FUNZIONI PER OPERARE SULLE C-STRINGHE:   my_strlen.cpp   my_strcpy.cpp   my_strcmp.cpp   my_strcat.cpp   letturaSicuraCstringheDaTastiera.cpp   safe_strncpy.cpp
  • [C++] Ordinamento di un vettore (SelectionSort e BubbleSort) e ricerca di un elemento (completa e binaria)
  • [C++] Funzione che estende un vettore dinamico, aggiungendo un nuovo elemento in fondo
  • [C++] Vettore di Vettori allocato sullo heap
  • [C++] Matrice di cstringhe
  • [PDF] ESERCIZI RISOLTI su vettori/matrici
  • [C++] FUNZIONI RELATIVE ALLE LISTE:   CreaListaDiInteriLettiDaTastiera.cpp   eliminaTutteLeOccorrenze
  • [PDF] ESERCIZI RISOLTI sulle liste
  • [C++] Soluzioni alternative per la definizione dell'operazione di complesso coniugato, come esempio di overloading di un operatore unario
  • [C++] Come definire da zero un tipo enumerato simile all'enumerato ios, definito dalla libreria iostream
  • [C++] Un esempio di uso delle direttive del preprocessore
  • [C++] Implementazione ricorsiva della stampaTriangoli
  • [C++] Implementazione ricorsiva dell'algoritmo DIV&MOD visto a lezione
  • [C++] Conversione da base 10 a base beta (algoritmo alternativo al DIV&MOD, che stampa le cifre nell'ordine giusto)
  • [C++] Esempio di come si possono implementare in maniera ricorsiva le funzioni base che aggiornano una lista di interi
  • COMPILATORE E AMBIENTE INTEGRATO DI SVILUPPO

    Come ambiente di sviluppo C++ verra' utilizzato CLion (esiste sia per Windows, che per Linux che per MacOS)
    CLion necessita di CMAKE (per Windows, scaricare il file cmake-3.30.3-windows-x86_64.msi e poi fare doppio click)
    ed ovviamente di un compilatore C++ (CLion puo' essere visto una una interfaccia grafica per il compilatore).
    (Per Windows si consiglia MinGW_64bit, ma un qualunque altro compilatore C++ va bene (CLang, Microsoft C++ Compiler, Intel C++ Compiler, ecc...)
    I video tutorial su come procurarsi una licenza per CLion e su come installare CLion (con i relativi accessori, MingGW e CMAKE)
    si trovano qui:
  • Installazione di CLion su Windows
  • Installazione di CLion su Mac
  • Istruzioni su come creare un progetto in CLion
  • TESTI D'ESAME (prove pratiche al calcolatore)

    2024
    Appello 1: Quiz (con soluzione) - Testo - main.cpp, compito.h, compito.cpp
    Appello 2: Quiz (con soluzione) - Testo - main.cpp, compito.h, compito.cpp
    Appello 3: Quiz (con soluzione) - Testo - main.cpp, compito.h, compito.cpp
    Appello 4: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp
    Appello 5: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp
    Appello 6: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp
    Appello 7: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp

    2023
    Appello 1: Quiz (con soluzione) - Testo - main.cpp, compito.h, compito.cpp
    Appello 2: Quiz (con soluzione) - Testo - main.cpp, compito.h, compito.cpp
    Appello 3: Quiz (con soluzione) - Testo - main.cpp, compito.h, compito.cpp
    Appello 4: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp
    Appello 5: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp
    Appello 6: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp
    Appello 7: (no Quiz) - Testo - main.cpp, compito.h, compito.cpp

    2022
    Appello 1: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 2: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 3: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 4: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 5: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 6: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 7: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp

    2021
    Appello 1: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 2: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 3: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 4: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 5: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 6: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 7: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp

    2020
    Appello 1: Quiz (con soluzione) - Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Quiz (con soluzione) - Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Quiz (con soluzione) - Testo - compito.h, compito.cpp, main.cpp
    Appello 4: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 5: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 6: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp
    Appello 7: ( no Quiz, causa Covid-19) - Testo - compito.h, compito.cpp, main.cpp

    2019
    Appello 1: Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Testo - compito.h, compito.cpp, main.cpp
    Appello 4: Testo - compito.h, compito.cpp, main.cpp
    Appello 5: Testo - compito.h, compito.cpp, main.cpp
    Appello 6: Testo - compito.h, compito.cpp, main.cpp
    Appello 7: Testo - compito.h, compito.cpp, main.cpp

    2018
    Appello 1: Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Testo - compito.h, compito.cpp, main.cpp
    Appello 4: Testo - compito.h, compito.cpp, main.cpp
    Appello 5: Testo - compito.h, compito.cpp, main.cpp
    Appello 6: Testo - compito.h, compito.cpp, main.cpp
    Appello 7: Testo - compito.h, compito.cpp, main.cpp

    2017
    Appello 1: Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Testo - compito.h, compito.cpp, main.cpp
    Appello 4: Testo - compito.h, compito.cpp, main.cpp
    Appello 5: Testo - compito.h, compito.cpp, main.cpp
    Appello 6: Testo - compito.h, compito.cpp, main.cpp
    Appello 7: Testo - compito.h, compito.cpp, main.cpp

    2016
    Appello 1: Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Testo - compito.h, compito.cpp, main.cpp
    Appello 4: Testo - compito.h, compito.cpp, main.cpp
    Appello 5: Testo - compito.h, compito.cpp, main.cpp
    Appello 6: Testo - compito.h, compito.cpp, main.cpp
    Appello 7: Testo - compito.h, compito.cpp, main.cpp

    2015
    Appello 1: Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Testo - compito.h, compito.cpp, main.cpp
    Appello 4: Testo - compito.h, compito.cpp, main.cpp
    Appello 5: Testo - compito.h, compito.cpp, main.cpp
    Appello 6: Testo - compito.h, compito.cpp, main.cpp
    Appello 7: Testo - compito.h, compito.cpp, main.cpp

    2014
    Appello 1: Testo - compito.h, compito.cpp, main.cpp
    Appello 2: Testo - compito.h, compito.cpp, main.cpp
    Appello 3: Testo - compito.h, compito.cpp, main.cpp
    Appello 4: Testo - compito.h, compito.cpp, main.cpp
    Appello 5: Testo - compito.h, compito.cpp, main.cpp
    Appello 6: Testo - compito.h, compito.cpp, main.cpp
    Appello 7: Testo - compito.h, compito.cpp, main.cpp