![Page 1: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/1.jpg)
PROGRAMMAZIONE I
A.A. 2019/2020
![Page 2: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/2.jpg)
INFO
Programmazione I con Laboratorio: 73 ore (9 CFU)Pagina Web corso: http://www.dmi.unipg.it/francesco.santini/progI.html
Unistudium: https://www.unistudium.unipg.itOrario martedì 14-17, mercoledì 9-11, giovedì 11-13
Recuperi … da decidere
Canali per comunicare (più lenti):üRicevimento Mercoledì 14-17 (meglio su appuntamento)ü[email protected] o [email protected]
![Page 3: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/3.jpg)
TELEGRAM (PIÙ VELOCE)
Telegram: @safranCanale: https://telegram.me/programmazione1_PG
Usato come metodo veloce per comunicare con me (@safran) e per comunicazioni generali (il canale)
ISCRIVETEVI !!!
![Page 4: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/4.jpg)
PROGRAMMA
Programming in CüLanguage Basics üTypesüLiteralsüType conversionsüExpressions and operatorsüStatementsüLoopsüFunctionsüArraysüPointersüStructures, UnionsüDynamic Memory ManagementüInput and OutputüPre-processing directives
Lang
uage
![Page 5: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/5.jpg)
PROGRAMMA
General programming conceptsüInterpreted and compiled languagesüScopeüRecursionThink like a programmer: problem solvingProgramming in C part IIüCompiling with GCCüDebugging C Programs with GDBLinked ListsüDifferent representationsüCommon operations
![Page 6: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/6.jpg)
OBIETTIVI APPRENDIMENTO
1. Problem solving2. General programming languages concepts
3. C language
4. Use of a compiler and debugger
5. Linked Lists
Saper programmare (in C)
![Page 7: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/7.jpg)
MATERIALE
Slide (su mia pagina Web e Unistudium), upload PRIMA della lezione
Libri (proposti successivamente)
Esercitazioni in classeEsercitazioni a casa
![Page 8: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/8.jpg)
LIBRO PRINCIPALE
Il Linguaggio C – Fondamenti e tecniche di programmazioneBy Paul J. Deitel and Harvey M. DeitelPublisher: Pearson, 8th edition (August 2016)Pages: 637Euro: 33,15 (Amazon)
ITA
![Page 9: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/9.jpg)
RIFERIMENTO VELOCE
C in a NutshellBy Peter Prinz, Ulla Kirch-PrinzPublisher: O'Reilly MediaFinal Release Date: November 2002Pages: 144Euro: 8,32 (Amazon)
EN
![Page 10: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/10.jpg)
ALTRI LIBRI
Il linguaggio C. Principi di programmazione e manuale di riferimento
By B. Kernighan, D. RitchiePublisher: Pearson2nd edition (January 2004)Pages: 313Euro: 22,95 (Amazon IT)
ITA
![Page 11: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/11.jpg)
HELLO, WORLD
![Page 12: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/12.jpg)
ALTRI LIBRI
ITA
C didattica e programmazione
By A. Kelly, I. PohlPublisher: Pearson??nd edition (??)Pages: ~672Euro: ~33,15 (Amazon IT)
![Page 13: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/13.jpg)
ALTRI LIBRI
C in a nutshell
By P. Prinz, T. CrawfordPublisher: O’Reilly2nnd edition (March 2015)Pages: 812Euro: 45,63 (Amazon IT)
EN
![Page 14: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/14.jpg)
WHY WILL SLIDES BE IN ENGLISH?
![Page 15: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/15.jpg)
DOVE AIUTARSI
https://stackoverflow.com
http://www.cprogramming.com/tutorial/c-tutorial.htmlhttp://www.w3schools.in/c-tutorial/
https://www.tutorialspoint.com/cprogramming/
![Page 16: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/16.jpg)
ESAME
1. Progetto in C da consegnare su GitHub ClassroomüAssegnato a Dicembre
üLa scadenza per consegnare ciascun progetto è qualchegiorno dopo la prova scritta (chiusura automatica su GitHub)
2. Prova scritta
3. Prova di Laboratorio su progetto consegnato + orale
Registrazione su SOL: https://www.segreterie.unipg.it
Date:ü14 Gennaio, 28 Gennaio, 12 Febbraio, 15 Aprile, Giugno,
Luglio, Settembre, Novembre
![Page 17: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/17.jpg)
ESAMI PASSATI CON CORREZIONI
http://www.dmi.unipg.it/francesco.santini/progI.html
![Page 18: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/18.jpg)
ESEMPIO
![Page 19: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/19.jpg)
REGOLE
Nome e cognome su testo e tutti i fogli protocollo usatiScrivere svolgimento su foglio protocolloü Senza un’idea di svolgimento vale 0 puntiCopiare solo la soluzione nel riquadro dell’eserciziocorrispondente nel testoüOppure “Vedi foglio”Durata ~ 2:20 ore
Sul banco, consentita solo una penna (E BASTA)
![Page 20: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/20.jpg)
PROGETTO
Progetto valutato da 1 a 4 (+ se aggiunte altre feature), ma üSe non compila a causa di errori, valutato non sufficiente: no
ammessi all’oraleüSe alcune funzioni sono sbagliate, valutato non sufficiente:
no ammessi all’oralePunti sommati al voto dello scritto
In generale il progetto riguarda lo sviluppo di variefunzioni su una lista dinamica, ma non sempre (vedianno scorso)Prova anti-plagio
![Page 21: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/21.jpg)
TOOL
Niente orale per entrambi
![Page 22: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/22.jpg)
PROVA LABORATORIO
1. Vi chiederò di modificare il progetto assegnato a casaEsempio di domandeüCreare una nuova funzione che invece di inserire in testa
alla lista (come nel testo del progetto) inserisce in fondo allalista
üCreare una funzione che scorre la lista e aggrega dei campi: per esempio somma il campo X per tutti gli elementi dellalista
Durata: 1 ora2. Alcune domandeüAlcuni punti in più (o in meno)
![Page 23: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/23.jpg)
SE NON SAPETE MODIFICARE IL VOSTRO PROGETTO NEL TEMPO ASSEGNATO: ESAME FALLITO
![Page 24: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/24.jpg)
LET’S START
![Page 25: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/25.jpg)
ALGORITHMS
A procedure for solving a mathematical problem (as of finding the greatest common divisor) in a finite number of steps that frequently involves repetition of an operation.A flowchart is a type of diagram that represents an algorithm, showing the steps as boxes of various kinds, and their order by connecting them with arrows.
Sequence of operations from top to bottom
Euclid’s Elements 300 BC
![Page 26: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/26.jpg)
WHERE ALGORITHM COMES FROM
It comes from Al-Khwārizmī (Persian: خوارزمی , c. 780–850), a Persian mathematician, astronomer, geographer, and scholar.
![Page 27: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/27.jpg)
ANSI/ISO 1970 (REVISED 1985)
![Page 28: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/28.jpg)
EXAMPLE OF A PROGRAM IN C#include <stdio.h>
int main(){
int a, b;
printf("Enter first positive integer: \n");scanf("%d", &a); printf("Enter second positive integer: \n");scanf("%d", &b);
while(b != 0) {
if(a > b)a = a - b;
else b = b - a;
} printf("GCD = %d\n", a);
return 0;
}
![Page 29: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/29.jpg)
![Page 30: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/30.jpg)
1. Ricevimento2. Seconda prova
No
![Page 31: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/31.jpg)
FLOWCHART RESOURCES
https://en.wikipedia.org/wiki/Flowcharthttps://www.draw.io
![Page 32: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/32.jpg)
PROGRAMMING
Programming is the process of taking an algorithm and encoding it into a notation, a programming language, so that it can be executed by a computer.
Problem solving
A program is a collection of instructions
ProblemThink
about the algorithm
Choose the right language
Start Program
ming
![Page 33: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/33.jpg)
TIPS: HOW TO LEARN PROGRAMMING
1. Look at the Example Code: When you're first learning to program, you should make sure to look at, and try to understand, every example. Read the code examples before the text, and try to figure out what they did. (NOW)
2. Don't Just Read Example Code--Run It: Then type the sample code into a compiler--if you type it, instead of copying and pasting it, you will really force yourself to go through everything that is there. (NOW)
3. Write your Own Code as Soon as Possible: start writing sample programs that use every point we did. (NOW)
4. Learn to Use a Debugger: A debugger will allow you to step line by line through a piece of code (not now)
5. Seek out More Sources: tutorials, examples, books, man. Program code ALWAYS with handbook and/or Internet. (NOW)
![Page 34: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/34.jpg)
WHY C
![Page 35: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/35.jpg)
HOW MANY SPOKEN LANGUAGES
~7097https://www.ethnologue.com/guides/how-many-languages
![Page 36: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/36.jpg)
HOW MANY PROGRAMMING LANGUAGES?
Wikipedia has a list of 700 programming languagesühttps://en.wikipedia.org/wiki/List_of_programming_languagesTiobe has a list of 250 languagesüTIOBE tracks a programming language if it passes 3 tests: it
must have its own Wikipedia page, it must be Turing complete, and a Google search for it must return over 5,000 search results.
http://codelani.com/posts/how-many-programming-languages-are-there-in-the-world.htmlüTheir current estimate for active general purpose
programming languages is between 500 and 2,000.üTheir current estimate for all active computer languages is
between 5,000 and 25,000.
![Page 37: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/37.jpg)
WHAT IS THE BEST LANGUAGE?
It depends:üWeb: Javascriptü(data) science/mining, machine learning: PythonüLow level and fast applications: C/C++üWrite once run everywhere, Android: JavaüServer-side for the Web: PHPüProductivity for backend development (Airbnb, GitHub):
Ruby
![Page 38: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/38.jpg)
TIOBE INDEX
https://www.tiobe.com/tiobe-index/
![Page 39: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/39.jpg)
C PERFORMANCE
![Page 40: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/40.jpg)
BITCOIN CORE
https://bitcoincore.orghttps://github.com/bitcoin/bitcoin
![Page 41: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/41.jpg)
JOBS
![Page 42: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/42.jpg)
JOBS
![Page 43: PROGRAMMAZIONE I · 1. Progetto in C da consegnare su GitHub Classroom üAssegnato a Dicembre üLa scadenza per consegnare ciascun progetto è qualche giorno dopo la prova scritta](https://reader030.vdocuments.pub/reader030/viewer/2022040714/5eceebcd0430b2253d4acfad/html5/thumbnails/43.jpg)
JOBS