ISTITUTO PROFESSIONALE DI STATO PER L’INDUSTRIA E ARTIGIANATO - MORETTO- DA SILVA MOREIRA FRANCISCO JOSÈ CLASSE: 5^BZ ANNO SCOLASTICO 2005/06 Indice Introduzione ..........................................................................................................................................3 Il concetto di trasmissione dei dati........................................................................................................4 Architettura del sistema………………………………………………………………………………..5 Personal Computer(generale)................................................................................................................6 Il sistema d’interfacciamento………………………………………………………………………….7 Il Software……………………………………………………………………………………………..8 • Linguaggio Delphi…………………………………………………………………………….8 • Caratteristiche di Delphi………………………………………………………………………10 • Versioni di Delphi attualmente sul mercato…………………………………………………..11 Concetto di database…………………………………………………………………………………..12 Email…………………………………………………………………………………………………..13 • Come se usa …………………………………………………………………………………..13 • Programma PO3………………………………………………………………………………14 La Rete Internet……………………………………………………………………………………….15 • Origini e Funzionamenti……………………………………………………………………...15 • Comunicazione di pacchetto………………………………………………………………….16 Programmi Realizzati…………………………………………………………………………………17 • Trasferimento Ordinato Dei Santi…………………………………………………………….17 • Listato del sorgente delphi…………………………………………………………………....18 • Ricerca Onomastici………………………………………………………………………..….20 • Listato del sorgente delphi…………………………………………………………………....21 • Gestione Onomastici………………………………………………………………………….24 • Listato del sorgente delphi…………………………………………………………………....25 • Compleanni Studenti………………………………………………………………………….29 • Listato del sorgente delphi…………………………………………………………………....30 • Test Santi Doppi………………………………………………………………………………34 • Listato del sorgente delphi………………………………………………………………….....35 • Invio Email…………………………………………………………………………………....36 • Listato del sorgente delphi…………………………………………………………………….37 Tesina di Inglese……………………………………………………………………………………….38 • network computer types…………………………………………………………………...39 Bibiografia .............................................................................................................................................40 Ringraziamenti .......................................................................................................................................41 Tesina Maturità 2005/06 2 Introduzione: La nostra tesina consiste nella gestione, via software, degli onomastici e dei compleanni dell’intero personale dell’istituto (alunni, professori, non docenti..). Il nostro scopo è quello di sapere per ogni giorno dell’anno scolastico quali sono gli onomastici e i compleanni dell’intero personale dell’istituto. All’inizio di ogni settimana il nostro software deve essere in grado di presentare gli onomastici e i compleanni dell’intera settimana ed spedire via e-mail al personale responsabile. Software usati: access: con questo programma abbiamo creato 2 database: il primo contiene 3 santi per ogni giorno, il secondo invece contiene i dati di tutto il personale dell’istituto. Delphi: in questo programma viene realizzata la gestione dell’intero sistema. La nostra tesina prevede quindi i seguenti due servizi: a) GIORNALIERO : ogni giorno vengono comunicati al VicePreside 1) I Santi festeggiati in quel Giorno (previsti dal calendario di Frate Indovino) 2) I nominativi di STUDENTI, DOCENTI, e NON DOCENTI per i quali si verifica la ricorrenza dell'ONOMASTICO. 3) I nominativi di STUDENTI, DOCENTI, e NON DOCENTI per i quali si verifica la ricorrenza del COMPLEANNO. b) SETTIMANALE : ogni SABATO vengono comunicati al VicePreside tutti i dati previsti dal servizio GIORNALIERO e relativi alle giornate della settimana successiva a quel SABATO ossia DOMENICA, LUNEDI', MARTEDI', MERCOLEDI', ..., SABATO successivo. c) Le comunicazioni vengono effettuate via e-mail all'indirizzo : [email protected] d) Prevedere comunicazioni scritte AUGURALI separate (files di testo separati) per DOCENTI, NON DOCENTI, STUDENTI (Classe per Classe) da affiggere ALBO NON DOCENTI, SALA INSEGNANTI, SINGOLE CLASSI. Il Preside, il personale docente e non docente, gli studenti augurano a: <lista COMPLEANNI> BUON COMPLEANNO <lista ONOMASTICI> BUON ONOMASTICO Brescia data ora (Il testo del messaggio scritto augurale va richiesto al prof. ARCANGELO). Oggi 29 aprile 2006 si festeggiano le seguenti ricorrente < lista1 > e i seguenti Santi <lista2>. Porgiamo perciò i nostri migliori AUGURI a : <nomi con indicazione ONOMASTICO o COMPLEANNO> Tesina Maturità 2005/06 3 IL CONCETTO TRASMISSIONE DEI DATI: La trasmissione dei dati è l’insieme delle tecniche e delle problematiche connesse con il trasferimento a distanza di segnali informativi di tipo digitale tra elaboratori elettronici, utilizzando allo scopo le risorse, e in particolare i canali di comunicazione, messi a disposizione dai sistemi di telecomunicazione. Negli ultimi anni, invece, la situazione è radicalmente cambiata per via dell'enorme sviluppo della microelettronica e della diffusione sempre maggiore di calcolatori in ogni ambito, sia aziendale sia domestico. I calcolatori sono sempre più utilizzati anche come veri e propri apparati per la comunicazione a distanza tra utenti in una rete, come dimostra l'enorme successo avuto da Internet. Si sta così assistendo ali trasformazione degli elaboratori da puro strumento di calcolo ad apparato di telecomunicazione tramite il quale è possibile scambiare in modo digitale segnali di varie natura (voce, immagini, dati). APPARATI INFORMATICI E DI TELECOMUNICAZIONE IN UN SISTEMA DI TRAMISSIONE: − Elaboratori: Possono essere microprocessori, microcalcolatori o grossi calcolatori(su cui risiedono, per esempio le banche dati). − Aparecchi di telefonia: Possono essere telefono mobile, telefax. ORGANISMI INTERNAZIONALI DI STANDARDIZZAZIONE: Esistono diversi organismi internazionali di standardizzazione che si occupano di trasmissione dati, i principali sono: ITU - (International Telecommunications Union); ETSI – (European Telecommunciations Standardas Institute); ISO - (International Organization for Standardization); IEC – (International Electrotrechnical Commission). IEEE - (Institute of electrical and electronics engineers) L’organismo di standardizzazione principale per le telecomunicazioni è l’ITU: un’organizzazione intergovernativa all’interno della quale cooperano sia enti pubblici sia privati al fine di consentire lo sviluppo delle telecomunicazioni. Tesina Maturità 2005/06 4 ARCHITETTURA DEL SISTEMA: Questo progetto può essere suddiviso nei seguenti blocchi: • ELABORATORE(PERSONAL COMPUTER) • INTERFACCIA • MODEM • RETE INTERNET SCHEMA A BLOCCHI : Elaboratore Tesina Maturità 2005/06 Interfaccia Modem 5 ELABORATORE : Il Personal Computer Per descrivere un PC, può essere utile pensarlo in termini di sottosistemi che lo compongono. Questo rapido sommario dei suoi componenti può servire a mettere tutto in una corretta prospettiva: - (Aspetto esteriore) si vedono lo schermo, la tastiera, il mouse e l'involucro del PC. L'involucro contiene tutti i componenti essenziali per il PC e fornisce anche l'accesso alle unità CD-ROM e floppy nella parte anteriore e a varie porte sul retro. L'involucro inoltre protegge l'utente dalle radiazioni elettromagnetiche prodotte dai componenti interni e consente al flusso d'aria canalizzato di ridurre i problemi di surriscaldamento. - (Componenti interni) CPU: L'unità di elaborazione centrale (Central Processing Unit), o processore, che gestisce i programmi attivi sul PC. La velocità della CPU, combinata con il suo design interno, determina la velocità e l'efficienza con cui possono essere elaborati i dati e i codici dei programmi. - Memoria di sistema: Chiamata anche memoria ad accesso casuale (Random Access Memory), o RAM, la memoria di sistema immagazzina i codici e i dati che il PC sta utilizzando. Più memoria si ha, migliori sono le prestazioni. - Disco rigido: È il dispositivo per l'immagazzinamento permanente dei dati sul PC. I programmi e i dati contenuti nel disco rigido vengono trasferiti nella RAM di sistema per essere usati. I dischi rigidi odierni vantano capacita di 20 GB e oltre. - Unita CD-ROM: L'onnipresente supporto rimovibile di grande capacità. Le unità CDROM permettono agli utenti del PC di accedere ai contenuti multimediali, di installare applicazioni di grande dimensioni e di lavorare con enormi data base e con altre risorse. Questa tecnologia sta lasciando il posto alle unità DVD-ROM, che offrono capienze ancora più grandi per i dati (sull'ordine dei 17 GB). Tesina Maturità 2005/06 6 - Scheda grafica: Tutto ciò che si vede sullo schermo passa attraverso la scheda grafica. Questo componente hardware accelera la visualizzazione delle immagini, sia in due sia in tre dimensioni, e delle riproduzioni dei video. Una buona scheda grafica è fondamentale per avere una buona visione e per prestazioni veloci. - Scheda audio: Tutto ciò che va oltre gli elementari bip e che è emesso dall'altoparlante del PC passa attraverso il sottosistema audio. Le schede audio permettono di riprodurre i suoni digitali attraverso gli altoparlanti, nonché di registrare suoni analogici in formato digitale. - Modem: Consente al PC di "parlare" con Internet, con i fax e con altri PC, usando una normale linea telefonica. Può essere sia una scheda aggiunta internamente sia un dispositivo esterno. - Scheda di interfaccia con la rete: Questa scheda supplementare serve a connettere il PC a una rete locale. IL SISTEMA D’INTERFACCIAMENTO: I sistemi di interfacciamento, vengono utilizzati nei PC per connettere il sistema di elaborazione dati con i dispositivi periferici esterni (tastiera, mouse, video, stampante, plotter, unità HD, FD, CDROM, modem etc). Alcuni sistemi di interfacciamento sono essenziali per il funzionamento del sistema stesso (interfaccia video, interfaccia tastiera), altri sono opzionali. Fra le modalità di trasferimento dati distinguiamo la “modalità parallelo” attuata ad esempio nel caso dell’interfaccia di una stampante e interfacciamento seriale (verso un modem o un plotter o una stampante seriale). Tesina Maturità 2005/06 7 IL SOFTWARE : Il linguaggio di programmazione scelto per la realizzazione di questo progetto è: Delphi della casa americana Borland. Cos’è Delphi Il Delphi è l’evoluzione del "Borland Turbo Pascal", un linguaggio ad alto livello elaborato dal professor Niklaus Wirth alla fine degli anni sessanta a Zurigo, con l’obbiettivo di realizzare un linguaggio programmazione sufficienti per insegnarla sotto forma di disciplina logica e sistematica. Il linguaggio di programmazione di Delphi è basato sul Pascal, usato all’università di Ginevra come mezzo di insegnamento della programmazione strutturata. Per questo motivo tale linguaggio risulta essere assai elegante e leggibile, soprattutto se lo confrontiamo con linguaggi analoghi come C/C++, più strutturalmente vicino al linguaggio macchina oppure al Basic, che solo in tempi recenti ha subito un accurato riadattamento ai canoni della programmazione strutturata. Il Pascal doveva essere allo stesso tempo un linguaggio facile ed efficiente a tal punto da poter essere implementato sulla maggior parte dei calcolatori, e una volta raggiungiunto tale obiettivo esso si è rapidamente diffuso sia come linguaggio usato nella didattica dei principi di programmazione, sia come linguaggio effettivo per scrivere software di base ed applicativi. Con il Delphi la Borland ha introdotto il concetto di sviluppo Visuale RAD (Rapid Application Development) orientato alla gestione degli eventi come nel Visual Basic, senza perdere però i vantaggi della compilazione Pascal. Delphi è un ambiente di programmazione visuale orientato ad oggetti per lo sviluppo rapido di applicazioni a carattere generale e di applicazioni Client/Server per Windows 95 e 98 e Windows NT. Con Delphi è possibile creare applicazioni Windows altamente efficienti riducendo al minimo i tempi di programmazione grazie agli strumenti di gestione dei database e i componenti di gestione dei dati previsti in Delphi, questi ci permettono di sviluppare strumenti di gestione dati e applicazioni Client/Server in tempi notevolmente ridotti. Comprende una libreria di componenti riutilizzabili VCL e un insieme di strumenti di progettazione RAD, tra cui i modelli di applicazioni standard e di schede Expert di programmazione. Con questi strumenti e con il compilatore Delphi a 32 bit è possibile creare rapidamente e testare prototipi, trasformandoli in robuste applicazioni perfettamente in linea con le moderne esigenze. Delphi può essere utilizzato per sviluppare qualsiasi tipo di applicazione, dalle utility di analisi e test dei PC, fino ai più sofisticati strumenti di accesso ai database. Con i controlli di gestione dei dati di Delphi, i dati vengono visualizzati direttamente durante la creazione dell’applicazione, consentendo una immediata verifica del risultato delle interrogazioni al database e delle modifiche all’interfaccia dell’applicazione. La facilità di lettura si accompagna simmetricamente alla facilità di scrittura: Se si tiene conto del fatto che Delphi è un compilatore velocissimo, scrivere programmi in Pascal per Windows significa, beneficiare di un ottimo compromesso tra velocità degli eseguibili prodotti e facilità di scrittura del codice. Pascal è un linguaggio procedurale, dotato di tipizzazione forte. Questo sta a significare che per ogni variabile utilizzata all'interno nei programmi Pascal deve essere esplicitamente dichiarato un tipo(ad esempio Integer, variabile numerica intera; Real, variabile numerica reale, ecc.). Ad ogni variabile, salvo qualche eccezione per i valori numerici, deve essere assegnato un valore del tipo corrispondente, per visualizzare possibili errori in fase di compilazione. Senza questi vincoli, il compilatore non potrebbe risultare altamente ottimizzante e si correrebbe il rischio di errori a Run-time dovuti ad assegnamenti “misti” non voluti dal programmatore(Bug) e non intercettati dal compilatore, Tesina Maturità 2005/06 8 che a sua volta non sarebbe più in grado di effettuare controlli approfonditi sulla validità formale degli assegnamenti. Il linguaggio Pascal rende disponibile al programmatore un set completo di tipi di dato di base, che variano dai numeri interi(Integer) fino ad arrivare a stringhe(String) la cui gestione in memoria è trasparente al programmatore, passando per il tipo Boolean, che è in grado di esprimere i valori di verità True e False, definiti come costanti del linguaggio. Viene offerta anche una completa gestione di puntatori ed allocazione dinamica di memoria, cosa che permette di creare a run-time nuove entità le cui dimensioni non devono essere decise a tempo di codifica. Questo si traduce in un'ottimizzazione dello sfruttamento delle risorse della macchina su cui si sta lavorando. Combinando i meccanismi di allocazione dinamica alla possibilità di derivazione di nuovi tipi di dato strutturati a partire dal costrutto record, inoltre, è possibile costruire e gestire con relativa facilità tipi di dato ricorsivi come “liste” e gli “alberi”. L'operatore di assegnamento utilizzato dal Pascal è :=, a differenza della stragrande maggioranza dei linguaggi procedurali. Pur essendo più corretto dal punto di vista matematico, questo potrebbe essere disorientante per chi proviene da altri linguaggi. E’ possibile inglobare blocchi di codice all'interno delle strutture di controllo, usando la Keyword di apertura ‘Begin’ e quella di chiusura ‘End’. Ogni istruzione deve essere terminata da un punto e virgola “;”. I commenti sono porzioni dei sorgenti racchiusi tra parentesi graffe{commento} oppure dalla combinazione di parentesi tonda ed asterisco(*commento*). Se sono brevi si possono usare anche le BackSlash( // ). Pascal distingue tra funzioni e procedure: le prime, dichiarate utilizzando la Keyword Function, restituiscono un valore, mentre le seconde no. Le variabili possono essere locali o globali, le prime vanno dichiarate all’interno di procedure mentre le seconde(visibili da tutte le procedure appartenenti al programma) devono essere dichiarate all'interno di sezioni separate, diversamente da quanto previsto in altri linguaggi(esempio, in C/C++). Delphi è dotato di un costrutto che permette una programmazione modulare, cioè le Unit. In effetti, attraverso la struttura delle Unit è possibile creare programmi accostando diversi moduli di codice visibili solo tramite un'interfaccia data dalle dichiarazioni delle funzioni in esse contenute. Con le Unit Borland fornisce la possibilità di costruire entità contenenti codice nelle quali si può restringere l'accesso dall'esterno a particolari funzioni dichiarate in una sezione di interfaccia. Le Unit sono molto utilizzate in Delphi, visto che ad ogni finestra del proprio programma viene associata una unit che ne contiene la definizione. Tesina Maturità 2005/06 9 CARATTERISTICHE DI DELPHI AMBIENTE DI SVILUPPO INTEGRATO L’ambiente di sviluppo integrato di Delphi IDE (Integrated, Development,Enviroment) mantiene sviluppo, verifica e gestione delle applicazioni in un unico ambiente. E’ possibile creare o modificare una applicazione compreso schede di inserimento dati, report, menu, finestre di dialogo, database e definizioni di file, moduli dati, componenti, senza uscire dal compilatore. DRAG AND DROP DESIGN Delphi aumenta la produttività automatizzando le operazioni di programmazione ripetitive. E’ possibile creare applicazioni semplicemente trascinando pochi componenti dalla Component Palette in una scheda chiamata form creando l’architettura dell’applicazione velocemente e facilmente, con la minima conoscenza della programmazione. STRUMENTI BIDIREZIONALI Procedendo con la selezione e la modifica delle proprietà dei componenti e delle schede, i risultati vengono aggiornati automaticamente nel codice sorgente, e viceversa. Modificando il codice sorgente direttamente con un editor di testo, come il Code Editor incorporato, le modifiche vengono immediatamente riflesse negli strumenti visuali. COMPILATORE IN CODICE NATIVO Il compilatore Delphi 32-bit, sviluppato per ottimizzare il codice nativo produce applicazioni “selfcontained”, in codice nativo eseguibile “.EXE”. Oltre ad avere migliorato le prestazioni degli eseguibili compilati(in confronto ai linguaggi interpretati) la natura self-contained di un’applicazione Delphi consente l’indipendenza dalle librerie Runtime “.DLL”. CONNESSIONE AI DATABASE INTEGRATA Il Borland Database Engine BDE, inserito in Delphi permette lo sviluppo di applicazioni in grado di accedere ai database Paradox, dBase, e InterBase. Attraverso SQL Links, l’applicazione può accedere anche a server SQL, tra cui InterBase, Oracle, Sybase, e Microsoft SQL. Inoltre, il flessibile motore di gestione dei database di Delphi facilita il passaggio da applicazioni locali ad applicazioni Client/Server. CASE – INSENSITIVE Il compilatore non distinguerà in alcun punto del programma(tranne che all'interno delle Stringhe) tra lettere maiuscole e minuscole. Saranno quindi considerati identici nomi di variabili e funzioni come ‘Casa’ e ‘casa’, a differenza di quanto accade negli analoghi linguaggi come C/C++ o il Basic. Tesina Maturità 2005/06 10 VERSIONI DI DELPHI ATTUALMENTE SUL MERCATO La Borland dopo avere distribuito Turbo Pascal 6.0 per DOS ha introdotto sul mercato un prodotto per Windows 3.1 e lo ha chiamato Borland Pascal 7.0 (versione Windows di Turbo Pascal 7.0). Successivamente ha completamente rivisto la struttura dei suoi compilatori e strumenti di sviluppo accessori introducendo la famiglia Delphi. A tutt’oggi sono state rilasciate ben 6 edizioni di Delphi: Delphi 1 per lo sviluppo di applicativi a 16 bit in ambiente Windows 3.1 e 3.11. Nell’ordine si sono poi succedute le versioni di Delphi 2 , 3, 4, 5, 6, 7, 8 Delphi 2005 e Delphi 2006 per lo sviluppo di applicazioni a 32 bit per Windows 9x e Windows NT. I compilatori Borland sono generalmente disponibili in tre versioni : a) versione desktop (a basso costo) b) versione professional c) versione client/server o enterprise La versione desktop pur costando poco è una versione completa ma priva di oggetti VCL particolari o di driver nativi per database particolari (opzioni richieste da un programmatore che sviluppi applicativi professionali) è comunque generalmente adatta per sviluppare applicazioni di tipo standalone. Recentemente è stata introdotta sul mercato pure una versione di Delphi che opera in ambiente Linux(denominata Kylix) ciò consentirà di trasferire in questo nuovo ambiente, applicazioni native sviluppate per l’ambiente Windows. Tesina Maturità 2005/06 11 DATABASE • CONCETTO un database non è altro che una specie di "contenitore" che ci permette di gestire grossi quantitativi di informazioni simili in maniera ordinata e (si spera) più semplice e veloce che con grossi libroni cartacei o documenti di tipo foglio di calcolo o testo. Questo termine indica un insieme di dati riguardanti uno stesso argomento, o più argomenti correlati tra loro, strutturata in modo tale da consentire che i dati possano venire utilizzati per diverse applicazioni e, normalmente, possano evolvere nel tempo. • Piccola Storia su i DataBase Probabilmente il più glorioso antenato dei database relazionali odierni può essere identificato con la sana e vecchia agenda telefonica. in effetti penso che se guardiamo come è fatta la nostra agenda scopriremo una notevole affinità con i sui parenti più tecnologici attuali. Infatti è organizzata tramite un indice, che gestisce una tabella composta da colonne che identificano il tipo di dato sotto riportato (nome, numero di telefono, a volte indirizzo) all' interno delle registrazioni o record che , pur differendo l' una dall' altra per i dati riportati al loro interno "hanno tutti la stessa struttura", cioè riportano le stesse informazioni nella medesima maniera. La base di dati, oltre ai dati veri e propri, deve contenere anche le informazioni sulle loro rappresentazioni e sulle relazioni che li legano. Spesso, ma non necessariamente, una base dati contiene le seguenti informazioni: • Strutture dati che velocizzano le operazioni frequenti, tipicamente a spese di operazioni meno frequenti. • Collegamenti con dati esterni, cioè riferimenti a file locali o remoti non facenti parte del database. • Informazioni di sicurezza, che autorizzano solo alcuni profili utente ad eseguire alcune operazioni su alcuni tipi di dati. • Programmi che vengono eseguiti, automaticamente o su richiesta di utenti autorizzati, per eseguire elaborazioni sui dati. Un tipico automatismo costituisce nell'eseguire un programma ogni volta che viene modificato un dato di un certo tipo. In un sistema informatico, una base di dati può essere manipolata direttamente dai programmi applicativi, interfacciandosi direttamente con il sistema operativo. Tale strategia era quella adottata universalmente fino agli anni 60, ed è tuttora impiegata quando i dati hanno una struttura molto semplice, o quando sono elaborati da un solo programma applicativo. Tuttavia, a partire dalla fine degli anni 60, per gestire basi di dati complesse condivise da più applicazioni, si sono utilizzati appositi sistemi software, detti sistemi per la gestione di basi di dati (in inglese "Database management system" o "DBMS"). La ricerca nel campo delle basi di dati studia le seguenti problematiche: • Progettazione di basi di dati. • Progettazione e implementazione di DBMS. • Interpretazione (o analisi) di dati contenuti in database. Tesina Maturità 2005/06 12 POSTA ELETTRONICA Cos’è la posta elettronica • La posta elettronica è un sistema per inviare, ricevere, gestire messaggi di testo, documenti, file: dalle immagini ai brani musicali fino ai filmati. Per usarla occorrono almeno: • un computer (o altri apparecchi come telefoni cellulari e palmari predisposti) • una connessione a Internet • una casella di posta attivata da un Internet Service Provider (ISP) come Libero, col suo indirizzo • un'interfaccia di posta elettronica: un client o un browser • Come funziona Il sistema è complesso ma, semplificando e banalizzando, ogni messaggio di posta si può descrivere come un file che viene scambiato tra mittente e destinatario (o destinatari), tramite server (i server sono dei grossi computer). Perché tutti lo possano leggere, il file ha dei campi fissi da compilare: alcuni obbligatori (Destinatario), altri facoltativi (Mittente, Oggetto, Destinatari in Copia Conoscenza, Testo, Allegati ecc...). Per scrivere un messaggio di posta (chiamato anche email, e-mail o mail), apriamo e compiliamo questo file con un programma di posta o direttamente sul Web. Quindi spediamo l’email(file) alla casella di posta del destinatario: inviamo, cioè, il file al server dell’ISP dove si trova la casella del destinatario. Tutte le caselle sono sempre collocate nel server degli ISP. Quando il destinatario si connette a Internet e accede alla sua casella, riceve il nostro messaggio (file): può visualizzarlo e eventualmente scaricarlo sul suo Pc. • • • Anche noi, per ricevere le mail (file), dobbiamo connetterci a Internet e accedere alla casella. • • Anche noi, per ricevere le mail (file), dobbiamo connetterci a Internet e accedere alla casella. I file delle email possono anche "trasportare" altri file: gli allegati. • Come si usa La posta elettronica si gestisce sostanzialmente in 3 modi: con un programma di posta in modalità POP3, con la Web Mail, con un programma di posta in modalità IMAP4. Si ricorda che per usare la posta devi attivare una casella da un IPS, solitamente registrandoti nel suo sito Internet • PROGRAMMA DI POSTA IN MODALITÀ POP3 Generalmente ogni Pc ha un client email installato con il sistema operativo: Windows offre Outlook Express, i sistemi Macintosh offrono Mail o altri programmi. Ovviamente puoi usare altri client: commerciali, gratuiti o con licenze diverse (per esempio Microsoft Outlook, Qualcomm Eudora, Mozilla Thunderbird, Opera, Incredimail...) Tesina Maturità 2005/06 13 • • • • Per cominciare devi aprire il programma e configurarlo per gestire l'account di posta. Nellasezione Configura la casella trovi le procedure per i programmi più comuni; l'elenco dei parametri è nella pagina Dati e parametri. L'utilizzo del protocollo POP3 (Post Office Protocol) permette di ricevere i messaggi direttamente sul Pc. Il protocollo per la posta in uscita è sempre SMTP (Simple Mail Transfer Protocol. Terminata la configurazione, devi connetterti a Internet. Quindi puoi comporre un nuovo messaggio e inviarlo: finirà nella casella del destinatario sul server del suo Provider e ci resterà finché egli non lo scaricherà sul Pc o non lo cancellerà dalla Web Mail. Di solito i client salvano una copia dei messaggi spediti nella cartella "Posta inviata". L'altra operazione "base" è ricevere le email presenti nella tua casella. Usando il POP3 si parla di messaggi "scaricati" perché i file delle email sono materialmente spostati dal server dell'ISP al Pc dell'utente: li leggi nella cartella "Posta in arrivo" del client e li trovi in una cartella creata sul disco fisso del Pc. La gestione in POP3 è la più utilizzata perché rapida, flessibile e consente di leggere i messaggi scaricati anche senza essere connesso al Web. Inoltre permette di archiviare un numero illimitato di email: il quantitativo dipende solo dalla capacità del disco fisso del Pc. • WEB MAIL Questo sistema consente di spedire, inviare e gestire le mail senza usare un programma. Basta avere un Pc, anche quello di un amico o di un Internet Cafè in qualsiasi parte del mondo, connesso a Internet. Semplificando, la Web Mail è l'interfaccia di un sito Internet che dà accesso alla casella di posta direttamente sul server del Provider. 1. Per accedervi apri un browser ( un programma di navigazione come Internet Explorer, Netscape o Mozilla) e si raggiungi il sito dell’Internet Provider. 2. Scrivi username e password negli appositi campi dell’area Mail. 3. entrato nella Web Mail gestisci i messaggi tramite un’interfaccia le cui funzioni variano a seconda dell’ISP. La Web Mail ha tuttavia due limiti: non puoi leggere i messaggi se non sei connesso a Internet e lo spazio a disposizione è limitato. Se utilizzi solo la Web Mail, rischio infatti di occupare tutto lo spazio messo a disposizione dall’ISP sulla casella con la conseguente intrerruzione del servizio finché non scarichi (o cancelli) un sufficiente numero di mail. • PROGRAMMA DI POSTA IN MODALITÀ IMAP4 È una "via di mezzo" fra le altre modalità. Gestisci la posta con i client (gli stessi del POP3), ma non scarichi le mail nel Pc: restano memorizzate sul server. Il programma le visualizza solo se ti connetti a Internet: altrimenti vedi le sole intestazioni. Questo sistema è meno flessibile degli altri ed è limitato dalla dimensione della casella. Tesina Maturità 2005/06 14 LA RETE INTERNET • ORIGINI E FUNZIONAMENTO La grande rete di internet, in prima approssimazione, può essere immaginata come una rete telefonica che permette ad ogni utente di comunicare con chiunque altro nel mondo semplicemente componendo un numero. Basta soltanto sostituire i telefoni con i computer. Negli anni '60, con i fondi dell'Advanced Research Projects Agency (ARPA), dipendente dal Dipartimento della Difesa degli Stati Uniti, furono sperimentate tecnologie innovative per collegare alcuni computer fra loro attraverso le linee telefoniche mediante la cosiddetta "commutazione di pacchetto". Questa tecnologia comportava che i dati in transito su una linea telefonica fossero divisi in piccole parti, ognuna con il proprio "indirizzo di destinazione". Comunicazione di pacchetto: La tecnologia a commutazione di pacchetto, permette a diversi utenti di usare e condividere la stessa linea di comunicazione. Questo sistema permette la creazione di reti che possono automaticamente dirottare i dati evitando computer e linee fuori uso, poiché ogni pacchetto ha un proprio "indirizzo" di recapito. Com’è chiaro, il sistema a pacchetti permette ad un notevole numero di veicoli-pacchetti (ognuno con il proprio indirizzo) di utilizzare la stessa linea. Invece, i precedenti sistemi a commutazione di circuito ( il sistema per lo smistamento delle chiamate telefoniche basato sulla connessione fisica diretta tra due utenti) per mettere in rete i computer richiedevano una linea per ogni computer, utilizzabile di volta in volta solo dai due utenti collegati (anche se non dialogano). Tesina Maturità 2005/06 15 A partire degli anni’ 80 questa "ragnatela" divenne comunemente nota come Internet, e prese le stesse diramazioni con crescente velocità. In seguito, l'accesso si rese disponibile al pubblico. Ora chiunque abbia un computer può girare per il mondo utilizzando un modem: un dispositivo che permette di convertire (modulare) i segnali digitali (sequenze di 0 e 1) del computer in segnali analogici, in grado di transitare sulle linee telefoniche; ovviamente il modem esegue anche l'operazione inversa (demodulare). Dagli anni '90, la rete continua a crescere in modo esponenziale. Per soddisfare il crescente volume di traffico.Inizialmente, la principale "backbone" (dorsale) della rete negli Stati Uniti muoveva i dati a 56.000 bps (bit per secondo: ossia in un secondo ogni punto della rete è attraversato da 56000 cifre composte da 0 e 1), si dimostrava troppo lenta per la crescente quantità di dati che veniva inviata attraverso di essa, e negli anni recenti la velocità massima è cresciuta fino ad 1.5 milioni e poi fino a 45 milioni di bps. Un altro dei più importanti cambiamenti è stato lo sviluppo di servizi commerciali che potessero fornire servizi Internet ad una velocità paragonabile a quella dei sistemi governativi. Connessi ai computer della dorsale ci sono piccoli network che servono particolari regioni geografiche, che generalmente muovono i dati ad una velocità di circa 1.5 milioni di bit al secondo. Questi, a loro volta, alimentano i network più piccoli o i computer individuali. In realtà, non sono uno o più computer centrali che costituiscono il "motore" di Internet: le sue risorse sono costituite proprio dalle migliaia di computer individuali. Questo è allo stesso tempo il suo più grande punto di forza e la sua più grande debolezza. Il punto di forza rende virtualmente impossibile che l'intera rete vada in crash contemporaneamente, infatti se qualche computer è in tilt (down), il resto della rete rimane in piedi. Inoltre, la sua struttura di sistema riduce anche i costi di accesso alla rete per un singolo o per un'organizzazione. Per contro, migliaia di computer connessi possono anche rendere difficile navigare nella rete e trovare quello che si cerca. Per ovviare in parte a questa difficoltà sono stati sviluppati alcuni "motori" di ricerca che catalogano e facilitano la ricerca delle informazioni.. Le reti Internet possono collegare quasi ogni tipo di computer o di sistema operativo, e utilizzano praticamente ogni tipo di mezzo elettronico di trasmissione: fibre ottiche, linee in rame per telefoni, canali radio o a microonde e, in un prossimo futuro, anche le linee elettriche. I collegamenti a Internet sono realizzati con l'intermediazione dei cosiddetti provider (AMERICAN ON LINE è il più grande provider del mondo; TIN, INFOSTRADA, TISCALI, FLASHNET, sono alcuni - non necessariamente i migliori - dei molti provider disponibili in ITALIA) che usano standard internazionali complessivamente denominati TCP/IP (Transmission Control Protocol/Internet Protocol), definiti da un'organizzazione detta Internet Society. Le grandi dimensioni e l'universalità della rete pubblica Internet la rendono utilizzabile per il collegamento di altri tipi di rete e di servizi computerizzati, compresi i sistemi online di informazione e di shopping. Grazie a queste caratteristiche, la rete Internet si è dimostrata un mezzo efficiente per costruire una struttura universale di informazione molto completa a livello mondiale. Tesina Maturità 2005/06 16 PROGRAMMI REALIZATI Nella realizazione di tutti i piccoli programi che compongono questo progetto, come linguaggio di programazione abbiamo usato il Delphi. tutti i dati ritenuti necessari sono stati memorizzati in un apposito databese, perciò si deve avere una interrazione tra questi due sistemi. i componenti che abbiamo usato per andare a prendere i dati, qualvolta necessario, nei database sono i seguenti: ADOConnction DataSource Questo componenti ha il compito di fare il colegamento tra il programma delphi e il data base; bisonha solaente indicare il percorso del database e vedere se la connezione è stata realizzata corretamente. Questo componente funziona da sorgente. è in grado di prendere i dati dalla tabella e di inviare ad un contenitore, come ad esempio una memo. ADOTable Organizza i dati appogiandosi all’Ado Connetion. offre accesso diretto ad ogni record e campo in una tavola di database fondamentale Timer Questo componenti appartiene al gruppo degli oggetti non visibili di delphi, ovviamente non in fase di progettazione. Nel nostro caso sostituisci la funzione del pulsanti; cioè iniziare la ricerca e chiudere il programma. • Trasferimento Ordinato Dei Santi Il seguente programma ha la funzione di trasferire in maniera ordinata, in base al mese i al giorno. Abbiamo fatto ciò perché i dati contenuti nel database non erano ordinati, dovuto alle modifiche fatte in quest’ultimo. Quando in un data base dobbiamo aggiungere dei dati, questi vengono aggiunti in fondo al data base; inoltre distingue i santi del calendario di Frate Indovino con quelli trovati in Internet. Quest’ultima è stata realizzata con l’inserimento del numero 99 nella casella corrispondente al grado dei santi. Tesina Maturità 2005/06 17 Listato del sorgente Delphi procedure TForm1.Button1Click(Sender: TObject); var cont : integer; st : string; Begin tanno1.Open; st := 'SELECT * FROM ANNO '+ 'ORDER BY MESE, GIORNO, NOME, N ASC'; // Seleziono tutti i campi della tabella ANNO, ordinati per M, G, N, in modo ascendente. QAnno.Close; QAnno.SQL.Clear ; // pulisci il contenitore dove c'è l'istruzione QAnno.SQL.Add(st); // aggiungi nuovo commando QAnno.Open; for cont := 1 to QAnno.RecordCount do begin TAnno1.Append; // crea un nuovo record TAnno1.FieldByName('MESE').AsInteger := QAnno.FieldByName('MESE').AsInteger; TAnno1.FieldByName('GIORNO').AsInteger := QAnno.FieldByName('GIORNO').AsInteger; TAnno1.FieldByName('N').AsInteger := QAnno.FieldByName('N').AsInteger; TAnno1.FieldByName('CAT').AsString := QAnno.FieldByName('CAT').AsString; TAnno1.FieldByName('NOME').AsString := QAnno.FieldByName('NOME').AsString; TAnno1.FieldByName('TIPO').AsString := QAnno.FieldByName('TIPO').AsString; TAnno1.FieldByName('DESCRIZIONE').AsString := QAnno.FieldByName('DESCRIZIONE'). AsString; TAnno1.Post; // salva sul disco QAnno.Next; // passa al record successivo della query end; SHOWMESSAGE('HO FINITO'); end; procedure TForm1.Button2Click(Sender: TObject); VAR CONT, n : INTEGER; st : string; begin For Cont := 1 To TAnno.RecordCount do Begin n := TAnno.FieldByName('N').AsInteger; //Leggi quello che c’è nel campo N st := TAnno.FieldByName('N').AsString; If (n = 0) OR (st = '') Then Begin TAnno.Edit; TAnno.FieldByName('N').AsInteger := 99; // Inserisci 99 quando è vuoto il campo N. TAnno.Post; End; TAnno.Next; End; SHOWMESSAGE('HO FINITO'); end; end. Tesina Maturità 2005/06 18 • Ricerca Onomastico Questo piccolo programma ci permette di sapere i giorni che si festeggia un determinato santo; basta inserire il nome del santo che si vuole ricercare nell’apposita casella e premere il pulsante: in questo modo viene visualizzato su un contenitore dati, la data e i nomi dei santi che si festeggiano. Inoltre possiamo scegliere il tipo di ricerca da effettuare: solo 1..3 il programma andrà a ricercare i santi in corrispondenza al calendario di Frante Indovino; Tutti farà riferimento all’interro database, il quale è composto sia dai santi del calendario di Frate Indovino, sia dei santi ottenuti da una ricerca fatta su Internet. Tesina Maturità 2005/06 19 LISTATO DEL SORGENTE DELPHI unit Unit1 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Db, ADODB, Grids, DBGrids, ExtCtrls; type TForm1 = class(TForm) ADOConnection1: TADOConnection; DataSource1: TDataSource; DBGrid1: TDBGrid; ANNO: TADOTable; Edit1: TEdit; Memo1: TMemo; Button1: TButton; rg1: TRadioGroup; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } Function Mese(mm : integer) : String; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); VAR C1, mm, gg, n : Integer; nome : string; cond : Boolean; begin Memo1.Clear; ANNO.First; Memo1.Lines.Add('Onomastico per '+ Edit1.text); Memo1.Lines.Add(''); for c1 := 1 to ANNO.RecordCount do begin nome := ANNO.FieldByName('NOME').AsString; n := ANNO.FieldByName('N').AsInteger; Tesina Maturità 2005/06 20 nome := UpperCase(nome); // DIVENTA TUTTO MAIUSCOLO If Rg1.ItemIndex = 0 Then cond := (Pos(Edit1.Text,nome) <> 0) and (n < 99) Else cond := (Pos(Edit1.Text,nome) <> 0) ; If cond Then Begin mm := anno.FieldByName('MESE').AsInteger; gg := anno.FieldByName('GIORNO').AsInteger; Memo1.Lines.Add(IntToStr(gg)+' '+Mese(mm)+' '+nome+ ' - ' + IntToStr(n)); // specifica il grado Memo1.Lines.Add(''); End; ANNO.Next; end; end; function TForm1.Mese(mm: integer): String; begin Case mm of 1 : Result := 'Gennaio'; 2 : Result := 'Febbraio'; 3 : Result := 'Marzo'; 4 : Result := 'Aprile'; 5 : Result := 'Maggio'; 6 : Result := 'Giugno'; 7 : Result := 'Luglio'; 8 : Result := 'Agosto'; 9 : Result := 'Settembre'; 10: Result :='Ottobre'; 11: Result :='Novembre'; 12: Result := 'Dicembre'; end; end; end. Tesina Maturità 2005/06 21 Gestione Onomastici: Questo programma ci consente di verificare i nominativi degli Studenti per i quali si verifica la ricorrenza dell'ONOMASTICO. In questo programma viene utilizzato i due database: quello degli studenti e quelli dei santi. In corrispondenza della data scelta il programma è in grado di verificare i nome dei santi di quel giorno e allo stesso momento se all’interno della tabella studenti è presente un nome compatibile a quello del santo di quel giorno. Se si verifica l’onomastico, fa visualizzare in un contenitore, il nome e cognome della persona, l’anno di nascita e la classe dello studente. Inoltre salva tutti questi dati su un file di testo, il quale servirà per l’invio dell’email, poi deve chiudersi. Tutti queste operazioni vengono eseguite in modo automatico. Tesina Maturità 2005/06 22 Listato del sorgente Delphi unit Unit1; interface uses Windows, Messages, SysUtils,Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, ADODB, ComCtrls, StdCtrls, ExtCtrls; type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOConnection2: TADOConnection; DataSource1: TDataSource; DataSource2: TDataSource; DBGrid1: TDBGrid; DBGrid2: TDBGrid; dtpk: TDateTimePicker; Button1: TButton; Label1: TLabel; SqlSanti: TADOQuery; Memo1: TMemo; sqlStudenti: TADOQuery; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); public { Public declarations } Function Ricerca_Onomastico(san : string) : string; Function Mese(nm : integer) : string; end; var Form1: TForm1; implementation {$R *.dfm} Function TForm1.Mese(nm : integer) : string; Begin Case nm of 1 : Result := 'Gennaio'; 2 : Result := 'Febbraio'; 3 : Result := 'Marzo'; 4 : Result := 'Aprile'; 5 : Result := 'Maggio'; Tesina Maturità 2005/06 23 6 : Result := 'Giugno'; 7 : Result := 'Luglio'; 8 : Result := 'Agosto'; 9 : Result := 'Settembre'; 10 : Result := 'Ottobre'; 11 : Result := 'Novembre'; 12 : Result := 'Dicembre'; End; End; procedure TForm1.Button1Click(Sender: TObject); var cont, z : integer; Anno, Mes, Giorno: Word; data : TDateTime; st : string; begin Memo1.Clear; data := dtpk.Date; DecodeDate(data, Anno, Mes, Giorno); Label1.Caption := 'Giorno: ' + IntToStr(Giorno) + ' del Mese:’ + mese(mes) + ' dell''anno: ' + IntToStr(Anno); st := 'SELECT * FROM ANNO ' + 'WHERE (MESE='+ IntToStr(mes)+') AND '+ '(GIORNO='+ IntToStr(giorno)+') AND ' + '(N < 99) ORDER BY N ' ; SqlSanti.Close; SqlSanti.SQL.Clear; SqlSanti.SQL.Add(ST); SqlSanti.Open; Memo1.Lines.Add('Onomastici del Giorno: ' + IntToStr(Giorno) + ' del Mese di ' + mese(mes) + ' dell''anno: ' + IntToStr(Anno)); Memo1.Lines.Add(''); If SqlSanti.RecordCount <> 0 Then Begin For Cont := 1 To SqlSanti.RecordCount do Begin st := UpperCase(SqlSanti.FieldByName('NOME').AsString); // z := Pos(' ',st); // If z <> 0 Then st := Copy(st,1,z-1); Memo1.Lines.Add(st); Memo1.Lines.Add(Ricerca_Onomastico(st)); SqlSanti.Next; End; Tesina Maturità 2005/06 24 End Else Begin Memo1.Lines.Add('----'); End; Memo1.Lines.SaveToFile('Onomastici.txt'); // salvo il contenuto della memo in un file di testo. end; Function TForm1.Ricerca_Onomastico(san : string) : string; var st : string; k : integer; Begin st := 'SELECT * FROM STUDENTI ' + 'WHERE NOME="'+san+'"'; SqlStudenti.Close; SqlStudenti.SQL.Clear; SqlStudenti.SQL.Add(st); SqlStudenti.Open; st := ''; For k := 1 To SqlStudenti.RecordCount do Begin st := st + SqlStudenti.FieldByName('COGNOME').AsString+' '+ SqlStudenti.FieldByName('NOME').AsString+' '+ SqlStudenti.FieldByName('DN').AsString+' '+ SqlStudenti.FieldByName('CLASSE').AsString+#13+#10 ; SqlStudenti.Next; End; Result := st; End; procedure TForm1.FormCreate(Sender: TObject); begin dtpk.DateTime := Now; timer1.Enabled := true;// nell'evento create della Form abito il timer. end; procedure TForm1.Timer1Timer(Sender: TObject); begin button1.Click;// quando ha finito il tempo fa la funzione del bottone, avviando la ricerca. close; // chiude il programma. // con queste istruzioni faccio in modo che il programma si gestisca da solo. end; end. Tesina Maturità 2005/06 25 • Compleanni Studenti Questo programma, in base alla data scelta, ci va vedere i compleanni. Se c’è la ricorrenza del compleanno visualizza in un contenitore Memo, i nomi e cognomi, la classe, la data di nascita e l’età. Dopo ciò deve salvare i dati ottenuti in un file di testo per l’invio dell’email. Anche questo programmino esegui tutte queste operazione in maniera automatica. Listato del sorgente Delphi unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, ADODB, ComCtrls, StdCtrls, ExtCtrls; type TForm1 = class(TForm) ADOConnection2: TADOConnection; DataSource2: TDataSource; DBGrid2: TDBGrid; dtpk: TDateTimePicker; Button1: TButton; Memo1: TMemo; SQLStudenti: TADOQuery; Label1: TLabel; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure dtpkChange(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public Tesina Maturità 2005/06 26 { Public declarations } Function DOW(dat : TDateTime) : string; Function Mese(nm : integer) : string; end; var Form1: TForm1; implementation {$R *.dfm} //uses DateUtils; procedure TForm1.Button1Click(Sender: TObject); var cont : integer; Anno,AnnoNas, Mes, Giorno, MM, DD: Word; data, dn : TDateTime; st, cog, nom, cla : string; begin Memo1.Clear; data := dtpk.Date; DecodeDate(data, Anno, Mes, Giorno); // Recupero Anno, Mese, Giorno della data recuperata dal TDateTimePicker Memo1.Lines.Add('Compleanni del Giorno: ' + IntToStr(Giorno) + ' del Mese: ' + Mese(mes) + ' dell''anno: ' + IntToStr(Anno)); Memo1.Lines.Add(''); SqlStudenti.First; For cont := 1 To SqlStudenti.RecordCount do Begin cog := SqlStudenti.FieldByName('COGNOME').AsString; nom := SqlStudenti.FieldByName('NOME').AsString; cla := SqlStudenti.FieldByName('CLASSE').AsString; DN := SqlStudenti.FieldByName('DN').AsDateTime; DecodeDate(dn, AnnoNas, MM, DD); // Recupero Anno, Mese, Giorno della data di Nascita If (MM = Mes) AND (DD = Giorno) Then Begin Memo1.Lines.Add(cog+' - '+nom+' - '+cla+' - '+DateToStr(DN)+' anni: '+IntToStr(Anno-AnnoNas)); End; SqlStudenti.Next; End; Memo1.lines.SaveToFile('compleanni.txt'); end; procedure TForm1.FormCreate(Sender: TObject); Tesina Maturità 2005/06 27 begin DTPK.DateTime := Now; Label1.Caption := Dow(DTPK.DateTime); Timer1.Enabled := True; end; Function TForm1.Mese(nm : integer) : string; Begin Case nm of 1 : Result := 'Gennaio'; 2 : Result := 'Febbraio'; 3 : Result := 'Marzo'; 4 : Result := 'Aprile'; 5 : Result := 'Maggio'; 6 : Result := 'Giugno'; 7 : Result := 'Luglio'; 8 : Result := 'Agosto'; 9 : Result := 'Settembre'; 10 : Result := 'Ottobre'; 11 : Result := 'Novembre'; 12 : Result := 'Dicembre'; End; End; Function TForm1.DOW(dat : TDateTime) : string; Begin // ricordarsi i cambiamenti x delphi 6 // DayOfTheWeek, il primo giorno settimana è Lunedì Case DayOfWeek(dat) of 1 : Result := 'Domenica'; 2 : Result := 'Lunedì'; 3 : Result := 'Martedì'; 4 : Result := 'Mercoledì'; 5 : Result := 'Giovedì'; 6 : Result := 'Venerdì'; 7 : Result := 'Sabato'; End; End; procedure TForm1.dtpkChange(Sender: TObject); begin Label1.Caption := Dow(DTPK.DateTime); end; procedure TForm1.Timer1Timer(Sender: TObject); begin button1.Click; close; end; end. Tesina Maturità 2005/06 28 • TEST SANTI DOPPI Questo programma ha servito per visualizzare se nello stesso campo “NOME”, nel qualle sono stati inseriti i nome dei santi, erano presente più di un santo. il problemma era che avendo due santi sullo stesso campo, il programma considerava un unico nome. quando dovevamo fare la ricerca era praticamente impossibile trovare uno che avessi tutti due i nomi. Listato del sorgente Delphi unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Db, ADODB, Grids, DBGrids, ExtCtrls, ComCtrls; type TForm1 = class(TForm) ADOConnection1: TADOConnection; DataSource1: TDataSource; DBGrid1: TDBGrid; dtpk: TDateTimePicker; Button1: TButton; SqlSanti: TADOQuery; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public Tesina Maturità 2005/06 29 { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var cont, z : integer; Anno, Mese, Giorno: Word; data : TDateTime; st : string; begin Memo1.Clear; data := dtpk.Date; DecodeDate(data, Anno, Mese, Giorno); z := 0; For cont := 1 to SqlSanti.RecordCount do Begin st := SqlSanti.FieldByName('NOME').AsString; mese := SqlSanti.FieldByName('MESE').AsInteger; giorno := SqlSanti.FieldByName('GIORNO').AsInteger; If Pos(' e ',st) <> 0 Then Begin Inc(z); Memo1.Lines.Add(IntToStr(z)+'-'+st+' M'+IntTostr(mese)+' G'+IntToStr(giorno)); End; SqlSanti.Next; End; memo1.Lines.SaveToFile('Santi-doppi.txt'); end; procedure TForm1.FormCreate(Sender: TObject); begin dtpk.DateTime := Now; end; end. Tesina Maturità 2005/06 30 • INVIO EMAIL Lo scopo di questo programma è di essere in grado di prendere i dati salvati, in un file di testo, dai programmi onomastici e compleanni, e di spedire via posta elettronica(email). Abbiamo salvato in un database i nomi dei destinati, così il programma può sapere a chi deve inviare i dati. Nella realizzazione di questo programma abbiamo sostanzialmente lavorato nella manipolazione di un componente chiamato NMSMTP, il quale si occupa della spedizione della email. Cronologia del programma: • Apre il Programma Calendario • Avvia il programma Ricerca Onomastici prendendo successivamente i dati ottenuti e memorizza in una memo. • Avvia Ricerca Compleanni prendendo successivamente i dati ottenuti e memorizza in una memo. • Aperta connessione dalla postazione: • Connessione al server: mail.tin.it( serve di posta in cui siamo collegati) 25 Il numero 25 corrisponde alla porta in cui è attivo il servizio SMTP, cioè il protocollo che trasmette i messaggi di posta elettronica tra due utenti. • Invio email: ARCANGELO ANTONIO:[email protected] • Invio email: AZZANI CLETO:[email protected] • Invio email: DA SILVA FRANCISCO:[email protected] • Chiusura Programma Calendario Tesina Maturità 2005/06 31 Listato del sorgente Delphi unit u_invioemail; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Psock, NMsmtp, ExtCtrls, Grids, DBGrids, DB, ADODB, ShellApi, DBCtrls, LogFile; type TForm1 = class(TForm) NMSMTP1: TNMSMTP; Button1: TButton; Button2: TButton; Edit7: TEdit; Label7: TLabel; Button6: TButton; Edit10: TEdit; Label11: TLabel; Memo1: TMemo; ADOConnection1: TADOConnection; Tab_utenti: TADOTable; DataSource1: TDataSource; DBGrid1: TDBGrid; Button3: TButton; Timer1: TTimer; logf: TLogFile; sb: TStatusBar; Edit1: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure NMSMTP1Connect(Sender: TObject); procedure NMSMTP1Disconnect(Sender: TObject); procedure NMSMTP1Status(Sender: TComponent; Status: String); procedure Button6Click(Sender: TObject); procedure NMSMTP1EncodeStart(Filename: String); procedure NMSMTP1EncodeEnd(Filename: String); procedure NMSMTP1MailListReturn(MailAddress: String); procedure NMSMTP1ConnectionFailed(Sender: TObject); procedure NMSMTP1ConnectionRequired(var handled: Boolean); procedure NMSMTP1Failure(Sender: TObject); procedure NMSMTP1HostResolved(Sender: TComponent); procedure NMSMTP1InvalidHost(var handled: Boolean); procedure NMSMTP1PacketSent(Sender: TObject); procedure NMSMTP1RecipientNotFound(Recipient: String); procedure NMSMTP1SendStart(Sender: TObject); procedure NMSMTP1Success(Sender: TObject); procedure NMSMTP1HeaderIncomplete(var handled: Boolean; hiType: Integer); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); Tesina Maturità 2005/06 32 procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } stat, nmail : integer; nome, email : string; procedure Connessione_SMTP; procedure Preparazione_email; procedure Spedizione_email; end; var Form1: TForm1; const host_smtp = 'mail.tin.it'; host_port = 25; host_name = 'CALENDARIO'; email_addr ='[email protected]'; implementation {$R *.DFM} procedure TForm1.Connessione_SMTP; begin NMSMTP1.Host := host_smtp; NMSMTP1.Port := host_port; NMSMTP1.Connect; logf.LogToFile(TimeToStr(time)+' Connessione al server: '+host_smtp+':'+IntToStr(host_port)); end; procedure TForm1.Button1Click(Sender: TObject); begin Connessione_SMTP; end; procedure TForm1.Button2Click(Sender: TObject); begin NMSMTP1.Disconnect; end; procedure TForm1.NMSMTP1Connect(Sender: TObject); begin sb.Panels[0].Text := 'Connected'; logf.LogToFile(TimeToStr(time)+' Aperta connessione'); Inc(Stat); end; procedure TForm1.NMSMTP1Disconnect(Sender: TObject); begin If sb.Panels[0].Text <> '' then sb.Panels[0].Text := 'Disconnected'; end; procedure TForm1.NMSMTP1Status(Sender: TComponent; Status: String); begin If sb.Panels[0].Text <> '' then sb.Panels[0].Text := status; Tesina Maturità 2005/06 33 end; procedure TForm1.Spedizione_email; begin // dati del mittente NMSMTP1.PostMessage.FromAddress := email_addr; NMSMTP1.PostMessage.FromName := host_name; NMSMTP1.PostMessage.Subject := Edit10.Text; NMSMTP1.PostMessage.ToAddress.Add(Edit7.Text); NMSMTP1.PostMessage.ToBlindCarbonCopy.Add('[email protected]'); NMSMTP1.PostMessage.Body.Assign(Memo1.Lines); NMSMTP1.SendMail; logf.LogToFile(TimeToStr(time)+' Invio email: '+nome+':'+email); end; procedure TForm1.Button6Click(Sender: TObject); begin Spedizione_email; end; procedure TForm1.NMSMTP1EncodeStart(Filename: String); begin sb.Panels[0].Text := 'Encoding '+Filename; end; procedure TForm1.NMSMTP1EncodeEnd(Filename: String); begin sb.Panels[0].Text := 'Finished encoding '+Filename; end; procedure TForm1.NMSMTP1MailListReturn(MailAddress: String); begin // Memo2.Lines.Add(MailAddress); end; procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject); begin ShowMessage('Connection Failed'); end; procedure TForm1.NMSMTP1ConnectionRequired(var handled: Boolean); begin If MessageDlg('Connection Required. Connect?', mtConfirmation, mbOkCancel, 0) = mrOk then Begin Handled := TRUE; NMSMTP1.Connect; End; end; procedure TForm1.NMSMTP1Failure(Sender: TObject); begin sb.Panels[0].Text := 'Failure'; end; procedure TForm1.NMSMTP1HostResolved(Sender: TComponent); begin sb.Panels[0].Text := 'Host Resolved'; end; procedure TForm1.NMSMTP1InvalidHost(var handled: Boolean); var TmpStr: String; begin Tesina Maturità 2005/06 34 If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then Begin NMSMTP1.Host := TmpStr; Handled := TRUE; End; end; procedure TForm1.NMSMTP1PacketSent(Sender: TObject); begin sb.Panels[0].Text := IntToStr(NMSMTP1.BytesSent)+' bytes of '+IntToStr(NMSMTP1.BytesTotal)+' sent'; end; procedure TForm1.NMSMTP1RecipientNotFound(Recipient: String); begin ShowMessage('Recipient "'+Recipient+'" not found'); end; procedure TForm1.NMSMTP1SendStart(Sender: TObject); begin sb.Panels[0].Text := 'Spedizione messaggi'; end; procedure TForm1.NMSMTP1Success(Sender: TObject); begin sb.Panels[0].Text := 'Success'; Inc(Stat); end; procedure TForm1.NMSMTP1HeaderIncomplete(var handled: Boolean; hiType: Integer); begin ShowMessage('Mail-Header Incompleto'); end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin NMSMTP1.Abort; end; procedure TForm1.Preparazione_email; var body : string; begin // global variables nome := Tab_utenti.FieldByName('NOME').AsString; email := Tab_utenti.FieldByName('EMAIL').AsString; edit10.Text := 'SERVIZIO CALENDARIO ELETTRONICO per: '+nome; edit7.Text := email; Memo1.Lines.LoadFromFile('Onomastici.txt'); body := Memo1.Lines.Text; Memo1.Lines.LoadFromFile('Compleanni.txt'); body := body + Memo1.Lines.Text; Memo1.Lines.Text := body; Memo1.Lines.Add(''); Memo1.Lines.Add('Copyright [email protected]'); memo1.Lines.SaveToFile('email.txt'); end; procedure TForm1.Button3Click(Sender: TObject); begin DeleteFile('Onomastici.txt'); Tesina Maturità 2005/06 35 DeleteFile('Compleanni.txt'); Timer1.Enabled := True; end; procedure TForm1.FormCreate(Sender: TObject); begin stat := 0; nmail := 0; Tab_utenti.Open; Edit1.Text := IntToStr(Tab_Utenti.RecordCount); logf.LogToFile(TimeToStr(time)+' Apertura Programma Calendario'); end; procedure TForm1.Timer1Timer(Sender: TObject); begin case stat of 0 : Begin Inc(Stat); ShellExecute(Form1.HANDLE,PChar('open'),PChar('pOnomastici.exe'),nil,nil,SW_MINIMIZE); logf.LogToFile(TimeToStr(time)+' Ricerca Onomastici'); End; 1 : Begin If FileExists('Onomastici.txt') Then Inc(Stat); End; 2: Begin Inc(Stat); ShellExecute(Form1.HANDLE,PChar('open'),PChar('pCompleanni.exe'),nil,nil,SW_MINIMIZE); logf.LogToFile(TimeToStr(time)+' Ricerca Compleanni'); End; 3: Begin If FileExists('Compleanni.txt') Then Inc(Stat); End; 4: Begin Connessione_SMTP; // attiva la connessione Inc(Stat); End; 5: sb.Panels[1].Text := 'CONNESSIONE IN CORSO '; 6: Begin // Preparazione_email; Spedizione_email; Inc(Stat); End; 7 : sb.Panels[1].Text := 'SPEDIZIONE IN CORSO '; 8: Begin Inc(nmail); If nmail >= Tab_Utenti.Recordcount Then Begin Inc(Stat); End Else Begin Tab_Utenti.Next; Stat := 6; Tesina Maturità 2005/06 36 End; End; 9: Begin NMSMTP1.Disconnect; Inc(Stat); End; 10: Begin Close; End; end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Tab_utenti.Close; logf.LogToFile(TimeToStr(time)+' Chiusura Programma Calendario'); end; procedure TForm1.FormShow(Sender: TObject); begin Form1.Caption := 'Servizio Calendario Elettronico IPSIA MORETTO '+NMSMTP1.GetLocalAddress; end; end. Tesina Maturità 2005/06 37 ISTITUTO PROFESSIONALE DI STATO PER L’INDUSTRIA E ARTIGIANATO - MORETTOESAME DI STATO NETWORK COMPUTER TYPES DA SILVA MOREIRA FRANCISCO JOSÈ Calsse: 5^BZ ANNO SCOLASTICO 2005/06 Tesina Maturità 2005/06 38 TELECOMMUNICATIONS • Computer Network: A computer network is a group of computers which are interconnected by telephone lines or other high speed communication links in order to share information and processing resources. Networks enable data to be transferred rapidly from one computer to another. • Three network types: BUS RING STAR BUS: A bus network topology, also called a daisy-chain topology has each computer directly connected on a main communication line. One end has a controller, and the other end has a terminator. Any computer that wants to talk to the main computer must wait its turn for access to the transmission line. In a straight network topology, only one computer can communicate at a time. When a computer uses the network, the information is sent to the controller, which then sends the information down the line of computers until it reaches the terminating computer. Each computer in the line receives the same information. RING: Ring networks operate like bus networks with the exception of a terminating computer. In this configuration, the computers in the ring link to a main communication cable. The network receives information via a “token” containing information requested by one or more computers on the network. The token passes around the ring until the requesting computer(s) have received the data. The token uses a packet of information that serves as an address for the computer that requested the information. The computer then “empties” the token, which continues to travel the ring until another computer requests information to be put into the token. STAR: A network in which all terminals are connected through a single point, such as a star coupler or concentrator. Star networks incorporate multiport star couplers in to achieve the topology. Once again, a main controlling computer or computer server interconnects with all the other computers in the network. As with the bus topology with a backbone, the failure of one computer node does not cause a failure in the network. Both the bus and the star network topologies use a central computer that controls the system inputs and outputs. Also called a server, this computer has external connections, to the Internet for example, as well as connections to the computer nodes in the network. Tesina Maturità 2005/06 39 BIBLIOGRAFIA : Tutti i documenti che sono stati utilizzati per fare questa tesina provengono da: www.google.it Manuale di Delphi www.google.com.br Corsi di Delphi www.ipsiamoretto.com Approfondimenti Tesina Maturità 2005/06 40 RINGRAZIAMENTI: VORREI RINGRAZIARE TUTTI I DOCENTE DELLA CLASSE 5BZ, IN MODO PARTICOLARE IL PROFESSORE CLETO AZZANI, CHE SI È RESO SEMPRE DISPONIBILE NELLA REALIZAZZIONE QUESTO PROGETTO, SOPRATTUTTO PER QUANTO RIGUARDA LA REALIZZAZIONE DEI PROGRAMMI IL LINGUAGGIO DELPHI. RINGRAZIO INOLTRE AL VICE-PRESIDE ARCANGELO CHE CI HA CONSENTITO DI REALIZZARE QUESTO PROGRAMMA DI STUDIO. Tesina Maturità 2005/06 DI CON 41