
















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
INFORMATICA CON ELEMENTI DI PROGRAMMAZIONE 1 - INTERFACCE E TECNOLOGIE DELLA COMUNICAZIONE
Tipologia: Appunti
1 / 24
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!

















Cos’è un computer e cosa fa: un computer, come ci suggerisce la sua traduzione in italiano ossia calcolatore/elaboratore, è un dispositivo elettronico e digitale che ci permette di automatizzare alcune capacità della mente umana come il calcolo e la capacità di memorizzare informazioni. IMPUT-SORAGE-PROCESSING-OUTPUT
Non sarà parte dell’esame. Tablet Plimpton 322-1800 a.C (tavolozza di pietra): Interfaccia semplice, “Touch-screen”, C’è un input, I segni rimangono sulla “memoria”, Già nel 322-1800 a.c gli esseri umani creano strumenti in grado di aiutarli con i processi di memoria. Muhammad ibs Musa al-Khawarizmi 780 d.C: Padre dell’algebra crea la definizione di algortimi, colui che inizia a scrivere in maniera metodica le soluzioni per risolvere teoremi di algebra. Abachi: l’abaco è lo strumento più antico di calcolo di cui si conosca traccia, i primi esemplari, sotto forma di “tavoletta di calcolo” sono apparsi in Mesopotamia in Cina intorno al 1200 a.c, servono per aiutare la memorizzazione di numeri, non fanno operazioni è l’uomo che sposta le biglie a compiere le operazioni, è quindi un dispositivo di memoria. Sono strumenti riconfigurabili. Pascalina (1645): famosa per essere la prima calcolatrice, è un computer che ci permette di inserire degli input, e che è disposto di una capacità di memoria, risolve problemi matematici ma solo riguardanti le somme e le sottrazioni. Inizia l’era dei computer:
1. Ada Lovelace: nota come la prima programmatrice al mondo, commenta il lavoro di Charles Babbage considerato il padre dei computer arrivando così a proporre un algoritmo per calcolare i numeri di Bernoulli utilizzando l’Analytical Engine teorizzata da Charle Babbage. Solo successivamente quando ci furono a disposizioni i primi computer si potè verificare se l’algoritmo di Ada Lovelace e l’Analytical Engine fossero realmente corretti, e così risultò. 2. 1911 nasce the computing-Tabulating-recording company: produce machine per gli uffici, nel 1924 la compagnia diventa la famosa IBM. 3. Alan Turing: matematico che teorizza una macchina universale per eseguire algoritmi (macchina di Turing ideata nel 1936). Inoltre crea il test di Turing ; test per stabilire quanto una macchina si avvicina ad una mente umana, quando non saremo più in grado di distinguere la risposta di una macchina con la risposta di un umano allora si potrà dire che la macchina ha superato il test di Turing. E’ inoltre famoso per aver collaborato nella risoluzione di un codice di decriptazione utilizzato dai nazisti nella seconda guerra mondiale. (The imitation game). 4. Eniac-1945: primo computer per come lo intendiamo noi, creato per calcolare traiettorie missilistiche. 5. John von Neumann: teorizza l’architettura dei computer moderni (1945) 6. Primo Bug: insetto che si era inserito nei meccanismi di Mark 1, Grace Murray Hopper fu il primo a trovare un bug in un computer. Il termine bug adesso si riferisce ad un malfunzionamento del software. 7. 1947 invenzione del primo transistor (i loro inventori vincono il premio Nobel)
**8. 1954 Tradic primo computer che utilizza un transistors
Le 4 funzioni principali che ci permettono di definire cos’è un computer:
1. Input: acquisire informazioni dall’esterno; 2. Storage: mantenere le informazioni in maniera persistente; 3. Processing: generare nuove informazioni a partire da informazioni esistenti (in memoria); 4. Output: trasmettere informazioni all’esterno. Modello “vincente”, modello di John von Neumann (l’alternativa era il modello Harvard). Le componenti indispensabili di un computer: CPU: Central Processing Unit; Memoria: primaria (RAM, ROM e memoria Cache) e secondaria (Hard Disk e memorie rimovibili); svolgono la funzione di storage Periferiche di Input (riceve informazioni dall’esterno e le trasmette all’interno) e Output (dall’interno trasmette informazioni all’esterno) ; Scheda madre (che racchiude la memoria e la CPU);
per generare nuove informazioni, la CPU è quindi l’unico componente che attivamente fa qualcosa all’interno del computer , tutto il resto svolge altre funzioni; storage, input e output. La CPU è l’elemento principale dove avviene il processing, la caratteristica principale è la velocità ovvero il numero di operazioni al secondo (GHz).
Una tipologia particolare di server sono i severs per High Performance Computing; che vengono utilizzati per fare calcolo in modo intensivo , sono gli eredi dei primi computer.
Sistema umano: Decimale; 10 simboli; Ogni “configurazione” rappresenta un simbolo; Max 11 simboli; da 0 a 10. Sistema computer: Binario; 2 simboli; Ogni dito ha due “configurazioni”; Ogni dito rappresenta due simboli. CODICE BINARIO REGOLE GENERALI – COMPONENTI HARDWARE:
Il codice binario è il simbolo utilizzato dai computer perché è più facile e semplifica la realizzazione tecnologica, sono infatti presenti solo due stati (acceso e spento; 0-1) che possono ridurre l’ambiguità. I primi computer usavano un codice decimale. Il codice binario non serve solo a rappresentare numeri , ma anche le lettere dell’alfabeto. TRANSISTORS: i neuroni del computer, che vengono utilizzati nei processori per realizzare funzioni logiche, permettono al computer di parlare. Se la CPU è il “cervello” del computer, i transitors sono i neuroni! Sono dei componenti elettronici che hanno due ingressi Ib (input base) e Ic (input collettore) e un output. A seconda di cosa succede ai due ingressi cambia quello che succede all’output. Operazione logiche: le operazioni logiche sono operazioni che solitamente hanno due ingressi e una uscita e i valori dell’ingresso e dell’uscita possono essere: acceso, spento, sì, no, vero, falso… due stati. AND: restituisce uno stato attivo se tutte due gli ingressi sono in uno stato attivo. È un’operazione logica che è vera se entrambe i suoi ingressi sono veri. OR: restituisce un output attivo quando almeno uno dei due input è attivo.
Operazioni matematiche, Operazioni logiche (AND, OR), Accesso alla memoria, Confronto (IF). Le parole della CPU sono dunque azioni e istruzioni come quelle elencate qui sopra. La CPU svolge un’operazione alla volta grazie a due input alla volta (A e B); essa ha a disposizione una serie limitata di celle di memoria per salvare temporaneamente i risultati delle operazioni. La legge di Moore: legge empirica; Moore si è reso conto che ogni due anni i numeri di transistors all’interno di un microprocessore raddoppiano diventando anche sempre più piccoli. L’evoluzione informatica è nata anche grazie a questa capacità tecnologica di posizionare in uno spazio ristretto i transistor.
Prima di iniziare a rispondere su cosa sia e a cosa serva il sistema operativo , dobbiamo distinguere tra hardware (hw) e software (sw); l ’hardware è tutto quello che concerne le parti del computer che si possono toccare (fisiche), quindi ci riferiamo all’hardware quando parliamo di processori, tastiere, monitor ecc. Il software , invece, sono quei programmi che “girano” utilizzando l’hardware e che ci permettono di usare il computer. A livello di software dobbiamo poi fare un’ulteriore classificazione tra software applicativo e software di base. Il software applicativo , sono quei programmi come le suite di office automation (microsoft office, open office, liberoffice), i giochi, i browser per navigare in internet etc; quindi tutti quei software che hanno un compito ben definito per l’utente. Il software di base , che prende anche il nome di sistema operativo (Operating System, spesso abbreviato in OS), ha come compito, invece, sostanzialmente quello di far funzionare il computer e renderlo utilizzabile all’utente. Questo significa sostanzialmente che, senza sistema operativo , il nostro computer ci restituirà semplicemente un cursore lampeggiante senza svolgere alcuna funzione. Per permettere il funzionamento del computer, un OS, deve gestire le risorse del sistema e, quindi, più precisamente deve eseguire le seguenti funzioni: Gestione dei processi Gestione della memoria Gestione dell’Input/Output (I/O) Gestione del file system Oltre a questo, il sistema operativo deve anche provvedere a fornire un’interfaccia utente per permetterci di comunicare con il computer. Microsoft Windows 3.10 prima sistema operativo con interfaccia grafica. Come nasce il SO e perché: la storia. inizialmente non esisteva nessun sistema operativo; infatti l’utente (ricercatore o scienziato): Scriveva il programma; Forniva i dati; Avviava il programma; Aspettava; Scaricava i risultati. I computer servivano quindi esclusivamente per fare calcoli. Lo scenario era quindi rappresentato dalla presenza di un solo utente e un solo programma di esecuzione alla volta; il programmatore comandava direttamente l’hardware.
Successivamente nascono computer: Con istruzioni sempre più complesse, con possibilità di calcolo sempre più avanzate, e il linguaggio base dell’hardware viene sostituito con il linguaggio di programmazione che permettono un’astrazione e una semplificazione. I programmi iniziano a essere scritti separatamente e in anticipo, non direttamente sulla macchina. Le esecuzioni divengono sempre più veloci, ma il procedimento per il funzionamento del computer rimane lento ed arretrato… quindi iniziano a formarsi le “code” di esecuzione. Per non far perdere tempo all’utente e per fargli pagare l’uso effettivo del dispositivo nascono le figure degli operatori specializzati che caricano i programmi secondo la priorità, conteggiano l’uso delle risorse (CPU time, fogli etc…), monitorano lo stato dell’hardware. Questa tecnica però ha dei problemi: o I compiti diventano sempre più complicate e gli operatori fanno fatica a gestirli; o Problemi di sicurezza; per sostituire gli operatori si pensa a programmi che: Gestiscono l’hardware, Organizzano l’esecuzione di software, Monitorano l’utilizzo delle risorse. Nascono così i primi sistemi operativi in sostituzione agli operatori che lavoravano fisicamente. Compiti del sistema operativo: Gestire le componenti principali (CPU, RAM, dischi): o Controllare errori; o Comunicazione tra i componenti; Gestire le attività/task: o Cosa fare eseguire alla CPU; o Cosa mettere in memoria RAM; o Ordine tra flussi di esecuzione Gestire le periferiche: o Comunicazione; o Istruzioni specifiche. Questi problemi sono molto simili ai problemi dei primi computer; la componente software che gestisce tutte queste funzioni è svolta dal KERNEL (ci permette di comunicare con l’hardware) è il componente software che sta alla base del sistema operativo, con accesso diretto alle risorse hardware, è la chiave di un sistema operativo, il software che fornisce un accesso sicuro e controllato all’hw. Tutti i sistemi operativi esistenti nonostante abbiamo caratteristiche diverse partono tutti dal Kernel; considerato il vero erede dei primi SO; parla con l’hardware. E’ costituito da un codice scritto in linguaggio C ; linguaggio poco meno complicato del linguaggio macchina. Il passaggio da questo linguaggio al linguaggio macchina è fatto da un compilatore molto semplice. Il Kernel ci permette di comunicare con un linguaggio più semplice rispetto al linguaggio =-1e ci permette di evitare di inserire manualmente le istruzioni per ogni componente. Ma l’hardware come parla con noi? Attraverso l’ API (Application Programming Interface) cioè delle istruzioni che il software rende disponibili per permettere all’utente di poter utilizzare il software. Sono in front-man dell’HW. (Insieme di istruzioni che permettono di usare un software e in questo caso il Kernel). Assieme al Kernel ci sono una serie di applicazioni di base che utilizzano API e che ci permettono di usare in modo più semplificato i comandi per il Kernel: o Shell: interfaccia base tra utente e computer (GUI); scrivendo i comandi sulla Shell essi vengono eseguiti dal Kermel sull’HW, ci permette di interagire con file e cartelle;
Com’è fatto un comando? Ogni Box indica un comando lo spessore indica l’importanza del comando. Applicazione e funzione sono sempre in questa posizione, mentre opzione (che hanno – o /) e oggetto possono scambiarsi. La sintassi e l’ordine vanno rispettati. Perché una command line è così diversa da un’interfaccia grafica? WYSIWGYG: what you see is what you get. Possibili disastri con la command line: Ci sono meno protezioni; esempio il comando rm (in linux) rimuove completamente il file (non va in cestino) e neanche chiede conferma per farlo. Per modificare file importanti per il sistema servono i permessi dell’amministratore Lo spazio nella sintassi della command line indica che si sta passando ad una nuova opzione o parte del comando; Se indispensabile usare
Su linux attenzione a maiuscole e minuscole, non è la stessa cosa. Per eseguire operazioni che hanno effetto sul sistema operativo e sulle funzionalità del computer, è necessario assumere il ruolo di amministratore del sistema. Solitamente l’utente principale è anche l’amministratore del sistema; quindi può anche eseguire operazioni critiche. Linux usa il comando sudo nome del file ; es: sudo rm file_fondamentale_da_non_rimuovere; viene chiesta la password utente (= sai cosa stai facendo) se è corretta verrà eseguito il comando. Sudo è un programma che esegue comandi con il ruolo di amministratore. (Windows: Eseguire Command Prompt come amministrarore NO!!) Come usare la command line: Comandi per lavorare con file e cartelle, (minuscolo linux, maiuscolo Windows)
Comandi delle applicazioni che si usano di più un po' a memoria, un po' usando l’help inline; un po' con help online ; Help inline (aiuto che si può ottenere direttamente dalla command line): o Linux: man comando oppure comando -h/ --help o Windows: HELP COMMAND o man man; HELP HELP. Che differenza c'è tra MS-DOS e il "prompt dei comandi" disponibile sui sistemi operativi Windows? MS-DOS è un sistema operativo che prevede un'interfaccia grafica utente che utilizza una riga di comando (quindi una GUI) mentre il Command Prompt dei comandi è semplicemente una command line, un programma del sistema operativo Windows. La più grande differenza tra i due è che la command line non mostra un feedback mentre l'interfaccia grafica mostra subito gli errori. Oltre a questo la command line è di grande importanza perchè permette di riprodurre azioni ed ha un accesso diretto alla funzioni di sistema. VOCABOLARIO: (webline.org) http://www.brescianet.com/appunti/infobase/dos_support/helpCreato.htm http://guide.debianizzati.org/index.php/Guida_ai_comandi_da_terminale_- _Gestione_di_file_e_directory La command prompt è la command line che ci fa usare la command line su Windows. Il comando DIR mostra l’elenco dei file e delle sottocartelle in una cartella. Sudo è un programma che per i sistemi operativi Unix e Unix-like che, con dei vincoli, permettono di eseguire altri programmi assumendo identità (e di conseguenza anche i privilegi) di altri utenti. LS (scritto piccolo) indica la cartella e il file dove ti trovi (directory). pwd è un comando che mostra in che cartella siamo ; ci dice dal punto in cui siamo il processo che abbiamo fatto per arrivare fino qui cd nome cartella comando per andare in una cartella, e che mi permette di entrare nella cartella che “selezioniamo”; es: cd home;
cd ../../ torno indietro di due passaggi cd / senza niente dopo mi fa andare nella mia cartella personale; nella cartella principale; Percorso relativo per cd: percorso delle cartelle in base a dove sono ora; Percorso assoluto per cd: è il percorso dove si trova effettivamente il file, dalla cartella madre. cp copy. @ vuol dire in quale; / separatore delle cartelle (es: home/lisotta/prova); cleare per cancellare il terminale in linux; cls per cancellare il terminale in Windows; mkdir nomecartella comando per creare una directory (cartella); rm nomefile serve per eliminare file; rm - r nomecartella; per eliminare una cartella; man nomecomando: ci fornisce le informazioni su le opzioni di un comando; e cosa può fare; per uscire dalla schermata delle informazioni poi premere q;
Ciclo della vita dello sviluppo software: Per ognuna di queste fasi ci sono persone diverse che seguono le attività. “Chi sviluppa software è pigro ma gentile” Pigro: usa “pezzi” di software già scritti da altri; Gentile: mette a disposizione “pezzi” del proprio software per altri; Questi pezzi di software sono, in generale librerie e frameworks. La libreria : contiene “ricette” di funzioni e componenti che vengono usati dal software sviluppato; nello stesso linguaggio. Il Framework: costruisce l’infrastruttura e offre le funzionalità principali per gestirla. Es web applications: Flask. Un software per vivere ha bisogno di un ambiente composto dalle librerie e dai framework. Licenze e Open Source: l’utilizzo si ogni software (libreria/framework/applicazione) è regolata da licenze: Utilizzo, copia, modifica; Ri-distribuzione; Commerciabilità. Per questo bisogna fare molta attenzione e utilizzare il software in modo appropriato.
Il software nell’ambiente virtuale usa alcune risorse del computer; ma ha le proprie librerie e frameworks.
Virtual enviroments: “Virtuale” significa che l’ambiente in cui vive il software non è l’ambiente del computer, ma il software non noterà nessuna differenza. Perché usiamo un ambiente Virtuale e non l’ambiente del computer? Certezza: di riprodurre l’ambiente necessario su ogni computer; Possibilità di avere più ambienti virtuali; Limitare l’impatto sull’ambiente principale; Riproducibilità; capacità di poter ricreare lo stesso modo di funzionare su più computer; Test verificare come il mio software funziona in ambienti virtuali. Su internet funziona tutto tramite Virtual enviroments, o virtual machines. Come usare un ambiente virtuale? Lo stesso programma che abbiamo usato per creare l’ambiente virtuale offre anche la funzione per attivare l’ambiente virtuale. Cosa significa che abbiamo attivato un ambiente virtuale? Significa che il software che eseguiremo avrà a disposizione tutte le librerie installate nell’ambiente virtuale. (Se una libreria non è presente nell’acquario (nell’ambiente virtuale) il software non si ferma, prima cerca nel microambiente (acquario) e poi nell’ambiente “casa”. Quindi anche l’interprete python avrà a disposizione le librerie python che avremo installato e che, quindi, potremmo usare (il comando import ) nei nostri programmi. Es: import numpy (libreria python). Uno dei programmi per creare ambienti virtuali si chiama CONDA un command-line program da ANACONDA. (from Anaconda, Inc.) Usato soprattutto per programmazione scientifica. Comandi:
Usando Conda quando lo installiamo automaticamente modifica l’esecuzione del programma terminal. conda deactivate = primo passaggio per uscire da (base). conda create - - name ambiente virtuale = comando per creare l’ambiente virtuale (es. conda create - - name ip1) conda activate ambiente virtuale = per entrare nell’ambiente; (es. conda activate ip1) conda install python=3.7 = comando per installare i comandi python; (3.7 è la versione di python) which = mi dice quale applicazione il sistema operativo avvierebbe se io mandassi quel comando, e mi dice se quel programma c’è o non c’è nel mio ambiente virtuale. (es: which python) matplotlibt, numpy librerie utile per “copiare i comandi e i pezzi di codice fatti da altri per python”. conda install matplotlibt conda install numpy nano = programma editor di testo già presente nell’ambiente virtuale ( nano -w testo.py) per creare l’editor Una volta creato per entrarci si usa solo test.py control X = per uscire dall’editor generare un grafico di 100 numeri: Vedere su internet come creare 100n casuali, si può usare numpy (un pacchetto libreria) Per creare un grafico mi serve la libreria matplotlib li installo e poi li importo
Cyrus West Field imprenditore che ha ideato la prima posa di cavo sottomarino che collegava la Gran Bretagna con gli Stati Uniti. C’è un HW sui fondali degli oceani che ci permette di comunicare. I componenti principali:
1. Infrastruttura di collegamento: ci sono delle strutture fisiche HW attraverso cui l’informazione può essere trasmessa: a. Cavi elettrici; b. Fibre ottiche; c. Antenne. Queste infrastrutture possiamo visualizzarle come una rete, una network di punti collegati tra loro. 2. Interne Service Provider: azienda che a pagamento ci offre di collegamento ad internet, spesso comprensivo di strumentazioni (antenna, home router) ed infrastruttura (cavi, centraline). Azienda che venda il collegamento ad Internet. 3. Protocolli di comunicazione: definiscono le regole per la trasmissione dei dati. a. Internet Protocol (IP): trasmissione dei dati tra computer, identificati dal proprio IP adress; b. Trasmissione Contro Protocol (TCP): verifica la correttezza dei dati trasmessi; c. HyperText Transfer Protocol (HTTP): trasmissione di pagine/documenti per World Wilde Web. **Ci sono vari livelli:
Un Domain Name Server (DNS) traduce la richiesta umana di un Domain Name nell’indirizzo IP corretto. COMANDI: ping: comando per verificare che c’è una connessione, e che il sito esiste. TRACERT -4 ip_address serve per visualizzare il percorso di connessione , ottengo l’IP di ogni punto della connessione che attraverso. Geo IP: per conoscere la posizione geografica dei punti del percorso. Ipconfig: mi fornisce delle informazioni sulla mia versione di rete (IP v4 IP v6). (Tutti abbiamo un IP v4 e un IP v6, uno ha 4 blocchi l’altro ne ha 6, la differenza è il nome/codice con cui vengono visualizzati). (VPN virtual private network) Materiale utile: https://www.khanacademy.org/computing/ap-computer-science-principles/ the-internet (primi 2-3 video) Internet è costruito da vari strati: (ogni strato si chiama layer) Ogni strato o layer serve ad un determinato scopo ; Ogni strato è regolato da dei protocolli che ne determinano il funzionamento; Ogni strato si fonda sullo strato inferiore e permette il funzionamento di quello superiore; (i protocolli di ogni strato vengono sviluppati indipendentemente dagli strati precedenti e successivi) L’indipendenza tra gli strati ha permesso la scalabilità e l’evoluzione di internet.