21
2000 Prentice Hall, Inc. All rights reserved. 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 1.10 - Programmare in C++ 1.11 - Programmare in Java 1.12 - Altri linguaggi di alto livello 1.13 - Concetti importanti di programmazioni 1.14 - Fondamenti di un tipico ambiente di sviluppo per programmi C 1.15 - La dinamica del hardware 1.16 - Breve storia di Internet 1.17 - Breve storia del World Wide Web

2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

Embed Size (px)

Citation preview

Page 1: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

Capitolo 1 (Deitel) Introduzione ai Computer

Indice degli argomenti

1.1 - Introduzione1.2 - Che cosa è un Computer?1.3 - Organizzazione di un calcolatore 1.4 - Evoluzione dei sistemi operativi1.5 - Personal computer, calcolo distribuito ed elaborazione client/server1.6 - Linguaggi macchina, linguaggi Assembly e linguaggi di alto livello1.7 - Breve storia del C1.8 - La libreria standard del C1.9 - La dinamica chiave del software: tecnologia dei linguaggi ad oggetti1.10 - Programmare in C++1.11 - Programmare in Java1.12 - Altri linguaggi di alto livello1.13 - Concetti importanti di programmazioni1.14 - Fondamenti di un tipico ambiente di sviluppo per programmi C 1.15 - La dinamica del hardware1.16 - Breve storia di Internet1.17 - Breve storia del World Wide Web1.18 - Note generali sul C e su questo libro

Page 2: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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

Page 3: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.2 - Che cosa è un Computer?

• Computer – 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

Page 4: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.3 - Organizzazione di un calcolatore

• Ogni computer è composto da 6 unità logiche:1. Unità di Input

• Riceve informazioni/dati dall’unità di input (tastiera, mouse)

2. Unità di Output• Dà informazioni (a schermo, stampante, controllori di altre unità)

3. Unità di Memoria• Memorizza temporaneamente le informazioni in input e i programmi attivi

• Accesso rapido, bassa capacità, costosa

4. Unità Aritmetico-Logica (ALU) • Esegue calcoli aritmetici e prende decisioni logiche

5. Unità di Processo centrale (CPU) • Supervisiona e coordina il lavoro altre unità del computer

6. Unità di Memoria secondaria• Memorizza in modo permanente (lungo termine) dati e programmi inattivi

• Accesso meno rapido, alta capacità, economica

Page 5: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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

Page 6: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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)

Page 7: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.5 - Personal computer, calcolo distribuito ed elaborazione

client/server• Personal computer

– 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

Page 8: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.6 - Linguaggi macchina, linguaggi Assembly e linguaggi di alto livello

(1/2)• Esistono 3 tipi di linguaggi per programmare

1. Linguaggio macchina – Le istruzioni sono date da sequenze di numeri che danno alle macchine

specifiche istruzioni in modo diretto (in binario)

– Esempio di istruzione:

+1300042774+1400593419+1200274027

2. 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

– Esempio di istruzione:

LOAD BASEPAY

ADD OVERPAY

STORE GROSSPAY

Page 9: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.6 - Linguaggi macchina, linguaggi Assembly e linguaggi di alto livello

(2/2)

3. Linguaggi di alto livello – 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

Page 10: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.7 – Breve storia del C

• Note storiche sul 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

Page 11: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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

Page 12: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.9 - La dinamica chiave del software:

tecnologia dei linguaggi ad oggetti• 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

Page 13: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.10 - Programmare in C++

• 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

Page 14: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.11 – Programmare in Java

• Java è usato per: – 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

Page 15: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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)

Page 16: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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

Page 17: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.14 – Fondamenti di un tipico ambiente

di sviluppo per programmi C

• Fasi di un Programma C :

1. Editare

2. Preprocessare

3. Compilare

4. Unire (linkare)

5. Caricare

6. Eseguire

Loader

Memoria

principale

Compilatore

Editor

Preprocessore

Linker

 CPU

Memoria

principale

.

.

.

.

.

.

.

.

.

.

.

.

Disk

Disk

Disk

Disk

Disk

Il codice è scritto con un editor (testuale o per il C) e memorizzato su disco

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

Page 18: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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

Page 19: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

1.16 - Breve storia di Internet

• Internet permette– Veloci e semplici comunicazioni via e-mail

– 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

Page 20: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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

Page 21: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 1 (Deitel) Introduzione ai Computer Indice degli argomenti 1.1 - Introduzione 1.2 - Che cosa è un

2000 Prentice Hall, Inc. All rights reserved.

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