Introduzione.pdf

Full Transcript

Presentazione del Corso Fondamenti di Programmazione Corso di Studio: Ingegneria Informatica e dell'Informazione Università di Siena, A.A. 2024-2025 Lezione 1 Sara Brunetti (Matricole A-L) [email protected] 0577 2345...

Presentazione del Corso Fondamenti di Programmazione Corso di Studio: Ingegneria Informatica e dell'Informazione Università di Siena, A.A. 2024-2025 Lezione 1 Sara Brunetti (Matricole A-L) [email protected] 0577 2345886, Ufficio 236 Stefano Melacci (Matricole M-Z) [email protected] 0577 233786, Ufficio 111 Sommario Informazioni generali Introduzione al corso Motivazioni e Obiettivi Algoritmi per la risoluzione di problemi Programmi Il calcolatore Hardware e software Linguaggi di programmazione Informazioni generali Orario delle lezioni e aula: l Matricole A-L l Lunedì: 14:00-16:00 – aula 101 l Martedì: 14:00-18:00 – Lab. 124 l Matricole M-Z l Lunedì: 14:00-16:00 – aula 149 l Martedì: 14:00-18:00 – Lab. 143 Informazioni generali Portale USiena Integra: http://elearning.unisi.it/ l Ricerca del corso per titolo: FONDAMENTI DI PROGRAMMAZIONE (108622) 2024/2025 l Oppure link diretto: https://elearning.unisi.it/course/view.php?id=11750 l Qui troverete materiale didattico, informazioni sul corso, … E’ necessario iscriversi sulla pagina del corso! Basta visitare la pagina di cui sopra, fare login con le proprie credenziali Unisi (UnisiPass) e inserire la seguente chiave (prendete nota!) FondamentiProgrammazione2425 Informazioni generali Modalità d’esame: A) Prova pratica (al calcolatore) di programmazione (linguaggio C) l Esercizi da svolgere in 3 ore l E' ammessa la consultazione di materiale didattico B) Successivamente (alcuni giorni dopo e solo in caso di superamento della prova pratica), orale con discussione della prova e domande sul linguaggio C Esercitazioni: Durante il corso (circa a metà e a fine corso), due prove scritte con domande di teoria Breve durata (1 ora) Non è ammessa la consultazione di materiale didattico Autovalutazione Libri di Testo Manuali: l B.W. Kernighan, D.M.Ritchie. Linguaggio C, Jackson l B.W. Kernighan, R.Pike. Programmazione nella pratica, Addison-Wesley Testi consigliati: l J.R.Hanly, E.B.Koffman: Problem solving e programmazione in C, APOGEO l P.Deitel, H.Deitel. Il Linguaggio C-Fondamenti e tecniche di programmazione, PEARSON Sommario Informazioni generali Introduzione al corso Motivazioni e Obiettivi Algoritmi per la risoluzione di problemi Programmi Il calcolatore Hardware e software Linguaggi di programmazione Motivazioni Cos'è l'ingegneria? “Engineering is the creative application of scientific principles used to plan, build,direct,guide,manage,or work on systems to maintain and improve our daily lives.” National society of Professional Engineers https://www.nspe.org/ Alcuni esempi Sistemi di ausilio alla guida Identificazione delle linee di mezzeria Riconoscimento di targhe Sistemi di video-sorveglianza Analisi di transazione bancarie Videogiochi... Idea, Progettazione, Sviluppo Obiettivi Imparare le tecniche alla base della programmazione (teoriche e pratiche) al fine di risolvere problemi di ambito scientifico Obiettivi Imparare le tecniche alla base della programmazione (teoriche e pratiche) al fine di risolvere problemi di ambito scientifico Obiettivi Imparare le tecniche alla base della programmazione (teoriche e pratiche) al fine di risolvere problemi di ambito scientifico Scientifico: Tipo di problemi Approccio Obiettivi Imparare le tecniche alla base della programmazione (teoriche e pratiche) al fine di risolvere problemi di ambito scientifico Scientifico: Tipo di problemi Approccio Programmazione: Attività che consente di scrivere programmi Sequenze di istruzioni “comprensibili al calcolatore” Basi teoriche Paradigmi l Obiettivi l Linguaggi e grammatiche l Compilatori Imparare le tecniche alla base della programmazione (teoriche e pratiche) al fine di risolvere problemi di ambito scientifico Problem solving Scientifico: l Analisi del problema l Metodo risolutivo Tipo di problemi l Complessità Approccio Programmazione: Attività che consente di scrivere programmi Sequenze di istruzioni “comprensibili al calcolatore” Sommario Informazioni generali Introduzione al corso Motivazioni e Obiettivi Algoritmi per la risoluzione di problemi Programmi Il calcolatore Hardware e software Linguaggi di programmazione Problem solving Analisi del problema l Rappresentazione dei dati Informazione l Modellazione del problema Mezzo per elaborarla Procedimenti, algoritmi Metodo risolutivo Mezzo fisico, calcolatore L'informazione l Le entità (dati e risultati) su cui opera un calcolatore prendono il nome di informazione l L'informazione si misura in bit l si/no, falso/vero, 0/1.. - Interruttore acceso/spento - Tensione V=0/V=-0.8 (NIM) - Condensatore Carico/Scarico l 8 bit=1byte l Kilo: 2 10 l Mega: 2 20 l Giga: 2 30 L'Informazione e gli algoritmi (informalmente) Ø Descrizione di un procedimento o di un metodo per la soluzione di un problema Ø In modo non ambiguo Ø Da un esecutore Algoritmo (un esempio) 1. inizio dell’algoritmo; 2. acquisire dall’esterno i valori dei coefficienti a, b e c; 3. calcolare il valore D=b2-4ac; 4. se D0, allora x1=(-b+ÖD)/2a e x2=(-b-ÖD)/2a; 7. comunicare all’esterno i valori di x1 ed x2; 8. fine dell’algoritmo. Soluzione di ax2+bx+c=0 Algoritmo (un esempio) 1. inizio dell’algoritmo; 2. acquisire dall’esterno i valori dei coefficienti a, b e c; 3. calcolare il valore D=b2-4ac; 4. se D0, allora x1=(-b+ÖD)/2a e x2=(-b-ÖD)/2a; 7. comunicare all’esterno i valori di x1 ed x2; 8. fine dell’algoritmo. Es. a =1, b =5, c =2 D=25-4*2=17 Soluzione di ax2+bx+c=0 x1=(-5+Ö17)/2 , x2=(-5-Ö17)/2 Algoritmo l Sequenza finita di istruzioni elementari l Eseguibili l Non ambigue Esecutori e algoritmi l Un esecutore è definito in base a tre elementi: - L'insieme delle istruzioni che capisce (sintassi) - L'insieme delle operazioni che è capace di compiere; - Quali operazioni associa ad ogni istruzione che riconosce (semantica) Sommario Informazioni generali Introduzione al corso Motivazioni e Obiettivi Algoritmi per la risoluzione di problemi Programmi Il calcolatore Hardware e software Linguaggi di programmazione Programmi l Se l'esecutore è un calcolatore, l'algoritmo è detto programma l Il linguaggio utilizzato per implementare l'algoritmo è detto linguaggio di programmazione l L'unico linguaggio di programmazione che un calcolatore capisce è il linguaggio macchina l Programmatore: figura professionale che si occupa di scrive programmi Programmi l Sistema Operativo - Programma “supervisore” l Windows, MacOS, UNIX, Linux, iOS, Android,... l Applicazioni esistenti - word-processor/editor - web browser - compilatori o assembler l Applicazioni create dall’utente Il sistema operativo l Il sistema operativo è l’insieme di programmi che gestisce il computer: - permette l’interazione con il mondo esterno (Input/Output) - permette di eseguire programmi dell’utente - bilancia le risorse del sistema l Sullo stesso PC possono convivere o alternarsi diversi sistemi (es.Linux e Microsoft Windows o MacOS) Microsoft Windows Prodotto da Microsoft Gestisce architetture hardware basate su CPU Intel x86 (da 80386) Windows 1.0.1 Windows 10/11 (1985) (2015-oggi) 29 Versioni Windows Albero genealogico di Windows Linux Basato su UNIX, nasce nel ‘91, grazie a Linus Torvalds, studente finlandese dell’Università di Helsinki Sviluppato su piattaforma Intel 80386, fu distribuito da subito su Internet Free Open Source §Portabile Molteplici distribuzioni esistenti (Ubuntu, Red Hat, Slackware, Suse) Unix/Linux Il mondo Macintosh Nel 1984 Apple propone il Mac Mac OS, il sistema operativo E’ il primo sistema a supportare un’interfaccia grafica e il mouse Nel 2000 Apple produce il nuovo sistema operativo Mac OS X, basato su UNIX, poi rinominato in “macOS” macOS Ventura (13.5.1) è la diciannovesima versione del sistema operativo macOS sviluppato da Apple Inc (12 Settembre 2023) Sommario Informazioni generali Introduzione al corso Motivazioni e Obiettivi Algoritmi per la risoluzione di problemi Programmi Il calcolatore Hardware e software Linguaggi di programmazione Software e hardware Ø Software: Istruzioni per far eseguire ai computer delle azioni e prendere decisioni Ø Hardware: Computer Ø Il software controlla l'hardware Ø Per risolvere problemi complessi abbiamo bisogno di avvalerci della velocità di calcolo di un computer Ø Pc possono eseguire miliardi di calcoli in un secondo Ø Più di quanto un essere umano possa eseguire in tutta la sua vita!!! Ø Il supercomputer Summit è in grado di eseguire oltre 200000 miliardi di miliardi di “calcoli” al secondo (sviluppato da IBM) Il calcolatore “in astratto” Macchina Programma elettronica programmabile Input Calcolatore Output Compiti: Eseguire operazioni logiche e/o numeriche Operazioni complesse “spezzate” in operazioni elementari Componenti hardware principali l Dispositivi di input Organizzazione hardware - Ad es.: mouse, tastiera, touch screen,dispositivi standard audio... l Dispositivi di output Memoria - Ad es.: monitor, stampante l Insieme in uno stesso Dispositivi Dispositivi contenitore Processore - Processore (CPU) di input (CPU) di output l Central Processing Unit l Interpreta e esegue le Motherboard istruzioni - Memoria CPU Due Tipi di Memoria Principale (o centrale)/memorie elettroniche a semiconduttore con tecnologia VLSI - mantiene temporaneamente programmi e dati (mentre il programma è in esecuzione) area di lavoro, capacità limitata (2-8GB,128GB) - Accesso veloce (ordine di 100ns) - RAM; ROM Ausiliaria (o memoria di massa)/memorie magnetiche o l ottiche - permanente - salva programmi e risultati - Capacità (2-6TB), accesso lento (ordine di ms) - Esempi: hard disk, CD, DVD, memorie flash Organizzazione della Memoria Principale Byte = 8 bit La memoria principale è una lista di locazioni (o celle) numerate ciascuna di un byte Il dato memorizzato in una cella è il suo contenuto Il numero di byte utilizzato per memorizzare un dato varia con il tipo di dato... Organizzazione della Memoria Principale Byte = 8 bit La memoria principale è una lista di locazioni (o celle) numerate ciascuna di un byte Il dato memorizzato in una cella è il suo contenuto Il numero di byte utilizzato per memorizzare un dato varia con il tipo di dato.. Una locazione di memoria Accesso tramite indirizzo contiene sempre qualcosa! Organizzazione della Memoria Ausiliaria Radice File Directory Directory File Directory Directory Directory File File File Directory File Organizzazione della Memoria Ausiliaria Organizzazione ad albero Ogni nodo dell'albero è un file Una directory indicizza più file Un file è identificato da un path name assoluto (dalla radice della gerarchia), o relativo (dalla posizione dell'utente nel file system) c:\Users\Mario\Documents\Mario\Didattica\Fondamenti di Programmazione\Lezione1.pdf.\Didattica\Fondamenti di Programmazione\Lezione1.pdf Central Processing Unit (CPU) Dispositivo realizzato da uno o più chip (multiprocessori) capace di eseguire istruzioni Gli elementi della CPU: l Unità di controllo: Coordina e supervisiona le operazioni delle altre unità legge le istruzioni dalla memoria e ne determina il tipo l Unità aritmetico-logica: Esegue operazioni necessarie per eseguire le istruzioni (somme,sottrazione,moltiplicazione,divisione,meccanismi di decisione) l Registri: locazioni di memoria interna usata per i risultati intermedi e info di controllo (decine di byte) Il processore l La CPU può svolgere un insieme limitato di operazioni: l Spostamento di dati (accesso,lettura,scrittura,copia) – Leggi un byte da una locazione di memoria l Calcolo – Somma tra loro il contenuto di due registri l Controllo di flusso – Salta ad una locazione di memoria 45 Il processore l Ad ogni istruzione è associato un codice di N bit – (codice operazione, parametro) l La CPU inizia caricando il byte presente nella locazione 0 e lo interpreta come istruzione l Segnale di clock – Utilizzato per sincronizzare il funzionamento dei dispositivi elettronici digitali all’interno della CPU – Frequenze di clock nei personal computer moderni: 2-3GHz Ad ogni ciclo di clock, sequenzialmente, a seconda dell’istruzione si interpretano i byte successivi 46 Esempio l Supponiamo che i seguenti codici binari corrispondano alle seguenti istruzioni The linked image cannot be displayed. The file may have been moved, renamed, or deleted. Verify that the link points to the correct file and location. 47 Esempio supponiamo che la memoria del nostro computer sia così riempita (i registri a e b non sono visibili): 48 Esempio supponiamo che la memoria del nostro computer sia così riempita (i registri a e b non sono visibili): The linked image cannot be displayed. The file may have been moved, renamed, or deleted. Verify that the link points to the correct file and location. viene interpretato come una istruzione set_a Di conseguenza il byte successivo contiene il parametro 11111110 49 Esempio supponiamo che la memoria del nostro computer sia così riempita (i registri a e b non sono visibili): The linked image cannot be displayed. The file may have been moved, renamed, or deleted. Verify that the link points to the correct file and location. viene interpretato come una istruzione set_a Di conseguenza il byte successivo contiene il parametro 11111110 Risultato: il registro “a” contiene il valore 00000010 50 Esempio supponiamo che la memoria del nostro computer sia così riempita: The linked image cannot be displayed. The file may have been moved, renamed, or deleted. Verify that the link points to the correct file and location. viene interpretato come una istruzione set_b Di conseguenza il byte successivo contiene il parametro 11111111 51 Esempio supponiamo che la memoria del nostro computer sia così riempita: The linked image cannot be displayed. The file may have been moved, renamed, or deleted. Verify that the link points to the correct file and location. viene interpretato come una istruzione set_b Di conseguenza il byte successivo contiene il parametro 11111111 Risultato: il registro b contiene il valore 00000011 52 Esempio supponiamo che la memoria del nostro computer sia così riempita: The linked image cannot be displayed. The file may have been moved, renamed, or deleted. Verify that the link points to the correct file and location. viene interpretato come una istruzione sum_ab 53 Esempio supponiamo che la memoria del nostro computer sia così riempita: viene interpretato come una istruzione out_a 54 Chi coordina CPU e memorie? l Gli O.S. sono costituiti da un insieme di moduli, ciascuno dedicato a svolgere una determinata funzione l L’insieme dei moduli per la gestione della CPU e della memoria centrale è il kernel Interfaccia utente Gestore del Gestore dell’I/O File System Gestore della Gestore dei Processi Memoria Centrale KERNEL 55 Sommario Informazioni generali Introduzione al corso Motivazioni e Obiettivi Algoritmi per la risoluzione di problemi Programmi Il calcolatore Hardware e software Linguaggi di programmazione Il linguaggio macchina l Il linguaggio macchina è il linguaggio della CPU l Un programma in linguaggio macchina è una sequenza di bit che indica alla CPU le azioni da compiere sui dati (codificati in bit) l Linguaggio di programmazione (LP): - Informalmente: modo di esprimere le sequenze di operazioni da far svolgere a un computer mediante istruzioni

Use Quizgecko on...
Browser
Browser