+ All Categories
Home > Documents > LaTeX e la formattazione di pseudocodice e sorgenti

LaTeX e la formattazione di pseudocodice e sorgenti

Date post: 11-Jul-2015
Category:
Upload: infomedia-editori-coop
View: 739 times
Download: 0 times
Share this document with a friend
Description:
DEV DEVeloping Software Solutions — n. 123 — novembre 2004LaTeX e la formattazione di pseudocodice e sorgentidi Gianluca PignalberiNon contenti delle nostre possibilita di inserimento di brani di codice sorgente, di grammatiche BNF e di diagrammi sintattici all’interno di documenti LaTeX, vediamo come inserire, evidenziandoli coerentemente, brani di pseudocodice e di codice sorgente.Gianluca Pignalberi ` E laureato in Scienze dell’Informazione presso ` l’Universita La Sapienza di Roma. S
7
 DEV DEV eloping Softw are Solutions — n. 123 — novembre 2004 LaTeX e la formattazione di pseudocodice e sorgenti di Gianluca Pigna lberi Non conten ti delle nostre possibilit ` a di inserimento di brani di codice sorgente, di gram- matiche BNF e di diagrammi sintattici all’interno di documenti LaTeX, vediamo come inserire, evidenziandoli coerentemente, brani di pseudocodice e di codice sorgente. Gianluca Pignalberi ` E laureato in Scienze dell’Informazione presso l’Universit ` a La Sapienza di Roma. Si occupa, per passione, di Algoritmi Genetici applicati all’e- laborazione delle imma- gini, ma  ` e stato a lungo occupato, per profes- sione, in problematiche legate all’elaborazione di testi: riconosci mento della lingua, compres- sione, retrie val. Il tutto sempre per sistemi Unix .
Transcript
Page 1: LaTeX e la formattazione di pseudocodice e sorgenti

5/11/2018 LaTeX e la formattazione di pseudocodice e sorgenti - slidepdf.com

http://slidepdf.com/reader/full/latex-e-la-formattazione-di-pseudocodice-e-sorgenti 1/6

 

DEV DEVeloping Software Solutions — n. 123 — novembre 2004

LaTeX e la formattazione di

pseudocodice e sorgentidi Gianluca Pignalberi

Non contenti delle nostre possibilita di inserimento di brani di codice sorgente, di gram-matiche BNF e di diagrammi sintattici all’interno di documenti LaTeX, vediamo comeinserire, evidenziandoli coerentemente, brani di pseudocodice e di codice sorgente.

Gianluca Pignalberi

E laureato in Scienzedell’Informazione pressol’Universita La Sapienzadi Roma. Si occupa, perpassione, di AlgoritmiGenetici applicati all’e-laborazione delle imma-gini, ma e stato a lungooccupato, per profes-sione, in problematichelegate all’elaborazionedi testi: riconoscimentodella lingua, compres-sione, retrieval. Il tuttosempre per sistemi Unix .

Page 2: LaTeX e la formattazione di pseudocodice e sorgenti

5/11/2018 LaTeX e la formattazione di pseudocodice e sorgenti - slidepdf.com

http://slidepdf.com/reader/full/latex-e-la-formattazione-di-pseudocodice-e-sorgenti 2/6

 

pubblicato su

WWW.INFOMEDIA.IT

stampa digitale da

Lulu Enterprises Inc.

stores.lulu.com / infomedia

Infomedia

Infomedia e l’impresa editoriale che da quasi venti an-

ni ha raccolto la voce dei programmatori, dei sistemi-

sti, dei professionisti, degli studenti, dei ricercatori e dei

professori d’informatica italiani.

Sono piu di 800 gli autori che hanno realizzato per le te-

state Computer Programming, Dev, Login, Visual Basic

Journal e Java Journal, molte migliaia di articoli tecnici,

presentazioni di prodotti, tecnologie, protocolli, strumen-ti di lavoro, tecniche di sviluppo e semplici trucchi e stra-

tagemmi. Oltre 6 milioni di copie distribuite, trentamila

pagine stampate, fanno di questa impresa la piu grande ed

influente realta dell’editoria specializzata nel campo della

programmazione e della sistemistica.

In tutti questi anni le riviste Infomedia hanno vissuto del-

la passione di quanti vedono nella programmazione non

solo la propria professione ma un’attivita vitale e un vero

divertimento.

Nel 2009, Infomedia e cambiata radicalmente adottando

un nuovo modello aziendale ed editoriale e si e organiz-

zata attorno ad una idea di Impresa Sociale di Comunita,

partecipata da programmatori e sistemisti, separando le

attivita di gestione dell’informazione gestite da un board

comunitario professionale e quelle di produzione gesti-

te da una impresa strumentale. Questo assetto e in linea

con le migliori esperienze internazionali e rende Infome-

dia ancora di piu parte della Comunita nazionale degli

sviluppatori di software.

Infomedia e media-partner di manifestazioni ed eventi in

ambito informatico, collabora con molti dei pi u impor-tanti editori informatici italiani come partner editoriale e

fornitore di servizi di localizzazione in italiano di testi in

lingua inglese.

L’impaginazione automatica di questa rivista e realizzata al

100% con strumenti Open Source usando OpenOffice,

Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp,

Python e BASH

For copyright information about the contents of DEV, please see the section “Copyright” at the end of each ar-

ticle if exists, otherwise ask authors. Infomedia contents

is© 2004 Infomedia and released as Creative Commons

2.5 BY-NC-ND. Turing Club content is © 2004 Turing

Club released as Creative Commons 2.5 BY-ND.

  Le informazioni di copyright sul contenuto di DEV so-

no riportate nella sezione “Copyright” alla fine di cia-

scun articolo o vanno richieste direttamente agli autori.

 Il contenuto Infomedia e© 2004 Infomedia e rilasciato

con Licenza Creative Commons 2.5 BY-NC-ND. Il con-

tenuto Turing Club e © 2004 Turing Club e rilasciato

con Licenza Creative Commons 2.5 BY-ND. Si applicano

tutte le norme di tutela dei marchi e dei segni distintivi.

` E in ogni caso ammessa la riproduzione parziale o tota-

le dei testi e delle immagini per scopo didattico purch´ e

vengano integralmente citati gli autori e la completa

identificazione della testata.

 Manoscritti e foto originali, anche se non pubblicati, non

si restituiscono.

Contenuto pubblicitario inferiore al 45%.

  La biografia dell’autore riportata nell’articolo e sul

sito www.infomedia.it e di norma quella disponibi-

le nella stampa dell’articolo o aggiornata a cu-

ra dell’autore stesso. Per aggiornarla scrivere a

[email protected] o farlo in autonomia all’indirizzo

http: // mags.programmers.net  / moduli / biografia

Page 3: LaTeX e la formattazione di pseudocodice e sorgenti

5/11/2018 LaTeX e la formattazione di pseudocodice e sorgenti - slidepdf.com

http://slidepdf.com/reader/full/latex-e-la-formattazione-di-pseudocodice-e-sorgenti 3/6

 

In due precedenti articoli [2] e [3]

abbiamo visto quali possibilità abbiamodi aggiungere a documenti LaTeX siabrani di codice sorgente, tramite l’am-biente verbatim e derivati, che produ-zioni grammaticali, sia sotto forma di

regole BNF che di diagrammi sintattici.Se questo può rendere i nostri documentipiù ricchi e comprensibili, potremmo nonessere pienamente soddisfatti di quantoottenuto.Potremmo ancora volere due modi perimpaginare i nostri codici: uno per inserirefacilmente dei brani di pseudocodice e unoper evidenziare automaticamente le parolechiave sia di brani di pseudocodice che di

brani di codice sorgente, dipendentementeda quello scelto per redigere un program-ma.In questo articolo illustreremo i packagealgorithms, program e listing , che ci per-metteranno di ottenere quanto voluto.

AlgoritmiUna volta che sappiamo padroneggiarel’ambiente verbatim e ambienti correlati, cirendiamo conto di quanto la loro utilità, avolte, possa essere molto limitata e limi-tante.Supponiamo di voler descrivere un algorit-

mo: inseriamo il testo entro un’istanza del-l’ambiente verbatim, ottenendo una partedi documento ben indentata, ma il cui testoè interpretato letteralmente. Se nel testo cifosse una parte di codice LaTeX per for-mattare una formula, vedremmo il codicestesso nel documento finale, anziché la for-mula, proprio a causa della (non) interpre-tazione.Per ovviare a ciò tentiamo un “imbroglio” aLaTeX, non usando l’ambiente verbatim:questa volta la formula viene resa bene, maperdiamo tutte le indentazioni, perchéLaTeX elimina gli spazi inutili per la compo-

sizione del testo.Un esempio di quanto detto è in Figura 1.L’uso del package alltt  potrebbe semplifi-carci il compito, essendo questo simile averbatim. L’unica differenza è che i caratte-

ri ‘\’, ‘{’ e ‘}’ non vengono interpretati lette-ralmente, ma mantengono il significatousuale in LaTeX, dandoci la possibilità dicambiare font e inserire formule e comandiin un sorgente verbatim. Questa soluzione,come anche soluzioni alternative che preve-dano l’uso di inserimenti di spazi arbitrariinserendo parole colorate di bianco, rende-rebbero illeggibile il sorgente; non le pren-deremo in considerazione.Il package che ci aiuta nel formattare pseu-docodici (algorithms) [4] è composto dadue file di stile: algorithm e algorithmic , chepossono essere inclusi insieme o menoall’interno di un documento.Questi due file di stile forniscono gli

ambienti omonimi. Vediamone l’uso e lefinalità.L’ambiente algorithmic  serve a formattarelo pseudocodice adottando dei comandispecifici. La sua portata è racchiusa da

\begin{algorithmic}[<numero>]

\end{algorithmic}

il cui argomento opzionale numero  indicaogni quante righe vogliamo che il sorgentesia numerato. All’atto di includere il packa-ge possiamo invocare l’opzione noend , chenon fa stampare gli end di ogni comando e

salvare spazio.I comandi a nostra disposizione ricalcano iltipo di costrutti che i linguaggi imperativi ciforniscono in genere: affermazioni, cicli escelte.

È impossibile formattare in maniera efficacebrani di pseudocodice; siperde l’indentazione ol’interpretazione deicomandi di composizione

DEV > n. 123 novembre 2004 91 <<

Non contenti delle

nostre possibilità diinserimento di branidi codice sorgente,di grammaticheBNF e di diagrammisintattici all’internodi documentiLaTeX, vediamocome inserire,evidenziandoli

coerentemente,brani dipseudocodice e dicodice sorgente

LaTeX e la formattazionedi pseudocodice e sorgentidi Gianluca Pignalberi > [email protected]

FIGURA 1

Page 4: LaTeX e la formattazione di pseudocodice e sorgenti

5/11/2018 LaTeX e la formattazione di pseudocodice e sorgenti - slidepdf.com

http://slidepdf.com/reader/full/latex-e-la-formattazione-di-pseudocodice-e-sorgenti 4/6

 

92 DEV > n. 123 novembre 2004>>

Intermediate

Il primo tipo di costrutto è formattato con il comando:

\STATE <testo>

che formatta un’istruzione scritta in LaTeX nell’esatta

maniera che ci aspettiamo, rispettando l’indentazione impli-

cita dell’algoritmo; i cicli sono formattati, in base al tipo,

tramite i comandi:

\FOR{<condizione>} <testo> \ENDFOR

\FORALL{<condizione>} <testo> \ENDFOR

\WHILE{<condizione>} <testo> \ENDWHILE

\REPEAT <testo> \UNTIL{<condizione>}

\LOOP <testo> \ENDLOOP

Infine, le scelte coinvolgono i seguenti comandi:

\IF{<condizione>} <testo> \ENDIF

\IF{<condizione>} <testo> \ELSE <testo> \ENDIF

\IF{<condizione>} <testo> \ELSIF <testo> \ELSE

<testo> \ENDIF

Possiamo ora riscrivere l’algoritmo di Figura 1 come segue,

vedendone il risultato in Figura 2:

\begin{algorithmic}

\IF{$S \neq \emptyset$}

\STATE $S = S \setminus e$

\ELSE

\STATE exit

\ENDIF\end{algorithmic}

Quando descriviamo un algoritmo è utile definire le precon-

dizioni e le postcondizioni, cosa che possiamo fare tramite

i comandi

\REQUIRE <testo>

\ENSURE <testo>

Infine possiamo inserire dei commenti; il comando è

\COMMENT{<testo>}

Data la difficoltà di mettere un commento in una linea nonfinale di un costrutto, i relativi comandi prendono un argo-

mento opzionale (racchiuso da parentesi quadre) in cui scri-

vere l’eventuale commento.

L’ambiente algorithm fornisce invece il floating body entro

cui inserire un algoritmo (o qualunque altro testo). Ogni

algoritmo viene numerato in modo tale che, quando inse-

riamo una didascalia in un algoritmo (tramite \caption),

vediamo anche l’etichetta numerata. Tale numerazione

viene usata anche per generare un indice generale degli

algoritmi, inseribile nel documento tramite \listofalgo- rithms. In caso di invocazione del comando, verrà generato

un file con estensione .loa .

Il floating body relativo agli algoritmi può o meno essere cir-

condato da un motivo; tale motivo viene passato come

opzione al caricamento del package e può essere plain,

boxed o ruled (scelta di default).

Sorgenti e pseudocodiceUn package che promette di formattare pseudocodice e

sorgenti è program di Martin Ward (fornito senza manuali,

ma con un file di esempio). Molto onestamente l’autore

afferma che la formattazione avviene secondo il suo stile

preferito, che non è necessariamente quello preferito da

altri (tra cui l’autore del presente ar ticolo). Tale package for-

nisce due ambienti: program e programbox ; il secondo for-

matta il sorgente in una sola pagina.

Lo stile dei comandi è simile a quello visto in precedenza,

con dei minimi cambiamenti; ad esempio la sintassi della

scelta è:

\IF <condizione> \THEN <azione> \ELSE <azione> \FI

mentre quella di un ciclo while è

\WHILE <condizione> \DO <istruzioni> \OD

Così come il precedente package, anche questo basa la

sua sintassi sul modello del Pascal (o del For tran) e, come

il Pascal, fornisce due comandi per definire procedure efunzioni. I comandi sono, rispettivamente, \PROC  e

\FUNCT , con terminazioni \ENDPROC  e \ENDFUNCT . Ad

esempio, la funzione ricorsiva per il calcolo del fattoriale

potrebbe essere composta tramite il seguente codice:

\FUNCT |fatt|(x) \BODY

\IF x < 0 \THEN |exit|(0);

\FI

\IF x = 0 \THEN |return|(1);

\ELSE |return|(x * |fatt|(x - 1));

\FI

\ENDFUNCT

Il risultato è visibile in Figura 3.I lettori noteranno che le parole non chiave sono formatta-

te con i caratteri “matematici” (corsivi o inclinati), mentre

FIGURA 3Formattazione di una funzione più simileallo pseudocodice che non ad un codicesorgente

Pseudocodice ben formattato e con il testo LaTeX compostocorrettamente (end if è presente perchénon è stato usato noend al caricamentodi algorithmic)

FIGURA 2

Page 5: LaTeX e la formattazione di pseudocodice e sorgenti

5/11/2018 LaTeX e la formattazione di pseudocodice e sorgenti - slidepdf.com

http://slidepdf.com/reader/full/latex-e-la-formattazione-di-pseudocodice-e-sorgenti 5/6

 

DEV > n. 123 novembre 2004 93 <<

Intermediate

nel sorgente non si fa mai riferimento esplicito agli ambien-ti di formattazione di formule: ciò è fatto intrinsecamentedall’ambiente. Il carattere | intorno ad alcuni termini servea tenere i termini sulla stessa riga, mentre per stampare ilsuddetto carattere bisogna usare il comando \origbar .

Altri comandi forniti dal package riguardano i commenti, leazioni, le uscite forzate dal programma, oltre ad altri cicli eevidenziazioni varie.Diversi esempi d’uso sono proposti nel file program- 

demo.tex allegato al package. Una possibilità interessanteè quella di far scrivere le variabili lunghe e le parole chiavecon un carattere senza grazie; il comando necessario è\sfvariables.L’ultima cosa da notare è che, a differenza di algorithms,questo package non fornisce un floating body entro cui met-tere i sorgenti, né la possibilità di non stampare i vari fi eod di fine costrutto. Ciò lascia perplessi sulla reale capaci-tà di program di formattare sorgenti.

Codice sorgenteSupponiamo di trovarci nella seguente situazione: abbiamoun codice sorgente scritto in un linguaggio X da inserire nelnostro documento, ma lo vogliamo pretty-printed . Finché ilprogramma è paragonabile come lunghezza a Hello, world! 

potremmo quasi ricorrere a alltt e formattarlo come ci con-viene, e avremmo già lavorato molto.Un package che per noi si incarica di formattare un sor-gente in base al linguaggio è listings [1].Il suo caricamento all’interno di un documento è altamentepersonalizzabile, e la lista delle opzioni è interamente dis-ponibile in [1]. Ci limiteremo qui ad analizzarne le caratte-ristiche di base.La prima cosa da fare per formattare correttamente i sor-genti è caricare i driver del o dei relativi linguaggi.

Supponiamo di avere programmi scritti in C e nel linguaggiodi csh. Nel preambolo, dopo aver caricato il package, dovre-mo inserire:

\lstloadlanguages{C,csh}

(sono disponibili più di trenta driver, di cui molti con possi-bilità di scegliere tra più dialetti). In Figura 4 vediamo la for-mattazione di Hello, world! in C e delle prime righe di runti- 

me in csh.Nel corpo del documento, prima di scrivere ogni sorgente,bisogna selezionare il linguaggio adatto e relativo dialetto;possiamo farlo con:

\lstset{language=[<dialetto>]<linguaggio>}

Lo stesso comando ci permette di stabilire la dimensionedel carattere di tabulazione, lo stile delle parole chiave edaltri aspetti.Il sorgente va scritto entro un ambiente apposito, che sichiama lstlisting ; all’apertura dell’ambiente possiamo for-nire parametri opzionali e dobbiamo fornirne uno obbligato-rio (anche vuoto):

\begin{lstlisting}[<opzioni>]{<parametro>}

<sorgente>

\end{lstlisting}

Tra i parametri opzionali troviamo caption per le didascalie,captionpos (con valori t  o b ) per il posizionamento delledidascalie, float  per rendere il listato riposizionabile daLaTeX.

Il parametro obbligatorio è un nome; tutti i listati richiama-ti con lo stesso nome hanno lo stesso contatore di riga,cosicché possiamo inserire pezzi di un programma in varieparti del documento, potendo mantenere la continuità dinumerazione delle righe di codice. Lasciarlo vuoto significareinizializzare il contatore ogni volta.Allo stesso modo del comando \verb abbiamo la possibili-tà di comporre un comando inline . L’istruzione che ce loconsente è:

\lstinline

il cui uso è uguale al citato \verb . L’uso di lstlisting e lstin- 

line è mostrato in Figura 5, il cui sorgente è visibile nel

Listato 1.Possiamo infine inserire nel documento dei sorgenti senzadoverli copiare fisicamente, e ciò grazie al comando:

\lstinputlisting[<opzioni>]{<nome file>}

Il riferimento ai listati sfrutta il solito meccanismo \label -\ref ; in questo caso l’etichetta va messa all’interno delladefinizione caption; purtroppo, nei casi provati, il meccani-smo ha fornito numerazioni scorrette.

ConclusioniLaTeX base non è in grado di formattare in maniera non ele-mentare dei codici sorgente, né di agevolarci il compito di

scrivere dei brani di pseudocodice.In precedenza abbiamo visto alcuni package che espando-no la capacità di LaTeX nel formattare sorgenti, grammati-che BNF e diagrammi sintattici, ma che non sono comun-que in grado di manipolare semplicemente pseudocodice, o

FIGURA 4 Sorgenti C e csh formattaticoerentemente con il linguaggio

FIGURA 5 Sorgenti formattati inline e come elemen-to a sé stante

Page 6: LaTeX e la formattazione di pseudocodice e sorgenti

5/11/2018 LaTeX e la formattazione di pseudocodice e sorgenti - slidepdf.com

http://slidepdf.com/reader/full/latex-e-la-formattazione-di-pseudocodice-e-sorgenti 6/6

 

   L  o  w    L

  e  v  e   l

Mi ricordo ancora la prima volta che sonoriuscito a giocare in rete con degli amici.Lavoravo a Baveno, sul lago Maggiore.Durante l’ora di pranzo il nostro capo chiu-deva un occhio e ci concedeva, anche se inmodo non ufficiale, di poter usare la reteaziendale per i nostri scopi ludici.

Era molto divertente, ci permetteva unosfogo che ci aiutava a lavorare con più tran-quillità ed armonia durante il pomeriggio.

Lo sviluppoQuesto approccio, il passare dalla monou-tenza all’emozionante multiutenza del net-gaming, col tempo ha contagiato molte per-sone. L’evoluzione ha cosi portato al proli-ferare di giochi in grado di connettersi agame-server in grado di ricevere molterichieste in parallelo.Purtroppo, quando si sviluppa un gioco, sipensa soprattutto al raggiungimento dellemassime performance, ma poco alla sicu-rezza. Di questo problema di sono accortiin molti, ma ci sono persone che dedicano

parecchio del loro tempo allo studio dei pro-tocolli di comunicazione fra i vari client eserver di gioco, provando a scoprirne il fun-zionamento, notoriamente non documenta-to, in modo da cercare dei possibili proble-mi di sicurezza.

Luigi AuriemmaProbabilmente una delle persone piùnote in questo campo è Luigi Auriemma[2]. Visti i frequentissimi aggiornamentidel suo sito, si può tranquillamente direche è la persona che ha studiato e tro-vato più bug al mondo nel campo dei

videogiochi.Il suo lavoro è importante perché, da unlato ha documentato i protocolli di comu-nicazione, dall’altro ha provato a forzarlitrovando molti modi con i quali poter bloc-care un game-server.Da un punto di vista “aziendale” la cosapotrebbe essere vista in modo negativo:si potrebbe considerare “un piccolo ter-rorista che si diverte a bloccare compu-ter”, dall’altro è invece molto impor tanteperché in grado di evidenziare dei realiproblemi, come i buffer overflow, che seben sfruttati potrebbero essere usati perprendere il possesso della macchinanella quale sono provocati o, peggio,usati per la diffusione di virus.

Fake PlayerUn altro aspetto interessante del lavoro diLuigi è dato dai cosiddetti “fake player”.Per come sono pensati molti server èpossibile, tramite l’invio di appositi pac-

chetti UDP, creare una serie di finti playerall’interno dei server di gioco, in modo dabloccare delle partire o mandare in bloc-co il sistema per un numero troppo alto digiocatori da gestire.

E i produttori cosa dicono?

Se da un lato questo lavoro è veramenteapprezzabile, come dice lo stesso Luigi:“Sto ancora aspettando una patch odalmeno una risposta da EA riguardo il buf-fer-overflow in Need for Speed Hot Pursuit2 segnalatogli molti mesi fa”. C’è quindi chisonnecchia davanti a questi problemi o chisi limita a dire “il gioco non è più supporta-to”.

ConclusioniCome si poteva immaginare, anche ivideogiochi nascondono dei problemi disicurezza, l’aspetto grave della vicenda èperò che a pochi pare interessare la lorosoluzione, come se si trattasse di softwa-re di serie B.

Bibliografia[1] http://www.baccan.it, sito di riferimen-

to per Low Level.[2] http://aluigi.altervista.org, il sito di

Luigi Auriemma

GAME HACKINGAvete mai giocato, in rete, a Medal Of Honor, Half-Life, Unreal, Colin McRae Rally,The Rage o Quake 3? Non vi si è mai bloccato il server? Non avete mai notato delle cose strane? C’è chi dedica molte ore delle sue giornate a scoprire vulnerabilità all’in- terno di questi programmi 

a cura di Matteo Baccan > [email protected]

addirittura di formattare un sorgente in base al linguaggio

di programmazione in cui è stato scritto. In questo articolo

abbiamo visto alcuni package che ci semplificano le ultime

due operazioni, e che possono rendere i nostri documenti

ancora migliori con minore sforzo “programmativo”.

Bibliografia[1] C. Heinz, Listings.dtx Version 0.2000, www.ctan.org,

1999.[2] G. Pignalberi, Codici sorgente in documenti LaTeX, Dev

n. 120, Gruppo Editoriale Infomedia, Lug. - Ago. 2004.

[3] G. Pignalberi, LaTeX, diagrammi sintattici e grammati- che, Dev n. 122, Gruppo Editoriale Infomedia, Ott.

2004.

[4] P. Williams, Algorithms, www.ctan.org, 1996.

È laureato in Scienze dell’Informazione presso l’Università La Sapienza di Roma. Si occupa, per passione, di Algoritmi Genetici applicati all’elaborazione delle immagini, ma è stato a lungo occupato, per professione, in problematiche legate all’elaborazione di testi: riconoscimento della lingua,compressione, retrieval. Il tutto sempre per sistemi Unix.

94 DEV > n. 123 novembre 2004>>

Intermediate

LISTATO 1 Sorgente LaTeX del documento che includeil programma C per il calcolo approssimatodi p, con descrizione inline di un’istruzione

\documentclass[a4paper, 12pt]{article}

\usepackage{listings}\lstloadlanguages{C}

\begin{document}\lstset{language=[ANSI]C}\begin{lstlisting}[captionpos=b,%

caption={Programma C per il %calcolo approssimato di $\pi$}]{}

#include <stdio.h>#define SIGN -1

main () {double pi = 4.0;int lim, i;char sign;

printf (“Scrivi l’approssimazione: “);scanf (“%d”, &lim);for (i = 3, sign = SIGN; i <= lim; i += 2, sign *= SIGN)

pi = pi + sign * 4.0 / i;printf (“Pi ~ %f\n”, pi);return 0;

}\end{lstlisting}La parte fondamentale del calcolo \`e stata fatta con``\lstinline|pi = pi + sign * 4.0 / i;|’’.\end{document}

Gianluca Pignalberi

Download del progetto

Scarica il progetto completo di questo articolo all’indirizzo:

ftp://ftp.infomedia.it/pub/DEV./Listati/Dev123/ls-latex.zip 


Recommended