Parte
poi verso pagina 15 le funzioni
PROGRAMMAZIONE STRUTTURATA
Questi accenni di analisi e programmazione strutturata utilizzano come
sintassi descrittiva quella definita come notazione algebrica o notazione A.
La notazione A non dispone di forme grammaticali rigide per cui all’interno
del testo verranno utilizzati vocaboli simili ma non sempre
uguali allo scopo di illustrare i vari passi degli algoritmi qui descritti.
In altre parole la notazione algebrica e’ l’ analisi eseguita mediante il
linguaggio naturale delle problematiche legate agli aspetti dellaprogrammazione
che dobbiamo compiere. Una traduzione di questi in un qualsiasi linguaggio
di tipo strutturato risultera’ molto semplice.
Bisogna tenere a mente che un programma non viene fatto sul computer
bensi’ prima va studiato e analizzato sulla carta. Non accennare alla
notazione A o a qualsiasi metodo di analisi potrebbe portare a pericolose interpretazioni
delle strutture di un algoritmo, poi difficilmente correggibili.
Una chiarezza nella stesura dell’algoritmo in notazione A permettera’ una
facile codifica di questo in qualsiasi linguaggio sia questo C, Pascal o PL1.
La trasformazione dei concetti trattati da notazione algebrica a linguaggio
C, in questo capitolo, ha il solo scopo di abituare alla vista di certe forme.
L’apprendimento della sintassi vera e propria non ha molta importanza in
questa fase in quanto verra’ ripetuta e approfondita nelle sezioni riguardanti il linguaggio C vero e proprio.
http://www.tutorialpc.it/lingc2.asp
Metodo di analisi informatico
Dato un sistema reale munito di una qualsiasi struttura, tutto cio’
che permette di descriverlo e’ consinderato un informazione. Un’
informazione puo’ essere di tipo quantitativo o di tipo qualitativo.
Il metodo di analisi diretto consiste nell’elaborare direttamente l’insieme.
Ad esempio volendo sapere il numero di persone con i baffi in un
certo gruppo dovremmo contare, supponendo questi immobili,
le persone che corrispondono a questo requisito.
Il metodo indiretto si basa sull’analisi delle informazioni che si possiedono
su un determinato sistema. Nel caso precedente avremmo dovuto
attribuire un dato alle persone con i baffi e poi contare quante volte compare
quest’informazione.
In campo informatico possiamo affermare che ad ogni informazione
del sistema reale corrisponde un informazione codificata sul sistema di elaborazione.
tutti gli operatori dizionario C
http://digilander.libero.it/uzappi/C/C-operatori.html
http://www.swprog.com/guide/c-variabili.php
per quanto cristina bolchini delucida bene pag.11
di arte dell hacking
http://home.dei.polimi.it/bolchini/didattica/linguaggioc/lez4.htm
da
Materiale sul Linguaggio C
Lezioni di C
Le basi del linguaggio C
1. Introduzione …
2. Strumenti per la compilazione …
3. La struttura di un programma C …
Sintassi e semantica del linguaggio C
4. Dichiarazioni, tipi e memoria …
5. Aritmetica, operazioni e operatori …
6. Ingresso e uscita …
7. Il flusso di controllo …
8. Le funzioni …
9. Gli array …
10. I puntatori …
11. Le stringhe …
12. Le strutture …
13. I file …
14. La memoria dinamica …
15. Strutture dati dinamiche: le liste concatenate …
16. La ricorsione …
Esercizi vari
- Esercizi proposti suddivisi per argomenti/lezioni …
- Esercizi proposti suddivisi per tipologia …
- Alcuni esempi ed esercizi di programmi in C …
–>
Compilatori
Il compilatore utilizzato è il gcc disponibile al sito http://directory.fsf.org/project/gcc/.
È possibile lavorare da linea di comando, oppure scaricare ed installare un ambiente
di sviluppo che si appoggi a tale compilatore. In particolare sono disponibili gratuitamente gli ambienti di seguito elencati.
- http://www.bloodshed.net/devcpp.html ***
Dev-C++ è un ambiente di sviluppo integrato (IDE – Integrated Development Environment) per il linguaggio C e C++.
Si tratta di Free Software (in base alla licenza GNU General Public License), per sistemi operativi Windows 95/98/NT/2000/XP. - MinGW Developer Studio
Un altro ambiente integrato per lo sviluppo, sia per Windows sia per Linux. - KDevelop
Ambiente per Linux
Sintassi
Un breve riassunto della sintassi del linguaggio è riportato in questo documento
Cristiana Bolchini
Lezione 4
Dichiarazioni, tipi e memoria
Le variabili
Una variabile è un’area di memoria cui viene dato un nome, in grado di memorizzare un singolo
valore (numerico o un carattere). Per poter utilizzare una variabile per salvare un valore
è necessario dichiararla specificandone il nome ed il tipo di valore per i quali di desidera
utilizzarla; dunque, prima di utilizzare una variabile è necessario dichiarla.
Nel C ANSI la dichiarazione delle variabili viene messa all’inizio della funzione che ne farà uso.
Ci sono cinque tipi "primitivi":
- int – numero intero.
- float – numero in virgola mobile, ossia un numero con una parte frazionaria.
- double – numero in virgola mobile in doppia precisione.
- char – un carattere.
- void – un tipo per usi speciali
Uno degli aspetti meno chiari del linguaggio è la quantità di memoria che ciascuno
di questi tipi richiede non è predefinita, in quanto dipende dall’architettura del calcolatore.
Per individuare quanta memoria viene messa a disposizione dall’architettura del proprio
calcolatore è possibile compilare ed eseguire il programma di seguito riportato,
il quale visualizza il numero di byte utilizzati dai vari tipi, mediante l’uso dell’operatore sizeof.
#include <stdio.h>#include <stdlib.h>int main(){ char c; int a; float f; double d;
INDICE
http://digilander.libero.it/uzappi/C/index.html
nelle pagine successive
Operatori di confronto e logici abbbrevazioni di
hacker e programatori end or
Gli operatori di confronto permettono di verificare determinate condizioni, come ad esempio l'uguaglianza, la disuguaglianza, o semplicemente se un elemento è maggiore di un'altro; la seguente tabella mostra nel dettaglio gli operatori di confronto e la loro funzione:
Simbolo Significato Utilizzo == uguale a a == b != diverso da a != b < minore a < b > maggiore a > b <= minore o uguale a <= b > maggiore o uguale a >= bQuesti operatori servono quando incontreremo le istruzioni condizionali e quelle iterative, perché se la condizione è verificata restituiscono vero, altrimenti restituiscono falso. Gli operatori di confronto sono operatori a due argomenti ed hanno sempre posizione infissa (cioè tra i due argomenti).
Anche gli operatori logici vengono utilizzati con le istruzioni condizionali ed iterative, e permettono di fare l'AND e l'OR tra due operandi; nella tabella mostriamo i simboli usati e il loro utilizzo:
Simbolo Significato Utilizzo && AND logico a && b || OR logico a || bQueste operazioni restituiscono necessariamente 1 quando sono vere e 0 quando sono false, quindi facendo "a || b" questa assume valore uno se e solo se "a" o "b" valgono uno, mentre vale zero se entrambi gli operandi valgono zero; analogamente quando si ha "a & b", questa assume valore zero se "a" o "b" valgono zero, uno nel caso entrambi valgano uno. Da far notare che i simboli && e || sono diversi da & e | che, invece, rappresentano il bitwise AND ed il bitwise OR (non trattati in questa guida).
Articoli suggeriti dall'autore
- Operatori di base
- Gli operatori - I
- Gli operatori - II
- e sintatticamente anche un motore di ricerca come alta lavista
- http://www.mclink.it/assoc/lida/puntat1.htm
- motore di ricerca hacker simile altalavista
- http://www.digitalking.it/2007/04/17/cercare-files-tramite-google-con-search-hacker/
- the jargon file libro
- http://jhanc.altervista.org/jargon/Intro.html
- io mi iscrivo
- http://scriptingandprogramming.forumcommunity.net/?t=17394180
- scripting sui server spoofing
- http://gilderhack.wordpress.com/
- script
- http://www.dia.unisa.it/~ads/corso-security/www/CORSO-9900/script-ostili/tesina.htm
- 1] Klandler and Renehan "Hacker Proof" McGraw-Hill
[2] Se si desiderano maggiori chiarimenti su come eliminare i metacaratteri
consultate il sito http://www.cert.org/tech_tips/cgi_metacharacters.html
[3] Per ulteriori chiarimenti e soluzioni sui problemi JavaScript si può
consultare il sito http://www.cert.org/advisories/CA-97.20.javascript.html
[4] Sui problemi più recenti di Microsoft Explorer si può consultare il sito http://www.punto-informatico.it/p.asp?i=30108
arte dello scripting di shell*******************************************************************
http://www.disi.unige.it/person/DelzannoG/SO1/AA0708/guida_bash.pdf
Guida avanzata di scripting Bash
Un’approfondita esplorazione dell’arte dello
scripting di shell
Mendel Cooper
thegrendel@theriver.com
Guida avanzata di scripting Bash: Un’approfondita esplorazione dell’arte dello scripting di shell
by Mendel Cooper
Published 03 gennaio 2004
Questo manuale, per la cui comprensione non è necessaria una precedente conoscenza di scripting o di
programmazione, permette di raggiungere rapidamente un livello di apprendimento intermedio/avanzato . . . tempoche tranquillamente ed inconsapevolmente si trasforma in piccoli frammenti di conoscenza e saggezza UNIX®. Puòessere utilizzato come libro di testo, come manuale per autoapprendimento e come guida di riferimento per le
tecniche di scripting di shell. Gli esercizi e gli esempi ampiamente commentati coinvolgono il lettore interessato, con
l’avvertenza che l’unico modo per imparare veramente lo scripting è quello discrivere script.Questo libro è adatto per l’insegnamento scolastico, come introduzione generale ai concetti della programmazione.
L’ultimo aggiornamento di questo documento, in forma compressa bzip2 “tarball” comprendente sia i sorgentiSGML che il formato HTML, può essere scaricato dal sito dell’autore
(http://personal.riverusers.com/~thegrendel/abs-guide-2.3.tar.bz2). Vedi il change log
(http://personal.riverusers.com/~thegrendel/Change.log) per la cronologia delle revisioni.
Per la versione in lingua italiana sarà possibile reperirne una copia presso il PLUTO
(http://www.pluto.linux.it/ildp/guide.html), ovvero il sito italiano collegato a tldp.
Al momento di cominciare la traduzione della Advanced Bash-Scripting Guide decisi che avrei adottato la forma
impersonale. Procedendo nella traduzione, mi sono poi accorto, soprattutto negli esercizi di esempio, che l’autore
usava giochi di parole, modi di dire e battute che rendevano la forma impersonale piuttosto problematica. In
conseguenza di ciò, ho mantenuto tale forma solo nella parte esplicativa del documento, mentre ho adottato la forma
personale nella traduzione degli esercizi. Questa dicotomia potrebbe sembrare stridente, ed in effetti un po’ lo è. Per
questo motivo mi sono riproposto, durante gli aggiornamenti alle versioni successive, di adottare la forma personale
per tutto il documento in modo che risulti meno "accademico" e "pesante".
Non ho tradotto gli esercizi dell’Appendice A perché di fronte alla scelta tra il perdere ulteriore tempo nella
traduzione di tecniche avanzate e l’"urgenza" di rendere disponibile il documento, ho optato per la seconda
alternativa. Sarà comunque mia cura, una volta effettuati tutti gli aggiornamenti, colmare anche questa lacuna.
Naturalmente, non sono stati tradotti gli avvisi di sistema.
Vorrei ringraziare tutti i volontari di ILDP che mi hanno aiutato nel lavoro con i loro consigli.
Un grazie particolare a Ferdinando Ferranti (mailto:zappagalattica@inwind.it) per il suo lavoro di revisore e per aver
trasformato la versione italiana del documento dal formato HTML in formato SGML DocBook.
Emilio Conti (mailto:em.conti@tin.it)
Dedication
Per Anita, fonte di ogni magia
Table of Contents
Part 1. Introduzione.....................................................................................................................................................x
1. Perché programmare la shell? ...........................................................................................................................12. Iniziare con #!...................................................................................................................................................3
Part 2. I fondamenti.....................................................................................................................................................8
3. Caratteri speciali...............................................................................................................................................94. Introduzione alle variabili ed ai parametri ......................................................................................................305. Quoting
...........................................................................................................................................................416. Exit ed exit status ...........................................................................................................................................507. Verifiche
.........................................................................................................................................................538. Operazioni ed argomenti correlati ...................................................................................................................72
Part 3. Oltre i fondamenti .........................................................................................................................................82
9. Variabili riviste ...............................................................................................................................................8310. Cicli ed alternative......................................................................................................................................13811. Comandi interni e builtin
............................................................................................................................16312. Filtri, programmi e comandi esterni ............................................................................................................19413. Comandi di sistema e d’amministrazione
...................................................................................................28014. Sostituzione di comando .............................................................................................................................31015. Espansione aritmetica
.................................................................................................................................31716. Redirezione I/O ..........................................................................................................................................31817. Here document
...........................................................................................................................................33118. Intervallo ....................................................................................................................................................341
Part 4. Argomenti avanzati .....................................................................................................................................342
19. Espressioni Regolari...................................................................................................................................34320. Subshell ......................................................................................................................................................35021. Shell con funzionalità limitate.
....................................................................................................................35422. Sostituzione di processo ..............................................................................................................................35623. Funzioni
......................................................................................................................................................35824. Alias ...........................................................................................................................................................37625. Costrutti lista
..............................................................................................................................................37926. Array...........................................................................................................................................................38327. File
..............................................................................................................................................................41228. /dev e /proc .................................................................................................................................................41329. Zero e Null
.................................................................................................................................................41930. Debugging ..................................................................................................................................................42331. Opzioni
.......................................................................................................................................................43032. Precauzioni .................................................................................................................................................43333. Scripting con stile
.......................................................................................................................................44134. Miscellanea.................................................................................................................................................44435. Bash, versione 2 .........................................................................................................................................470
36. Note conclusive ...................................................................................................................................................476
36.1. Nota dell’autore.......................................................................................................................................47636.2. A proposito dell’autore............................................................................................................................47636.3. Dove cercare aiuto
...................................................................................................................................47636.4. Strumenti utilizzati per produrre questo libro ..........................................................................................476
Alcuni siti che forniscono informazioni utili per la creazione di Script:
- CGI security - informazioni generali sui CGI http://www.go2net.com/people/paulp/cgi-security
- Le FAQ riguardanti Java e JavaScript http://www.aereal.com/faq
- Link per creazione di CGI http://worldwidemart.com/scripts/
- Documenti sulla libreria cgi-lip.pl http://www.cgi-lib.berkeley.edu/
- cgic: una libreria C per CGI http://www.boutell.com/cgic
- Specifiche per CGI versione 1.1 http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
- Un esempio pratico di Script che visualizza le variabili di ambiente http://www.panix.com/~jlr/CGI-BIN/environ.cgi
- Codici di Script in Perl ed in C http://sunsite.unc.edu/jem/source.html
Il giovane hacker e la piccola strega
Luigi Calcerano e Filippo Calcerano
Milano Principato 2005 (Romanzo+Quaderno delle attività) € 9,20
Recensioni
Presentazione - Milano Principato La Nuova Secondaria n 10/2005 La Scuola
IL MESSAGGERO - Venerdì 2 Settembre 2005
Intervista con gli autori A scuola con gli hacker
Scuola
Presentazione - Milano Principato E' stato pubblicato il testo di narrativa per le scuole che avevamo annunciato nella bandella di Meminisse Iuvabit del nostro Luigi Calcerano.
Il libro, che Calcerano ha scritto col figlio Filippo è, ovviamente particolarmente divertente, leggibilissimo, pieno di colpi di scena e di sorprese, con avventure, combattimenti, agnizioni, storie sentimentali, suspense, conflitti generazionali e conflitti tra ragione e irrazionalità, con la partecipazione straordinaria di personaggi fantastici di cui, per non rovinarvi la lettura non possiamo dirvi di più.
Non poteva che essere così in una contaminatio tra fantascienza, fantasy e poliziesco dove il meglio dei vari generi viene messo a confronto e, per così dire, in concorrenza!
Ma non vogliamo approfondire il discorso sugli aspetti fiction dell' opera.Segnaliamo solo, in primo luogo la problematica del confronto tra sapere scolastico e sapere liberamente procurabile su internet, che ha interessanti effetti orientanti per un ragazzo che la affronti magari en passant, mentre si gode le vicende di un diciassettenne che smanetta coi computer, anarchico ed individualista costretto dalle cose che gli capitano ad un processo di crescita personale che lo porta verso la solidarietà e l' impegno.
Ma quello che ci sembra più degno di nota è che si tratta del primo libro di narrativa scolastica che affronta il problema della pirateria informatica e dei diritti informatici di conoscenza, in cui anzi il protagonista assoluto è un (giovane) hacker.
Errico Fortuna si presenta subito come un abilissimo hacker, creatore di videogiochi di successo, che lo hanno di fatto già reso ricco e che vuole abbandonare la scuola per soddisfare le sue (grandi) esigenze di conoscenza in Rete, con il suo straordinario mentore, Spock, il più grande cervello elettronico dell Università di Stanford a Palo Alto, in California.
Il giovane lettore è immerso subito nel fenomeno degli hacker, il suo protagonista si presenta subito, sin dalle prime scene come capace di infiltrarsi e penetrare nei sistemi informatici, forzando le difese dei computer. Lo ha fatto con quello della scuola e per due mesi preside e docenti sono rimasti senza stipendio!
Si presenta dunque subito, fin dalle prime pagine, anche il problema della trasgressione e del rapporto tra legalità ed illegalità.
Calcerano & Figlio chiariscono presto la differenza che esiste tra hacker e craker e la circostanza è opportunamente rivelata nella recensione al libro già pubblicata su Nuova Secondaria n.10/2005 (casa editrice La Scuola).
I craker sarebbero coloro che provano gusto a forzare ed entrare illegalmente nei computer degli altri, a truffare le compagnie telefoniche, a provocare guasti per il solo gusto di far danno, dal teppismo al terrorismo. I veri hacker non vogliono essere confusi con costoro chiamano questa gente 'cracker', e non vogliono avere nulla a che fare con loro.Il testo si presta per aprire tra i giovani un dibattito aperto e privo di pregiudizi sulla tematica, di cui sono abituati a sentire una sola campana, quella degli apparati repressivi e delle telco, le grandi organizzazioni di telecomunicazione che nel libro hanno il ruolo della Spectre nei romanzi di James Bond. Riportiamo per meglio approfondire l' argomento la interessantissima intervista agli autori che è pubblicata nell' apparato del libro.Un libro da non perdere per chi vuole che la scuola si occupi dei problemi della società della conoscenza!Intervista con gli autori
Ci pare che nella storia abbiate considerato gli hacker con una certa benevolenza, non li ritenete volgari pirati informatici?
F.C.-Io ne conosco qualcuno, sono bravi ragazzi e non sono criminali, ve lo assicuro! Come dovevamo considerarli?
L.C.-Devo dire che gli amici di mio figlio mi hanno un po influenzato. Non condivido tutto quello che fanno, come mi capita per i writer, ma non credo che il giudizio su quelli che non sono cracker debba essere troppo severo. Sto anzi approfondendo come la pensano perché alcune cose mi sembrano molto interessanti! Sapete cos è un sistema operativo, vero? E quel programma, quella cosa che fa capire all hardware come far andare i pacchetti di software , come gestire le periferiche, l hard disk, gli assegnamenti della memoria e una quantità di altre cose& Be , un hacker, un certo Linus Tornvald, ha costruito, il suo, e lo ha messo a disposizione di tutti, un sistema efficace e versatile, E lui, da solo, a neanche 20 anni, con un semplice 386, ha scritto il nucleo centrale di un sistema operativo, un lavoro per cui non bastano equipe di cervelli molto esperti e strapagati. E una cosa che ti da da pensare.
F.C.-Gli hacker sono curiosi e ficcano il naso da tutte le parti, anche dove non dovrebbero, nelle banche dati degli altri per esempio. Ma poi quello che ci tirano fuori, quasi ogni loro prodotto è free , a disposizione di tutti quelli che tramite Internet, lo vogliano scaricare nel proprio computer. E questo mi pare veramente bello!
Ma che significa esattamente la parola hacker?
L.C.-La parola hacker viene dal verbo to hack, che tra l altro, significa svolgere un lavoraccio faticoso e mal pagato ma anche semplificare cose difficilissime facendole diventare assolutamente comuni, banali, prive di difficoltà astruse.E una parola che fra noi si è cominciata ad usare verso la fine degli anni cinquanta. In questo senso eravamo tutti hacker, noi esperti di informatica, allora& professionisti mal pagati ma capaci di risolvere problemi difficili. In realtà gli hacker si definiscono diversamente. Si sentono campioni della libertà e della ricerca della conoscenza.
F.C.-Lo scrittore di fantascienza Sterling in Giro di vite contro gli hacker pubblicato qualche anno fa li definisce così Il termine può indicare l esplorazione intellettuale a ruota libera delle più alte e profonde potenzialità dei sistemi di computer, o la decisione di rendere l accesso ai computer e alle informazioni, quanto più libero e aperto possibile. Può implicare la sentita convinzione che nei computer si possa ritrovare la bellezza, che la fine estetica di un programma perfetto possa liberare la mente e lo spirito.(...)Tutti gli hacker sono completamente imbevuti di un eroica passione antiburocratica. Aspirano ad essere riconosciuti come un lodevole archetipo culturale,l equivalente elettronico e post-moderno dei cowboy e degli uomini delle montagne. (...)
Come mai da quella sua così simpatica spiegazione etimologica si è arrivati ad attività illecite e, alla fine a questa specie di glorificazione degli hacker?
L.C.-Il motivo c è. Alla fine degli anni cinquanta i pochi computer disponibili erano macchine gigantesche, l equivalente di un personal che ora tenete in casa su un tavolino, riempiva una sala come questa. Ed erano, ovviamente macchine costose, costosissime, controllate da un numero ristretto di privilegiati.
F.C.- Furono i primi a gustare il frutto della conoscenza!Fu allora che nelle università americane alcuni studenti, stufi della tutela dei professori, cominciarono a compiere azioni illegali, a penetrare nelle stanze dei calcolatori e ad utilizzare le macchine di nascosto. E da allora che al termine hacker s è aggiunta , come dire, una sfumatura di illegittimità, di persona che compie attività non del tutto lecite.
Ma perché qualcuno dovrebbe lavorare clandestinamente per regalare agli altri un programma di informatica che potrebbe invece vendere facendosi pagare profumatamente?
F.C.-Gli hacker sono così. Per questo mi piacciono!