Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Capitolo 1 (Deitel) Introduzione ai Computer
Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un Computer? 1.3 - Organizzazione di un calcolatore 1.4 - Evoluzione dei sistemi operativi 1.5 - Personal computer, calcolo distribuito ed elaborazione client/server 1.6 - Linguaggi macchina, linguaggi Assembly e linguaggi di alto livello 1.7 - Breve storia del C 1.8 - La libreria standard del C 1.9 - La dinamica chiave del software: tecnologia dei linguaggi ad oggetti Programmare in C++ Programmare in Java Altri linguaggi di alto livello Concetti importanti di programmazioni Fondamenti di un tipico ambiente di sviluppo per programmi C La dinamica del hardware Breve storia di Internet Breve storia del World Wide Web Note generali sul C e su questo libro
2
1.1 - Introduzione In questo corso studieremo il linguaggio C
Analizzeremo la struttura di un programma, con riferimento al C, e in particolare le principale tecniche di programmazione Nel Capitolo 15 del Deitel viene presentata un’introduzione al C++, un’evoluzione del C Questo corso è adatto per: Le persone tecnicamente orientate alla programmazione ma con poca o nessuna esperienza nella programmazione I programmatori con esperienza che vogliono una profonda e rigorosa trattazione “teorica” del linguaggio C
3
1.2 - Che cosa è un Computer? Computer Hardware Software
E’ un dispositivo capace di eseguire calcoli e prendere decisioni logiche Elabora dati sotto il controllo di una serie di istruzioni, che nel loro insieme sono chiamate programmi Hardware Comprende le varie unità/dispositivi che compongono il calcolatore Tastiera, schermo, mouse, dischi, memoria, CD-ROM e unità di elaborazione (CPU) sono le principali componenti hardware Software Comprende i programmi che sono eseguiti dal calcolatore fanno funzionare il computer stesso
4
1.3 - Organizzazione di un calcolatore
Ogni computer è composto da 6 unità logiche: Unità di Input Riceve informazioni/dati dall’unità di input (tastiera, mouse) Unità di Output Dà informazioni (a schermo, stampante, controllori di altre unità) Unità di Memoria Memorizza temporaneamente le informazioni in input e i programmi attivi Accesso rapido, bassa capacità, costosa Unità Aritmetico-Logica (ALU) Esegue calcoli aritmetici e prende decisioni logiche Unità di Processo centrale (CPU) Supervisiona e coordina il lavoro altre unità del computer Unità di Memoria secondaria Memorizza in modo permanente (lungo termine) dati e programmi inattivi Accesso meno rapido, alta capacità, economica
5
1.4 - Evoluzione dei sistemi operativi (1/2)
Sistema operativo Costituisce l’interfaccia tra la macchina e l’utente Serve a gestire le risorse del sistema di elaborazione ed a coordinare gli eventi che discendono dal suo uso I più noti attualmente sono Windows, Linux, Unix, OS2 Primi calcolatori (prima generazione, anni ’40) Programmazione fatta solo in linguaggio macchina, con schede forate Nessun linguaggio di programmazione né sistema operativo Sistemi Batch (seconda generazione, anni ’50) Il sistema legge in sequenza i vari job (compiti) e li esegue uno alla volta Un job contiene una serie di calcoli e può essere costituito da un singolo programma o da un insieme di programmi Sistemi programmati coi primi linguaggi (Fortran e Assembler) e con pseudo-sistemi operativi per gestire il caricamento in serie dei vari job
6
1.4 - Evoluzione dei sistemi operativi (2/2)
Multi-programmazione (terza generazione, anni ‘60) Per ridurre i tempi in cui la CPU resta inattiva, un job può occupare il processore mentre un altro è in attesa di finire un’operazione di I/O Per fare ciò, la memoria principale viene divisa in partizioni, una dedicata al sistema operativo e le rimanenti assegnate a vari job Vari job condividono le risorse del computer (multi-programmazione) Aumenta il throughput, la quantità di processi che i computer svolgono Nascono i primi sistemi operativi per gestire la multi-programmazione Time-sharing (condivisione del tempo) Variante della multi-programmazione che permette a più utenti di avere un terminale ciascuno Migliora l’interattività e riduce il tempo di risposta del calcolatore La CPU è assegnata a turno ai vari utenti e svolge ad ogni turno solo una piccola parte del loro lavoro di ognuno, poi passa un altro l’utente I sistemi operativi che gestiscono il time-sharing pongono le premesse per la creazione del primo sistema operativo efficiente (Unix)
7
1.5 - Personal computer, calcolo distribuito ed elaborazione client/server
Calcolatori abbastanza economici per essere acquistati da privati I/O, calcoli e ogni altra operazione è eseguita in locale sfruttando le sole risorse del proprio calcolatore Calcolo distribuito Fa uso di più computer interconnessi in rete per svolgere calcoli complessi L’elaborazione globale è distribuita tra le CPU dei vari calcolatori Elaborazione client/server Condivisione di informazioni/risorse attraverso una rete di calcolatori La condivisione avviene tra file server e client (personal computer) I server mettono a disposizione le informazioni e le risorse per di calcolo I client visualizzano le informazioni e/o inviano dati su cui effettuare calcoli, ricevendo in risposta dal server i risultati desiderati Possibilità di gestire contemporaneamente un numero elevato di utenti
8
Esistono 3 tipi di linguaggi per programmare
1.6 - Linguaggi macchina, linguaggi Assembly e linguaggi di alto livello (1/2) Esistono 3 tipi di linguaggi per programmare Linguaggio macchina Le istruzioni sono date da sequenze di numeri che danno alle macchine specifiche istruzioni in modo diretto (in binario) Esempio di istruzione: Linguaggi Assembly Le istruzioni sono abbreviazioni di parole inglesi che rappresentano operazioni elementari per il computer (poi tradotte da assemblatori) Forte dipendenza dalla CPU su cui sono eseguite, per cui ce ne sono tanti LOAD BASEPAY ADD OVERPAY STORE GROSSPAY
9
1.6 - Linguaggi macchina, linguaggi Assembly e linguaggi di alto livello (2/2)
Le istruzioni sono simili all’inglese odierno e fanno anche uso di notazioni matematiche (poi tradotte da compilatori) Indipendenti dalla piattaforma su cui sono eseguite, ma ne esistono comunque tanti Esempio di tali linguaggi sono C, Java, Basic, ecc.. Esempio di istruzione: grossPay = basePay + overTimePay
10
1.7 – Breve storia del C Note storiche sul C Standardizzazione del C
Fu sviluppato da Ritchie come evoluzione di due precedenti linguaggi di programmazione (BCPL e B) E’ stato usato per sviluppare il sistema operativo UNIX Oggi la maggior parte dei sistemi operativi sono scritti con C o C++ E’ un linguaggio indipendente dalla piattaforma hardware (portabile) Dalla fine degli anni ’70, il C è evoluto nel "C Tradizionale“, il nostro Standardizzazione del C Inizialmente esistevano molte piccole varianti incompatibili del C Perciò venne formato un comitato per creare una sola definizione del C che fosse “chiara, indipendente dalla macchina" Lo standard è stato creato nel 1989 e poi aggiornato nel 1999
11
1.8 - La libreria standard del C
Un programma in C consiste di vari pezzi/moduli, che sono chiamati “funzioni” Un programmatore può creare tutte le funzioni che intende usare Vantaggio: il programmatore sa esattamente come lavora il programma Svantaggio: si perde tempo prezioso Perciò i programmatori useranno spesso la libreria delle funzioni del C Usano le funzioni generiche di base contenute nella libreria come blocchi fondamentali per creare proprie funzioni più complesse e specifiche E’ bene evitare di re-inventare nuove funzioni, se non è necessario Se una funzione esiste già e funziona, generalmente è sempre meglio usare quella piuttosto che scriverne una propria nuova versione da zero Le funzioni di libreria sono scritte accuratamente, sono efficienti, e portabili
12
1.9 - La dinamica chiave del software: tecnologia dei linguaggi ad oggetti
Sono componenti software riusabili che modellano le entità presenti nel mondo reale Sono unità software aventi un significato proprio: Possono rappresentare dati, tempi, oggetti, conti bancari, fatture, audio, video, file, documenti, ecc.. Qualsiasi cosa può essere rappresentata come un oggetto Sono componenti altamente riutilizzabili I programmi generati sono più comprensibili, meglio organizzati e più facile da mantenere che i programma scritti in modo procedurale Usare gli oggetti favorisce la modularità nella struttura dei programmi Il C però non è un linguaggio a oggetti, ma procedurale C++ e Java invece sono linguaggi ad oggetti
13
1.10 - Programmare in C++ C++ Imparare il C++
Evoluzione del C sviluppata da Bjarne Stroustrup presso i laboratori Bell E’ un C “più elegante” ed è orientato agli oggetti La progettazione orientata agli oggetti è molto potente E’ noto che accresce la produttività da 10 a 100 volte Linguaggio dominante sia in azienda che nelle università Imparare il C++ Dato che C++ comprende il C, molti credono sia prima meglio diventare esperti del C e poi passare al C++, piuttosto che imparare C++ da zero L’introduzione al C++ inizia dal Capitolo 15 del Deitel
14
1.11 – Programmare in Java Java è usato per: Programmazione in Java
Creare pagine Web con contenuti dinamici ed interattivi Sviluppare applicazioni su larga scala per le imprese Accrescere la funzionalità dei Web server Fornire applicazioni per dispositivi portatili di uso comune (come i cellulari, i PDA e gli altri dispositivi mobile) Programmazione in Java Java è stato sviluppato della Sun I corsi di base che insegnano il Java in genere presentano le nozioni essenziali della grafica, del disegno, dell’animazione, dell’audio, del video, dei database, delle reti, dell’elaborazione con multi-threading e collaborativa
15
1.12 - Altri linguaggi di alto livello
Oltre ai due citati, famosissimi, pochi altri linguaggi di alto livello hanno ottenuto una largo consenso FORTRAN Si usa nelle applicazioni scientifiche ed ingegneristiche (calcoli fisici) COBOL Usato per manipolare grandi quantità di dati (sistemi gestionali) Pascal Utilizzato per scopi accademici (spesso insegnato alle superiori)
16
1.13 – Concetti importanti di programmazione
Programmazione strutturata Approccio “disciplinato” alla scrittura dei programmi Programmi chiari, facili da testare e rimuovere, e facili da modificare Multi-tasking Termine con cui si specifica che molteplici attività sono eseguite in parallelo
17
1.14 – Fondamenti di un tipico ambiente di sviluppo per programmi C
Il codice è scritto con un editor (testuale o per il C) e memorizzato su disco Loader Memoria principale Compilatore Editor Preprocessore Linker CPU . Disk Fasi di un Programma C : Editare Preprocessare Compilare Unire (linkare) Caricare Eseguire Il preprocessore (sw) elabora le direttive nel codice sorgente Il compilatore crea il codice oggetto binario e lo salva su disco Il Linker collega il codice alle librerie, crea un file .out e lo memorizza su disco (l’eseguibile finale) Il Loader carica il programma nella memoria principale La CPU prende ogni istruzione e la esegue, spesso memorizzando nuovi valori dei dati durante l’esecuzione del programma
18
1.15 - Dinamica del hardware
Ogni anno o due approssimativamente raddoppiano: La quantità di memoria disponibile in cui eseguire i programmi La quantità di memoria secondaria (come hard disk) per mantenere salvati programmi e dati a lungo termine La velocità del processore con cui il computer esegue i suoi programmi
19
1.16 - Breve storia di Internet
Internet permette Veloci e semplici comunicazioni via L’interconnessione internazionale di computer via rete Molte altre applicazioni innovative Packet switching I dati digitali sono trasferiti in rete per mezzo di piccoli pachetti Permette a più utenti di mandare e ricevere dati simultaneamente Controllo non centralizzato Se una parte di Internet si danneggia, le altre parti possono ancora operare Larghezza di banda Lo velocità trasmissione delle informazioni dipende dalla capacità delle linee di comunicazione
20
1.17 - Breve storia del World Wide Web
Il World Wide Web (WWW) Contiene e permette di visualizzare documenti multimediali più o meno su qualsiasi argomento Rende le informazioni accessibili a livello mondiale istantaneamente e in modo conveniente Permette anche a privati e piccole aziende di interfacciarsi al pubblico del mondo intero Ha cambiato il modo di fare affari e commercio
21
1.18 - Note generali sul C e su questo libro
Chiarezza nello scrivere i programmi I programmi aventi codice “confuso e disordinato” sono difficili da leggere, capire e modificare Il C è un linguaggio portabile I programmi possono funzionare su molti differenti computer Tuttavia la totale portabilità è una obiettivo illusorio Verrà seguito un percorso accurato attraverso il C Tuttavia certi dettagli e altre sottigliezze non verranno descritte Se fossero necessari ulteriori dettagli tecnici Leggere il documento “standard C” Leggere il libro su C scritto da Kernigan & Ritchie
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.