Linguaggi di programmazione avanzati: C++ F.S. Cafagna
Layout La "grammatica di base" del C++: Cenni storici ed introduzione agli strumenti di base per la programmazione in Linux echo e #include <iostream> \n int main(){std::cout << Ciao << std::endl; return 0;} > my_first.cpp; make my_first;./my_first I tipi di base int, float, double, char, fscaf, facsf etc. etc. Le espressioni e gli "statements int a=b=c=d=0; d++; --d; a+=c; Le funzioni int do_nothing(int a){return int(a++);} I puntatori e le "reference Argh!!!!!!!!!!!!! XXII ciclo 2
Layout Funzionalita' avanzate I tipi aggregati: Structures e Union Ma perche non posso avere tutto a portata di mano? Function overloading void Voglio_la_millefoglie(fragole *f) void Voglio_la_millefoglie(frutti_di_bosco *f) void Voglio_la_millefoglie(cigliege *f) void Voglio_la_millefoglie(pesche *f, bool no_chantilly) XXII ciclo 3
Layout Namespaces namespace Girls{ void Print(){ std::cout << "Il mio regno per quello che sta' nel pigiama di Brad Pitt" << std::endl;} } namespace Boys{ void Print(){std::cout << "Il mio regno per quello che copre l accappatoio di Halle Berry " << std::endl;} } using namespace Girls; int main(){ Print(); Boys::Print(); return 0; } Introduzione alle classi User-Definited Types!!!!!!!!!!!! XXII ciclo 4
Layout Le classi Generalita Grammatica di base Membri delle classi: cereatori, distruttori, metodi ed "helper functions Metto assieme dati ed operazioni sui dati in un tipo definito dall utente. Controllo di accesso ai dati e metodi: public, private. Se non sai dove mettere le mani, non toccare!!! Operatori e "overloading Pera c,b,a; a=b+c;????????????? for(int i=0;i<10;++i) o for(int i=0;i<10;i++)? Templates Possiamo scrivere delle classi generiche? Valide per ogni tipo? Esempi ed esercizi Funzionalita' avanzata delle classi (4 ore) Classi derivate Pere, Mele, Albicocche!!!! Sono tutti tipi Frutta! Ereditarieta' e polimorfismo Tutto diventa virtuale! Una Disneyland per gli amanti di punatori e reference!!!! Esempi ed esercizi XXII ciclo 5
Layout Standard Template Library: STL e cenni di programmazione Object Oriented Introduzione e generalita' Panoramica degli oggetti della STL piu' usati: string and containers Esempi di "structural pattern" piu' usati Applicazioni alla fisica delle alte energie Framework di analisi: ROOT XXII ciclo 6
Introduzione agli strumenti di base per la programmazione in Linux
Linux: Cenni Breve introduzione a Linux Cosa è? Dove si trova? Come si usa? Che me ne faccio? Breve introduzione agli strumenti di programmazione Quali sono gli strumenti per compilare? Quali sono gli strumenti per controllare? Dove sono le librerie? Dove sono tutte le altre diavolerie? XXII ciclo 8
Come si fa cosa? Linux: Cenni Come faccio a sapere dove sono le cose? Come faccio a sapere cosa stà combinando il mio programma? Come creo un codice sorgente? Come lo compilo? Come lo lancio? Come lo debuggo? XXII ciclo 9
Breve introduzione: Cosa e? Cosa è? Linux is a free Unix type operating system originally created by Linus Torvalds with the assistance of developers around the world. Developed under the GNU General Public License, the source code for Linux is freely available to everyone XXII ciclo 10
Breve introduzione: Cosa e? La prima versione del kernel risale al 1994 E POSIX compliant POSIX??? Portable Operating System Interface è una standardizzazione di Unix. ANSI C IEEE POSIX FIPS X/Open Ogni standard definisce l interfaccia ( flavour ) XXII ciclo 11
Breve introduzione: Cosa e? GNU GPL??? E la licenza che permette il libero utilizzo del software a patto di fornirlo con la sorgente. Il software è libero ma non gratuito, l utente ha la libertà di modificarlo GNU???? Gnu is Not Unix!!!! Fondata nel 1984 per sviluppare un sistema operativo Unix-like completamente libero Non è Linux. L associazione, sotto l egida della Free Software Foundation (FSF), mantiene il kernel di Linux ed una serie di applicativi fondamentali, ma non distribuisce il sistema. XXII ciclo 12
Breve introduzione: Dove si trova? Oramai anche nelle macchinette del caffè Data la complicazione del sistema è stato tradizionalmente organizzato in distribuzioni. La prima a diffondersi è stata la Slackware. Ce ne sono di libere e proprietarie, ognuna con caratteristiche diverse ed orientate ad un mercato particolare. Le più diffuse: Debian Slackware RedHat (Fedora Core, Enterprise) Suse Mandrake Scientifc Linux Gentoo XXII ciclo 13
Breve introduzione: Dove si trova? Di solito si posso scaricare le immagini ISO dalla rete La facilità di installazione dipende dalla distribuzione così come il sopporto per l hardware XXII ciclo 14
Breve Intro.: Che me ne faccio? Pros: Posso avere un server a poco prezzo. Sviluppatori ovunque Diffusione di applicativi e documentazione Cons: Manutenzione ed installazione da esperti Continue release Difficoltà a tener dietro agli upgrade hardware se non c e una politica di supporto dell azienda Causa assuefazione XXII ciclo 15
Breve Intro: Come si usa? Seguire le istruzioni della distribuzione! Immettere username e password... Le interfacce sono diverse. Essenzialmente: X-windows Terminale ANSI XXII ciclo 16
Breve Intro: Come si usa? X-windows XFree86. Disponibile per varie piattaforme. Open source implemetazione del protocollo Vi serve un windows manager : Twm Fwm Enlightenment AfterStep. Sarebbe meglio avere un desktop manager (Windows insegna.): KDE GNOME. XXII ciclo 17
Breve Intro: Come si usa? Ci serve una shell E una command line interpreter che legge l user input ed esegue il comando richiesto. user input??? Puo essere il terminale o un file: script E la nostra interfaccia di base con il sistema operativo. Le shell più diffuse: sh: Bourne shell csh: C shell ksh: Korn shell tcsh: Enanched C shell bash: Bourne Again shell XXII ciclo 18
Breve Intro: Come si usa? Dove sono i files? In un filesystem organizzato gerarchicamente in direttori e files. L albero gerarchico ( tree ) nasce da una radice ( root ). Il nome della root è un singolo carattere: / I direttori sono files che contengono altri direttori e files. Sono dei files che contengono le informazioni sul loro contenuto: filenames Filenames. Sono i nomi (files) in una directory. I nomi possono contenere tutti i caratteri tranne lo slash : /, ed il blanck (non è più così ma sarebbe meglio evitarlo: /usr/local/bin/mio_eseguibile_.exe /home/corsovme/.filenascosto /home/corsovme/prova.exe.old_version Il punto iniziale definisce rende invisibile il file XXII ciclo 19
Breve intro: Come si usa? Come è fatto l albero del filesystem? / - - /bin -- Ci sono tutti gli eseguibili indispensabili - /boot -- Files necessari al boot del sistema - /home -- Le home directories - /usr -- Tutto quello che serve ad un utente - /usr/local binari, librerie, include files etc. etc. etc. - /usr/bin - /usr/lib - /usr/include - /include -- Include files di sistema - /lib -- Librerie di sistema e moduli dei driver - /etc -- Files di configurazione del sistema -. XXII ciclo 20
Breve intro: Come si usa? Come mi muovo nel filesystem? cd : change directory ls : list directory Come posso sapere cosa c è nei files? cat : mostra tutto il contenuto di un file sullo standard output more, less: mostra il contenuto di un file sullo standard output in pagine del formato del terminale editandoli!!! XXII ciclo 21
Breve intro: Come si usa? Editors: nano, pico : semplici editors alfanumerici emacs, xemacs: more than editors: a way of life vi: no comment! Manualistica Tutta online, arriva con il sistema: man : il manuale di unix, diviso in 8 capitoli omnicomprensivo info : il sistema di documentazione per ipertesti della GNU. XXII ciclo 22
Breve intro: Come si usa? Cominciamo!!!! Collegatevi a: asterix.ba.infn.it Username: corsocpp Password: corsocpp Spostatevi in: studenti Create dei direttori con i vostri cognomi: mkdir my_last_name XXII ciclo 23
Breve intro. Alla programmazione Quali sono gli strumenti per compilare? gcc. La suite di compilazione della GNU: GNU Compiler Collection cpp: il precompilatore as : l assemblatore ld : il linker. XXII ciclo 24
Breve intro. Alla programmazione Quali sono gli strumenti per controllare? gdb: Il debugger gnu ddd: Front end grafico al gdb.. gprof: profiler della GNU XXII ciclo 25
Breve intro. Alla programmazione Dove sono le librerie? Di solito in /lib, /usr/lib, /usr/local/lib Possono essere ovunque. (parameteri -L l). E gli include? Idem come sopra, nei corrispettivi direttori: include XXII ciclo 26
Breve intro. Alla programmazione Due parole su make: Determina automaticamente cosa va compilato e come, sulla base di dipendenze e regole che sono contenute in un file ASCII. L azione da effettuare è chiamata target Un target deve essere seguito da : Per ogni target è possibile specificare altri target da cui dipende. L azione da effettuare deve essere preceduta da un simbolo di tabulazione Ci sono delle regole implicite. Proviamo con: info make XXII ciclo 27
Breve intro. Alternative E per chi ama Windows????? Tutti i tools sono disponibili anche per Win Provate cygwin: www.cygwin.com Fate prima, avrete a disposizione una completa suite di tools unix Xemacs: www.xemacs.org Dev-c++, IDE (Integrate Development Enviromnent) per C++ in Win: www.bloodshed.net XXII ciclo 28