ChSciTE Documentation
ChSciTE e' un Integrated Development Environment (IDE) per lo sviluppo ed esecuzione di programmi C/Ch/C++ in Ch.
Ch
e' un interprete C/C++ embeddable per programmazione a script su multi-piattaforma,
programmazione shell, 2D/3D plotting, calcolo numerico, e programmazaione a embedded script.
L'interfaccia utente di ChSciTE e' sviluppata in oltre 30 lingue differenti come tedesco,
francese, cinese, coreano, e giapponese.
Per iniziare
ChSciTE puo' essere eseguito con il comando
chscite.
In Windows, ChSciTE puo' essere convenientemente eseguito cliccando l'icona visualizzata
Figura 1 sul desktop.
Figura 1: L'icona di ChSciTE sul desktop di Windows
Quando ChSciTE e' lanciato, l'interfaccia grafica utente apparira' come in
Figura 2.
Le informazioni riportate qui vengono visualizzate se si clicca su
Aiuto | Aiuto su ChSciTE.
Figura 2: Come ottenere aiuto on-line per usare ChSciTE.
Sviluppare ed Eseguire Programmi C/Ch/C++
L'editing di testo in ChSciTE funziona in maniera simile alla maggior parte degli editor Macintosh o Windows,
come Notepad con la gestione automatica dello stile per la sintassi.
ChSciTE puo' mantenere piu' file in memoria in una sola volta ma
solo un file e' visibile. ChSciTE permette di avere in memoria fino a 20 file.
Regioni rettangolari di testo possono essere selezionate in ChSciTE premendo il tasto Alt in Windows o Ctrl
in GTK+ mentre si trascina il mouse sul testo.
Ci sono due finestre in ChSciTE, quella di editing e quella di output. Quella di output e'
posta o sotto quella di editing o alla destra. Inizialmente ha dimensione nulla, ma
puo' essere allargata trascinando il separatore tra essa e la finestra di editing.
Il comando Opzioni | Divisione Verticale puo' essere usato per spostare la finestra
di output sulla destra di quella di editing.
Con Ch installato sul computer,
i programmi preparati possono essere immediatamente eseguiti in ChSciTE come in altri IDE quali Microsoft Visual Studio.
I file sorgente sono eseguiti via interpretazione senza compilazione.
L'output del programma viene indirizzato alla finestra di output.
Primo Esempio di Editing e Esecuzione di un Programma con Output.
Per esempio, aprire un nuovo documento, e digitare:
#include
int main() {
printf("Hello, world!\n");
return 0;
}
come questo documento di testo.
Lo stesso programma hello.c in CHHOME/demos/bin/hello.c, dove CHHOME e' la home directory per Ch, per esempio
C:/Ch in Windows,
C:/Ch/demos/bin/hello.c,
puo' anche essere caricato usando il comando File | Apri.
Il programma dovrebbe apparire ora colorato con la sintassi evidenziata come mostrato in
Figura 3.
Figura 3: Programma hello.c
Salva il documento come hello.c come mostrato in
Figura 4.
Figura 4: Salva programma hello.c
Scegli Tools | Run come mostrato in
Figura 5 per eseguire il programma hello.c.
Figura 5: Esecuzione del programma hello.c
Invece di selezionare il comando Tools | Run, premendo il tasto funzione F5
si ottiene lo stesso effetto che eseguire il programma.
La finestra di output sara' resa visibile se non e' gia' visibile, e mostrera':
>ch -u hello.c
Hello, world!
>Exit code: 0
come mostrato in Figura 6.
Figura 6: Output del programma hello.c
La prima riga blue e' visualizzata da ChSciTE che mostra il comando che userebbe per eseguire il programma. La riga nera
e' l'output dell'esecuzione del programma Ch. La riga blue finale e' ancora da ChSciTE e mostra
che il programma e' terminato visualizzandone l'exit code. Un exit code pari a zero indica
un'esecuzione andata a buon fine.
ChSciTE capisce i messaggi di errore prodotti da Ch.
Per vedere questo, aggiungiamo un errore al file Ch cambiando la riga
printf(
"Hello, world");
in
printf(
"Hello, world";
Esegui Tools | Run sul programma modificato. Il risultato dovrebbe essere
>ch -u hello.c
ERROR: missing ')'
ERROR: syntax error before or at line 4 in file hello.c
==>: printf("Hello, world\n";
BUG: printf("Hello, world\n"; <== ???
ERROR: cannot execute command 'hello.c'
>Exit code: -1
come mostrato in
Figura 7.
Figura 7: Riga di errore nell'output dall'esecuzione del programma hello.c
Clicca sulla riga dell'output in rosso in Figura 7,
la riga con la sintassi errata viene evidenziata come mostrato in
Figura 8.
Figura 8: Riga d'errore nell'output dell'esecuzione del programma hello.c
Trovare l'errore in questo semplice caso e' particolarmente facile, mentre quando il file e'
di dimensioni maggiori si puo' usare il comando
Strumenti | Messaggio Successivo per vedere ogni errore riportato. Eseguendo
Strumenti | Messaggio Successivo, il primo messaggio di errore nella finestra di output
e la relativa riga nella finestra di editing sono evidenziati in giallo.
ChSciTE ora appare come in
Figura 8.
ChSciTE interpreta sia il nome del file sia il numero di riga nel messaggio di errore nella maggior
parte dei casi, quindi puo' aprire un altro file (come un header file) se l'errore e' stato causato da quel
file. Questa caratteristica puo' non funzionare dove il file name e' piu' complicato perche' contiene spazi o ".."
Se il comando di esecuzione ha fallito e impiega troppo tempo per terminare allora il comando Tools | Stop
Executing puo' essere usato.
In Windows, ChSciTE esegue per default tools come comandi di linea. Eseguire un programma GUI
in questo modo consiste nell'esecuzione del programma senza visualizzazione di nessuna finestra.
L'opzione command.subsystem puo' essere usata per definire strumenti che vengono eseguiti in modo GUI.
Il subsystem di default, 0, e' per programmi a comando di linea; 1 e' per programmi che creano la propria
finestra, e 2 e' per usare la ShellExecute call.
Per eseguire un programma GUI come OpenGL e Windows, usa il comando Strumenti | Lancia la Shell di Ch
per lanciare una shell Ch, ed esegui il programma GUI nella shell.
In GTK+, il subsystem per default 0
esegue il tool e aspetta che termini, reindirizzando l'output sulla finestra di output, e
il subsystem 2 esegue il tool in background.
Configurazione dei Paths e Ricerca dei Comandi in Ch
Quando un comando viene digitato in un prompt di una shell
per essere eseguito, la shell ricerca il comando
nelle directory specificate a priori.
In una shell Ch, la variabile di sistema _path di tipo stringa
contiene le directory nelle quali cercare il comando.
Ogni directory e' separata da ";" all'interno della stringa _path.
Quando un comando della shell Ch viene lanciato,
la variabile di sistema _path contiene gia' alcuni percorsi di ricerca.
L'utente puo' aggiungere nuove directory
come percorsi di ricerca per la shell usando la funzione stradd() che aggiunge l'argomento di tipo stringa
e ritorna la nuova stringa.
Per esempio, la directory
C:/Documents and Settings/Administrator/c99
non e' nel percorso di ricerca di un comando.
Se si prova ad eseguire il programma hello.c in questa directory quando la attuale directory di lavoro e'
C:/Documents and Settings/Administrator,
la shell Ch non sara' in grado di trovare questo programma, come viene mostrato sotto,
e' viene restituito un messaggio d'errore.
C:/Documents and Settings/Administrator> hello.c
ERROR: variable 'hello.c' not defined
ERROR: command 'hello.c' not found
Quando viene lanciato Ch o un programma Ch viene eseguito, per default verra eseguito
lo startup file .chrc in Unix o _chrc in Windows nella home directory dell'utente, se esiste.
Nel resto della presentazione, assumiamo che Ch e' usato in Windows con uno startup file
_chrc nella home directory dell'utente.
Questo startup file tipicamente determina i path di ricerca per comandi, funzioni,
header file, etc.
Per default, non c'e' lo startup file nella home directory dell'utente.
L'amministratore di sistema puo' aggiungere lo startup file nella home directory dell'utente.
Comunque l'utente puo' eseguire Ch con l'opzione -d come di seguito
ch -d
per copiare uno startup file campione dalla directory CHHOME/config/ alla sua home directory,
se non c'e' ancora uno startup file.
Notare che CHHOME non e' la stringa "CHHOME", ma invece usa il path di file system nel quale Ch e'
installato.
Per esempio, per default, Ch e' installato in C:/Ch in Windows e /usr/local/ch in Unix.
In Windows, il comando in una shell Ch sotto
C:/Documents and Settings/Administrator> ch -d
crea uno startup file _chrc nella home directory dell'utente
C:/Documents and Settings/Administrator.
Questo startup file locale di inizializzazione di Ch, _chrc, puo' essere aperto per modificare
i path di ricerca dall'editor ChSciTE come mostrato in Figura 10.
Figura 10: Come aprire lo startup file locale di inizializzazione di Ch per modificarlo.
Per includere la directory C:/Documents and Settings/Administrator/c99
nel path di ricerca di un comando, la seguente riga
_path = stradd(_path, "C:/Documents and Settings/Administrator/c99;");
deve essere aggiunta allo startup file _chrc nella home directory dell'utente
cosi' che il comando hello.c in questa directory possa essere invocato a prescindere dalla corrente
directory di lavoro. Dopo che la directory C:/Documents and Settings/Administrator/c99 e' stata aggiunta
al path di ricerca, _path, bisogna far ripartire la shell Ch.
Dopo di che si sara' in grado di eseguire il programma hello.c in questa directory come mostrato sotto.
C:/Documents and Settings/Administrator> hello.c
Hello, world
In maniera a quanto fatto per _path per i comandi, gli header file in Ch sono ricercati in directory
specificate nella variabile di sistema _ipath.
Ogni path e' delimitato da ";".
Per esempio la riga sotto
_ipath = stradd(_ipath, "C:/Documents and Setting/Administrator/c99;");
aggiunge la directory C:/Documents and Setting/Administrator/c99
ai path di ricerca per gli header file.
Si puo' aggiungere questa directory ai path di ricerca dei function file con la riga
_fpath = stradd(_fpath, "C:/Documents and Setting/Administrator/c99;");
In Unix, i path di ricerca per i comandi per default non contiene
la directory di lavoro corrente.
Per includere la directory di lavoro corrente nei path di ricerca di un comando,
occorre aggiungere la seguente riga
_path = stradd(_path, ".;");
nello startup file .chrc nella home directory dell'utente.
La chiamata alla funzione stradd(_path, ".;") aggiunge la directory attuale, rappresentata da
'.', al path di ricerca _path.
The Second Example with Input.
Questo esempio mostra come eseguire un programma/script C/Ch/C++ che richiede dati in input dall'utente.
Inserisci il codice come mostrato in
Figura 11.
Lo stesso programma C:/Ch/demos/bin/scanf.c puo' essere caricato usando il comando File | Apri.
Durante l'esecuzione, questo codice chiede all'utente "Please input a number" e poi genera l'output
"Your input number is" con il numero che l'utente ha inserito.
Figura 11: Programma con input dall'utente.
Durante l'esecuzione del programma, l'utente inserisce un numero come mostrato
in Figura 12.
L'utente inserice il numero nella finestra sia di input che di output. Entrambi i numeri 56, di input e di output
sono mostrati in
Figura 12.
Figura 12: Esecuzione di un programma con input e output.
Terzo Esempio: Plotting con Ch.
Questo esempio mostra come eseguire un programma/script C/Ch/C++ che crea un grafico usando Ch Professional Edition.
Scrivi il codice come mostrato in Figura 13.
Lo stesso programma C:/Ch/demos/bin/fplotxy.cpp mostrato in Figura 13
puo' essere aperto usando il comando File | Apri.
Quando il programma viene eseguito, crea il grafico mostrato in Figura 14.
La funzione che disegna grafici fplotxy() e' disponibile in Ch Professional Edition.
Il programma mostrato in Figura 13
usa la funzione fplotxy() per disegnare il grafico di func() con 37 punti e con l'asse x di range da 0 a 360.
Figura 13: Programma che usa fplotxy().
Figura 14: Output del grafico.
La funzione plotxy() e' adatta a disegnare dati contenuti in array di C.
Il programma C:/Ch/demos/bin/fplotxy.cpp mostrato in Figura 15 usa array di C
per memorizzare dati e visualizzarli su grafico.
Quando il programma C:/Ch/demos/bin/plotxy.cpp mostrato in Figura 15
viene aperto e eseguito, crea il grafico mostrato in Figura 14.
Figura 15: Programma che usa plotxy().
La funzione grafica fplotxy() puo' essere usata per disegnare funzioni tridimensionali, funzioni a due variabili
come mostrato in Figura 16.
Questo programma disegna la funzione cos(x)sin(y) per valori x nel range da -3 a 3
e y nel range da -4 a 4. Il grafico usa 80 punti entrambi x ed y.
Quando il programma C:/Ch/demos/bin/fplotxyz.cpp come mostrato in Figura 16
viene aperto ed eseguito, crea il grafico mostrato in Figura 17.
Figura 16: Programma che usa fplotxyz().
Figura 17: Output del programma che usa fplotxyz().
Parametri di Comando e Prompting
ChSciTE ha 4 proprieta' $(1) .. $(4) che possono essere usati per eseguire comandi
con parametri modificabili. Per definire i valori dei parametri, usa il comando Visualizza | Parametri
per vedere la finestra di dialogo Parametri che mostra i valori correnti di questi parametri
e permette di definire nuovi valori. La finestra principale rimane attiva mentre questa di dialogo
e' visualizzata, essendo cosi' possibile il suo utilizzo mentre si esegue ripetutamente il comando
con parametri differenti.
Alernativamente, un comando puo' essere eseguito in modo da visualizzare la finestra di dialogo
dei Parametri quando eseguito, facendo partire il comando con '*' che e' altrimenti ignorato.
Se i Parametri sono gia' visibili, allora il '*' viene ignorato.
Quarto Esempio con Parametri di Comando.
Questo esempio mostra come eseguire unprogramma/script in C/Ch/C++ con parametri di comando.
Digita il codice come mostrato in Figura 18.
Questo programma riceve i parametri di comando e li visualizza.
I parametri sono dichiarati nel menu Visualizza | Parametri come mostrato in
Figura 19 e Figura 20.
L'output di esecuzione del programma con parametri di comando e' visualizzato in
Figura 21
Figura 18: Programma che riceve parametri di comando.
Figura 19: Setup dei parametri di comando.
Figura 20: Setup dei parametri di comando.
Figura 21: Esecuzione del programma con parametri di comando.
Buffers
ChSciTE ha 20 buffers ognuno contenente un file.
Il menu Buffers puo' essere usato per spostarsi tra buffer, o selezionando il nome del file o usando
i comandi Precedente (F6) e Successivo (Shift+F6).
Quando tutti i buffer contengono file, allora se si apre un nuovo file si riusa un buffer
, e puo' richiedere che il file venga salvato. In questo caso un avvertimento e' visualizzato
per assicurare che l'utente voglia salvare il file.
Sessioni
Una sessione e' una lista di nomi di file. Si puo' salvare un completo insieme di buffer attualmente aperti
come una sessione, per aprire piu' velocemente in futuro i file.
Le sessioni sono memorizzate come file di puro testo con estensione ".ses".
Usare File | Carica Sessione e File | Salva Sessione per caricare e salvare sessioni.
Si puo' attivare/disattivare l'auto caricamento dell'ultima sessione usando la variabile delle
proprieta' di ChSciTE "save.session".
Per default, la gestione delle sessioni e attiva.
Caricare sessioni precedentemente salvate comporta la chiusura dei buffer attualmente aperti.
Comunque non e' possibile perdere il proprio lavoro, perche' verra' chiesto prima di salvare i buffer non
salvati.
Aprire uno specifico file da comando di linea non tiene conto della vriabile di stato "save.session".
Quando si inizia ChSciTE caricando uno specifico file da comando di linea, l'ultima sessione non viene
recuperata anche se la variabile "save.session" e' settata ad "1".
Questo rende "save.session" sicuro nell'uso - non verranno mai aperti una coppia di file quando si sta
tentando di aprirne solo uno specifico.
Linguaggi riconosciuti da ChSciTE
ChSciTE attualmente e' in grado di riconoscere lo stile di sintassi di questi linguaggi (* specifica
il riconoscimento per folding):
- C/Ch/C++*
- CSS*
- HTML*
- Make
- SQL e PLSQL
- TeX e LaTeX
- XML*
Le impostazioni per il linguaggio sono determinate dall'estensione del file ma possono essere cambiate
selezionando un altro linguaggio dal menu Linguaggio. Questo menu puo' essere modificato con la
proprieta' menu.language.
Cerca e Sostituisci
ChSciTE offre la possibilita' di ricercare parole ed espressioni regolari.
Il carattere di escape backslash nello stile C, che viene usato nella sezione dei parametri della linea di comando,
puo' essere usato per cercare e sostituire caratteri di controllo.
Sostituzioni possono essere eseguite singolarmente, su una corrente selezione o su tutto l'intero file.
Quando sono usate espressioni regolari, nel testo da sostituire possono essere usate
sottoespressioni con tag
Il confronto tra espressioni regolari non corrisponde se una espressione e' interrotta da una fine di riga.
ChSciTE supporta espressioni regolari di base con tag.
Comandi da tastiera
ChSciTE usa i collegamenti a tasto di default definiti in Scintilla, quindi i comandi da tastiera in ChSciTE
nella maggior parte seguono le convenzioni comuni di Windows e GTK+.
Tutti i tasti di spostamento (frecce, pagina su/giu', inizio e fine) permettono di estendere o ridurre la
zona di selezione quando si tiene premuto Shift, e la selezione rettangolare quando si usa Shift e Alt.
Alcuni tasti possono non essere disponibili con qualche tastiera nazionale o perche' sono intercettati
dal sistema come per esempio un window manager in GTK+.
La configurazione user.shortcuts puo' essere usata per assegnare una funzione ad un tasto.
Notare che la funzione di tasto Home e' modificata dalla opzione vc.home.key.
Equivalenze di tastiera tra comandi di menu sono elencati nei menu.
Qualche comando meno comune senza equivalenza in menu sono:
Eseguire programmi C/Ch/C++. | F5 |
Eseguire il parse di programmi C/Ch/C++. | F7 |
Lancio di shell Ch. | Ctrl+F7 |
Aumentare la dimensione del testo. | Ctrl+Keypad+ |
Ridurre la dimensione del testo. | Ctrl+Keypad- |
Riportare il testo a dimensione normale. | Ctrl+Keypad/ |
Ciclare attraverso file recenti. | Ctrl+Tab |
Rientro di un blocco. | Tab |
Rimuovi un rientro. | Shift+Tab |
Cancellazione di una parola dall'inizio. | Ctrl+BackSpace |
Cancellazione di una parola fino alla fine. | Ctrl+Delete |
Cancella dall'inizio della riga. | Ctrl+Shift+BackSpace |
Cancella fino alla fine della riga. | Ctrl+Shift+Delete |
Vai all'inizio del documento. | Ctrl+Home |
Estendi la selezione fino l'inizio del documento. | Ctrl+Shift+Home |
Vai all'inizio della riga visualizzata. | Alt+Home |
Estendi la selezione fino all'inizio della riga visualizzata. | Alt+Shift+Home |
Vai alla fine del documento. | Ctrl+End |
Estendi la selezione fino alla fine del documento. | Ctrl+Shift+End |
Vai alla fine della riga visualizzata. | Alt+End |
Estendi la selezione fino alla fine della riga visualizzata. | Alt+Shift+End |
Espandi o contrai un punto di fold. | Ctrl+Keypad* |
Crea o cancella un segnalibro. | Ctrl+F2 |
Vai al prossimo segnalibro. | F2 |
Seleziona fino al prossimo segnalibro. | Alt+F2 |
Trova selezione. | Ctrl+F3 |
Trova selezione all'indietro. | Ctrl+Shift+F3 |
Scorri verso l'alto. | Ctrl+Up |
Scorri verso il basso. | Ctrl+Down |
Taglia riga. | Ctrl+L |
Copia riga. | Ctrl+Shift+T |
Elimina riga. | Ctrl+Shift+L |
Inverti la riga con la precedente. | Ctrl+T |
Duplica la riga. | Ctrl+D |
Trova condizionali di preprocessore, saltando quelli annidati. | Ctrl+K |
Seleziona fino a corrispondenti condizionali di preprocessore. | Ctrl+Shift+K |
Trova corrispondenti condizionali di preprocessore all'indietro, saltando quelli annidati. | Ctrl+J |
Seleziona fino a corrispondenti condizionali di preprocessore all'indietro. | Ctrl+Shift+J |
Paragrafo precedente. Shift estende la selezione. | Ctrl+[ |
Paragrafo successivo. Shift estende la selelzione. | Ctrl+] |
Parola precedente.Shift estende la selezione. | Ctrl+Left |
Parola successiva. Shift estende la selezione. | Ctrl+Right |
Parte precedente della parola. Shift estende la selezione. | Ctrl+/ |
Parte successiva della parola. Shift estende la selezione. | Ctrl+\ |
Abbreviazioni
Per usare una abbreviazione, digitala usa il comando File | Espandi Abbreviazione o il tasto Ctrl+B
. L'abbreviazione e' sostituita con un'espansione definita nel file Abbreviazioni. Si puo' aprire
il file delle Abbreviazioni con un comando nel menu Opzioni e aggiungere le abbreviazioni.
Ogni riga nei file compare come "abbreviation=expansion".
I nomi delle abbreviazioni possono avere qualsiasi carattere (eccetto forse caratteri di controllo,
sicuramente per CR e LF), inclusi caratteri accentati.
I nomi dei file hanno dei limiti: non possono iniziare con sharp (#) o spazio o tab
(ma possono avere spazi all'interno); e non possono contenere '='.
I nomi delle abbreviazioni sono limitati a 32 caratteri. E' probabilmente sufficiente per
abbreviazioni...
Un espansione puo' contenere caratteri di nuova riga ('\n') e '|'.
Per includere '|', usare '||'.
Qualche semplice esempio e' incluso nel file delle Abbreviazioni distribuito.
Quando viene espanso, il nome non necessita di essere separato dal testo precedente.
Quindi se si definisce '‰' come 'é', si puo' espandere dentro una parola.
Se il nome e' la fine di un altro, solo il piu' breve verra' espanso.
Quindi se si definisce 'ring' e 'gathering', l'ultimo vedra' espansa solo la parte 'ring'.
Folding
ChSciTE supporta il folding per molti linguaggi (vedi la lista dei linguaggi riconosciuti da ChSciTE
per maggiori informazioni).
I punti di folding sono basati su indentazione per C e sul numero di parentesi graffe per altri
linguaggi. Il segno che indica il punto di folding puo' essere cliccato per espandere e contrarre il
fold (ripiegamento). Ctrl+Shift+Click nel margine del fold, espande o contrae tutti i fold di livello
superiore. Ctrl+Click su un punto di fold per aprirlo/chiuderlo e lo stesso vale per i punti di fold
figli.
Shift+Click su un punto di fold per mostrare tutti i figli.
Codifica
ChSciTE determina automaticamente lo schema di codifica usato per file Unicode che iniziano con un
Byte Order Mark (BOM). Le codifiche UTF-8 e UCS-2 sono riconosciute includendo varianti sia Little Endian che
Big Endian di UCS-2.
File UTF-8 sono riconosciuti anche quando contengono un cookie di codifica su una delle prime due
righe. Un cookie di codifica e' simile a "coding: utf-8" ("coding" seguito da ':'
o '=', spazi opzionali, virgolette opzionali, "utf-8") ed e' normalmente contenuto in un commento:
# -*- coding: utf-8 -*-
Per XML c'e' invece una dichiarazione:
<?xml version='1.0' encoding='utf-8'?>
Per avere altri insiemi di codifica, configurare le proprieta' code.page e character.set.
"Translated into Italiano by Cristian Bertocco cbertocco@dei.unipd.it"
|