View Full Version : Programmazione: brain intensivo o ripetitività?
Dicono che è impossibile automatizzare la programmazione, perchè è brain intensive, ma a me sembra il contrario: si stacca il cervello e si ricopiano venti volte i nomi di etichette, scrivendo .text = cazzate varie.
Un programma è al 90% questo e correzione di bug :eek:
lombardp
05-06-2003, 17:00
Originally posted by "gik25"
Dicono che è impossibile automatizzare la programmazione, perchè è brain intensive, ma a me sembra il contrario: si stacca il cervello e si ricopiano venti volte i nomi di etichette, scrivendo .text = cazzate varie.
Un programma è al 90% questo e correzione di bug :eek:
Dipende sostanzialmente da cosa intendi per "programmazione". Tu parli di nomi di etichette, etc, ma implementare le USER-INTERFACE è notoriamente uno dei compiti più noiosi e meno creativi. Se invece si parla di studio di algoritmi, ottimizzazione di calcoli, progetto di una gerarchia di classi e multithreading etc, è tutta un'altra musica.
maxithron
05-06-2003, 17:14
Sono totalmente in linea con lombardp.
Sembra che oggi l'unica "programmazione" che conti sia quella basata su ciò che s'inserisce in una textbox per essere poi restituita da un'altra parte ma, soprattutto, ci si pone con una certa leggerezza nell'approccio.
E' un caso molto comune che chi si affaccia alla programmazione, in generale, lo faccia per creare un'applicazione di tipo database(senza nulla togliere, beninteso!!).
E' anche vero però, che non tutti hanno o hanno avuto la possibilità magari di frequentare l'università oppure avere molto tempo a disposizione per sperimentare,studiare,ecc...vuoi per motivi di lavoro o altro.
bah....sto sproloquiando!!! #include <logorria.h>
:p
maxithron
05-06-2003, 17:19
Inoltre.....text=cazzate_varie.....Visual Basic non è l'unico linguaggio esistente e comunque, limitarsi soltanto a quel tipo di utilizzo è appunto un Brain-Sleeping ;) in quanto si può andare ben oltre proprio con VB
A me è servito tantissimo il libro:
"Tecniche di programmazione avanzata in Visual Basic" di Matthew Curland
in quanto (premesso che non sono un "vero programmatore di VB") ha un approccio completamente diverso da quello che normalmente ha chi comincia la programmazione VB.
boh io studio ing informatica e sono al 4 anno, i programmini di cui parlate voi si fanno i primi due anni...
I programmi grandi sono al 90% ripetitività e ottimizzazzione del nome dei metodi.
maxithron
05-06-2003, 17:30
Beh...allora mettiamola così....
anzichè utilizzare un linguaggio di programmazione, perchè non ne scrivi uno?
E' ovviamente una provocazione!! ;)
maxithron
05-06-2003, 17:40
Originally posted by "gik25"
boh io studio ing informatica e sono al 4 anno, i programmini di cui parlate voi si fanno i primi due anni...
Li hai citati tu in ".text=cazzate varie"
Originally posted by "gik25"
I programmi grandi sono al 90% ripetitività e ottimizzazzione del nome dei metodi.
Cosa intendi per "programmi grandi?"
BRAVI RAGAZZI, DAI E DAI .......
AVANTI SAFORTRAN !!!! [/siz]:D
ma allora siamo una banda, ma allora gli si stanno ritrando !!!! :p :p
Originally posted by "gik25"
Dicono che è impossibile automatizzare la programmazione, perchè è brain intensive, ma a me sembra il contrario: si stacca il cervello e si ricopiano venti volte i nomi di etichette, scrivendo .text = cazzate vari.
Un programma è al 90% questo e correzione di bug :eek:[/size]
Sei bravo gik25 !
come ti hanno già detto dipende dai programmi che fai, se sono interfacce input-output dati (compresi i database) hai ragione, se sono codici di calcolo numerico per applicazioni tecnico-scientifiche no.
ma hai ragione: si può automatizzare e guadagnare in brain anche per le interfacce dati scrivendo codice che scrive codice !
Originally posted by "lombardp"
[/quot]
lombardp i miei complimenti !
vieni subito nella squadra dei Difensori del Sacro Nabla [/siz] ! :D
[quote="maxithron"]Sono totalmente in lina con lombardp.
Sembra che oggi l'unica "programmazione" che conti sia quella basata su ciò che s'inserisce in una textbox per essere poi restituita da un'altra parte ma, soprattutto, ci si pone con una certa leggerezza nell'approccio.
E' un caso molto comune che chi si affaccia alla programmazione, in generale, lo faccia per creare un'applicazione di tipo database(senza nulla togliere, beninteso!!).
E' anche vero però, che non tutti hanno o hanno avuto la possibilità magari di frequentare l'università oppure avere molto tempo a disposizione per sperimentare,studiare,ecc...vuoi per motivi di lavoro o altro.
bah....sto sproloquiando!!! #include <logorria.h>
:p[/size]
mitico maxitron, anche a te la Legion D'Onore dei Difensori del Sacro Nabla[/siz] !
di cui parlate voi si fanno i primi due ann...
I programmi grandi sono al 90% ripetitività e
quei programmini servono a fare le Torri e a tirarle giù, a fare la guerra e a fare la pace, tutto il resto è contorno !
comunque gik25, nonostante tu sia un informatico :D, mi piaci: hai capito l'essenza della storia:
programmazione a procedure strutturate >
programmazione a dati e procedure strutturate >
programmazione ad oggetti
le regole di naming[/siz]
BRAVI, BRAVI
:D :pg:
Originally posted by "maxithron"
Cosa intendi per "programmi grandi?"
maxitron, gik25 ha ragione !
intende "programmi grandi" E NON "grandi programmi"[/siz] :)
maxithron
05-06-2003, 18:11
ho capito ma cosa intendete?
che so' "popolare" (che brutta parola ! ) e formattare una mezza dozzina di Grid e qualche decinaia di ComboBox da Form1.Activate ! :eek: :D :D
Originally posted by "maxithron"
Li hai citati tu in ".text=cazzate varie"
Cosa intendi per "programmi grandi?"
Un programma decente: ci ho dato la tesi e un progetto pretesi. è un programma che gestisce quesiti a scelta multipla. Permette di crearli, farli svolgere, eseguire stats.
Una 50 di classi
Attualmente sto scrivendo un programma di DB. Se non fosse per il copia incolla modifica si finirebbe in un terzo del tempo.
è una stupidaggine!!!
Si potrebbe fare tutto a livello grafico (una specie di wizard)
e se invece dei campi da database passassi ai campi di temperatura e composizione punto-punto di un motore a scoppio ? :cool:
magari ti diverti di più ! :p
Originally posted by "gik25"
Un programma decente: ci ho dato la tesi e un progetto pretesi. è un programma che gestisce quesiti a scelta multipla. Permette di crearli, farli svolgere, eseguire stats.
Chiaro che se fai un programma che gestisce quesiti a scelta multipla dovrai lavorare molto di interfaccia... La valutazione l'hai fatta con la logica Fuzzy ?
Io ti posso parlare dei due programmi più impegnativi che ho fatto per l'università...
Il primo è stato un "compilatore" C...in realtà traduceva in assembler per il TASM un sottoinsieme mooolto ristretto del C...funzioni, interi, I/O, scope locale delle variabili (caratteristica del C++)... Di I/O ti assicuro che ce n'è stato molto poco...
Il secondo è stato un riconoscitore ottico, diciamo la base per un OCR...realizzato con le reti neurali... Aveva un training set modificabile ed una interfaccia per disegnare ciò che doveva riconoscere...in questo modo riconosceva virtualmente qualsiasi cosa gli veniva insegnata... Per quello c'era anche un discreta interfaccia grafica... Anche per questo progetto l'interfaccia ha significato veramente poco sul totale del tempo che ci abbiamo perso... E non era per niente ripetitivo... C'era da fare tutta la parte delle classi delle reti neurali che non era per niente semplice (anche se abbiamo avuto c@@o, mi ricordo che la rete neurale, tolti gli errori di battitura, funzionò subito)...
Insomma...io tutto questo I/O non lo vedo...
o le previsioni del tempo (in fondo che so': quattro equazioncine differenziali al Sacro Nabla, storte come la vita, ma sempre quattro righe rimangono):
sono previsti nembi e cumuli sui database http://forum.hwupgrade.it/faccine/25.gif
:D
ecco se poi non sai un ca@@o, puoi sempre adottare un modello a scatola nera: regole fuzzy e reti neurali !
Originally posted by "a2000"
e se invece dei campi da database passassi ai campi di temperatura e composizione punto-punto di un motore a scoppio ? :cool:
magari ti diverti di più ! :p
Credo che programmerei in MATLAB o Mathemathica. Il C# raramente viene usato per queste cose, significherebbe voler perdere tempo. (O avere necessità particolari)
/\/\@®¢Ø
05-06-2003, 20:36
Originally posted by "gik25"
Dicono che è impossibile automatizzare la programmazione, perchè è brain intensive, ma a me sembra il contrario: si stacca il cervello e si ricopiano venti volte i nomi di etichette, scrivendo .text = cazzate varie.
Un programma è al 90% questo e correzione di bug :eek:
Come gia' detto da altri dipende fortemente dal tipo di applicazione.
Nella mia tesi ad esempio scrivere il codice in se' era la parte piu' semplice. Ben piu' difficile era prima farsi venire le idee, poi dimostrare che erano valide, e risolvere i problemi correlati ( efficienza in tempo e spazio, salvataggio dei dati in modo "astuto" etc. ) e , ovviamente, pescare i bachi :D.
E il tutto in modo abbastanza flessibile visto che spesso bisognava provare algoritmi nuovi (continuando pero' a mantenere la compatibilita' coi dati vecchi).
/\/\@®¢Ø
05-06-2003, 20:37
Originally posted by "a2000"
ecco se poi non sai un ca@@o, puoi sempre adottare un modello a scatola nera: regole fuzzy e reti neurali !
Mi oppongo vostro onore :o :p
Queste cose le usi quando non sai un cavolo dei dati (o poco) ma ne devi sapere delle scatole che vai ad usare :D ;)
Originally posted by "cionci"
Chiaro che se fai un programma che gestisce quesiti a scelta multipla dovrai lavorare molto di interfaccia... La valutazione l'hai fatta con la logica Fuzzy ?
Io ti posso parlare dei due programmi più impegnativi che ho fatto per l'università...
Il primo è stato un "compilatore" C...in realtà traduceva in assembler per il TASM un sottoinsieme mooolto ristretto del C...funzioni, interi, I/O, scope locale delle variabili (caratteristica del C++)... Di I/O ti assicuro che ce n'è stato molto poco...
Il secondo è stato un riconoscitore ottico, diciamo la base per un OCR...realizzato con le reti neurali... Aveva un training set modificabile ed una interfaccia per disegnare ciò che doveva riconoscere...in questo modo riconosceva virtualmente qualsiasi cosa gli veniva insegnata... Per quello c'era anche un discreta interfaccia grafica... Anche per questo progetto l'interfaccia ha significato veramente poco sul totale del tempo che ci abbiamo perso... E non era per niente ripetitivo... C'era da fare tutta la parte delle classi delle reti neurali che non era per niente semplice (anche se abbiamo avuto c@@o, mi ricordo che la rete neurale, tolti gli errori di battitura, funzionò subito)...
Insomma...io tutto questo I/O non lo vedo...
Nemmeno io. Ma i programmi "popolari", intesi nel senso di usati dalla gente, come tutti quelli che abbiamo installati sui nostri computer sono costituiti per il 50-60% da grafica. Rompe veramente le scatole la mancanza di un editor grafico veramenete avanzato che permetta di svolgere le funzioni senza premere copia e incolla!!!
es.
studente.nome=r["nome"]
r["nome"]=studente.nome
Dovrebbe essere possibile copiare e INVERTIRE!!! (anche se l'operazione significasse cast o sintassi diversa)
Originally posted by "gik25"
Credo che programmerei in MATLAB o Mathemathica. Il C# raramente viene usato per queste cose, significherebbe voler perdere tempo. (O avere necessità particolari)
no, vai tranquillo che programmeresti in Fortran ! :)
con Matlab o Mathematica non fai le previsioni del tempo neanche da casa tua alla bottega sottocasa e non prevedi neanche il moto dello sciacquone del cesso (che peraltro volendo determinare l'interfaccia gas-liquido non è tra le cose più semplici) !
:)
Originally posted by "a2000"
no, vai tranquillo che programmeresti in Fortran ! :)
con Matlab o Mathematica non fai le previsioni del tempo neanche da casa tua alla bottega sottocasa e non prevedi neanche il moto dello sciacquone del cesso (che peraltro volendo determinare l'interfaccia gas-liquido non è tra le cose più semplici) !
:)
:) all'univ di Bo molti usano Matlab per controlli automatici, però sono programmi semplici.
Non so di quelli complessi
gik25, acuto, equilibrato, con senso critico ...
bravo, bravo ...
Le do 30 e lode ! :cool:
:)
Originally posted by "gik25"
Dovrebbe essere possibile copiare e INVERTIRE!!! (anche se l'operazione significasse cast o sintassi diversa)
In VC++ con MFC puoi fare il bind di una variabile su, ad esempio, una textbox (può essere sia un intero che una stringa)... Avendone molte puoi lavorare direttamente su queste variabili e quando hai finito richiami UpdateData(); ed ecco che le variabili compaiono sula form...
Per ottenere il valore delle variabile dai vari textbox si usa UpdateData(FALSE);
In pratica:
UpdateData(FALSE);
....
....
si lavora sulel variaibili che hanno il bind con le textbox (e con molti altri controlli)
....
....
UpdateData(TRUE);
maxithron
05-06-2003, 20:47
Secondo me c'è anche un altro punto:
Tutte le automazioni presenti nei linguaggi sono "una comodità" ma non sono "imprescindibili" se si ha tanta voglia di complicare(piacevolmente) le cose.
Si potrebbe scrivere un'applicazione qualsiasi utilizzando soltanto un unico file sorgente, ad esempio, un paio di milioni di righe di codice per sviluppare "sistemanuovo.c" ovviamente a scapito di "logica" "efficienza" e quant'altro.
Non so se sono stato chiaro ma il senso (per me) è questo:
Ogni tipo di linguaggio è puramente un mezzo attraverso il quale far passare il nostro flusso di idee e perchè no, di sogni.
E' come se si trattasse di musica:
Considerate le 12 note, c'è chi da anni utilizza solo e soltanto la stessa sequenza legata alla melodia o ai criteri di armonia standard, e c'è chi ha la fantasia necessaria per
stravolgere detti criteri facendo appunto "arte"!
Originally posted by "maxithron"
Secondo me c'è anche un altro punto:
....
E' come se si trattasse di musica:
Considerate le 12 note, c'è chi da anni utilizza solo e soltanto la stessa sequenza legata alla melodia o ai criteri di armonia standard, e c'è chi ha la fantasia necessaria per
stravolgere detti criteri facendo appunto "arte"!
12 note ???? in scala cromatica ? :o
ah p'cchè tu consideri pure C# e Cbemolle ! :D
tu hai ragione maxithron, ma guarda che per quanto riguarda l'input/output dati, gik25 ha messo il dito su una cosa importante ...
un'intefaccia grafica flessibile e pronta per l'uso è quello che servirebbe e la cosa che gli si avvicina di più è Excel !
poi per evitare le strisciate di copia-incolla due sono le strade:
- o codice che scrive codice
- o avere una funzione f_Variabile("NomeVariabile") per spazzolare !
:)
maxithron
05-06-2003, 21:20
Ma guarda che io non sto affatto sminuendo ciò che gik25 dice.
Soltanto, credo che l'ideale (come tu lo chiami), sarà perchè sto ammattendo
sulla relatività :p, ma è soggettivo all'uso del prodotto finale.
E poi....perchè non cambi il tuo nick in: Excel2000Defenser_a_todos_li_costos? :D
maxithron
05-06-2003, 21:27
Originally posted by "a2000"
12 note ???? in scala cromatica ? :o
ah p'cchè tu consideri pure C# e Cbemolle ! :D
vada per il C#, Cbemolle invece è semplicemente B(sono enarmonici)
poi....il cromatismo, è un nostro limite uditivo perchè si potrebbero tranquillamente utilizzare anche i quarti, ottavi e sedicesimi........di tono ma il nostro orecchio li avvertirebbe come "sgradevoli" :o
/\/\@®¢Ø
05-06-2003, 21:36
Originally posted by "gik25"
Nemmeno io. Ma i programmi "popolari", intesi nel senso di usati dalla gente, come tutti quelli che abbiamo installati sui nostri computer sono costituiti per il 50-60% da grafica. Rompe veramente le scatole la mancanza di un editor grafico veramenete avanzato che permetta di svolgere le funzioni senza premere copia e incolla!!!
es.
studente.nome=r["nome"]
r["nome"]=studente.nome
Dovrebbe essere possibile copiare e INVERTIRE!!! (anche se l'operazione significasse cast o sintassi diversa)
Quel che tu chiami "brainstorming" (:confused: , ma non e' un'altra cosa !?!? ) serve anche a risolvere i problemi di ripetitivita' che ci si trova di fronte usualmente. Nel tuo caso il problema e' che cerchi di associare un qualcosa di definito a tempo di compilazione (il campo nome) con qualcosa di definito a tempo di esecuzione. Per risolverlo senza continuare a copiare potresti ad esempio decidere di passare tutto a tempo di esecuzione, cosicche' puoi iterare sugli elementi delle mappe (con perdita di controllo e un po' di inefficienza), oppure passare a tempo di compilazione con un paio di trucchetti per iterare sui nomi dei campi mediante templates (usando enums invece che i nomi veri e propri per i campi).
Oppure ti prendi un linguaggio dove tu possa costruire istanze di oggetti di tipo 'classe' e quindi pescare i nomi (Java e Obj-C ad esempio, ma non ne sono sicuro).
Oppure come dice a2000 di programmi un generatore di codice.
Tutto dipende se il gioco vale la candela.
maxithron
05-06-2003, 21:42
Originally posted by "/\/\@®¢Ø"
Oppure come dice a2000 di programmi un generatore di codice.
.
Non vale!! :mad: l'ho detto io!!! :D
Originally posted by "a2000"
poi per evitare le strisciate di copia-incolla due sono le strade:
- o codice che scrive codice
- o avere una funzione f_Variabile("NomeVariabile") per spazzolare !
:)
Stupenda anche la seconda!!!!
L'alternativa opossibile è usare un array es
a[0]=(nome) = "ciao"
a[1]=cognome= "duke"
Ma anche l'interfaccia grafica dovrebbe essere in un arry:
textboxes[0] = (nome)
textboxes[1] = (cognome)
MA è UN CASINO!!!
Pensavo...
Quanto tempo ci vorrà a scrivere un codice che inverte le istruzioni?
O che ricopia delle istruzioni cambiando solo una parola
r["nome"]=cazzate varie
r["cognome"]=cazzate varie
sintassi:
r["#"]=! && # = {nome, cognome}?
Sarebbe da fare!!!
Originally posted by "gik25"
Pensavo...
Quanto tempo ci vorrà a scrivere un codice che inverte le istruzioni?
O che ricopia delle istruzioni cambiando solo una parola
r["nome"]=cazzate varie
r["cognome"]=cazzate varie
sintassi:
r["#"]=! && # = {nome, cognome}?
Sarebbe da fare!!!
Si potrebbe chiamare code generator e aggiungergli in seguito altre funzioni. Si potrebbe scrivere una classe in c# o java con decine di operazioni predefinite, poi aggiungere manualmente il resto.
è facilissimo!!!
maxithron
05-06-2003, 21:54
ecco...questo lo chiamerei proprio brainstorming.
Forse non sono stato chiaro, ma il concetto che intendo si basa su questo "modo" di affrontare l'argomento.
/\/\@®¢Ø
06-06-2003, 00:10
Originally posted by "gik25"
Pensavo...
Quanto tempo ci vorrà a scrivere un codice che inverte le istruzioni?
O che ricopia delle istruzioni cambiando solo una parola
r["nome"]=cazzate varie
r["cognome"]=cazzate varie
sintassi:
r["#"]=! && # = {nome, cognome}?
Sarebbe da fare!!!
guarda che la soluzione ti e' gia' stata proposta da altri.
Non perfetta, ma funzionale.
Ad esempio
enum fields { nome , cognome , ... , last_field };
char **name { "nome" , "cognome" , ... };
for ( int i=0 ; i< last_field ; ++i )
{
studente[i] = r[ name[i] ];
r[ name[i] ] = studente[i];
}
Pero' studente invece che essere una struct sara' un array
field studente[last_field];
e quindi dovrai scrivere studente[nome] invece che studente.nome.
Di piu' non si puo' fare (nel senso che non puoi iterare sui campi di una struct)
Di piu' non si puo' fare col C++, non puoi chiedere di iterare sui campi di una struct (a meno di generarti il codice, ma ne vale la pena in questo caso ?)
per maxithron:
ops, perdonami :D ;)
Che gusto :) in una mezzora ho programmato CodeGenerator v. 0.01 ;)
Inserisco questo:
r["#"] = studente.#; {nome,cognome,matricola}
e lui mi da questo:
r["nome"] = studente.nome;
r["cognome"] = studente.cognome;
r["matricola"] = studente.matricola;
Che altro potrebbe fare di facile?
Che ne pensate di darmi una mano a farlo diventare "serio" :cool:
vorrei aggiungere le seguenti funzionalità:
1) text#1 + text#2; {1,2};{2,3}
2) text#++; {min=0, next=x+1, max=10}
3) Extrapolate(
r["nome"] = studente.nome;
r["cognome"] = studente.cognome;
r["matricola"] = studente.matricola;
)
Il cui ris. sarebbe: r["#"] = studente.#; {nome,cognome,matricola}
4) Invert(r["#"] = studente.#) il cui risultato sarebbe studente.# = r["#"]
5) Invert(
r["nome"] = studente.nome;
r["cognome"] = studente.cognome;
r["matricola"] = studente.matricola;
) il cui risultato è ovvio. Altri suggerimenti?
Originally posted by "gik25"
vorrei aggiungere le seguenti funzionalità:
4) Invert(r["#"] = studente.#) il cui risultato sarebbe studente.# = r["#"]
5) Invert(
r["nome"] = studente.nome;
r["cognome"] = studente.cognome;
r["matricola"] = studente.matricola;
) il cui risultato è ovvio. Altri suggerimenti?
Non basterebbe scrivere:
r["#"] = studente.#; {nome, cognome, matricola}
studente.# = r["#"]; {nome, cognome, matricola}
Oppure anche un caso del genere diventa facile da gestire:
r["#"] = a["#"]; {nome, cognome, matricola}
Anzi io cambierei il formato e lo farei così:
#{r["#"] = a["#"]; #=nome, cognome, matricola}#
In pratica ogni volta che trovi un blocco #{ }# sotituisci tutti gli # all'interno di esso con gli elementi presenti al'itnerno di #=...
Qindi potresti gestire anche una cosa del genere:
#{
r["#"] = a["#"];
funzione(r);
r["#"] += studente.#;
stampa(r["#"]);
#=nome, cognome, matricola
}#
Originally posted by "cionci"
Non basterebbe scrivere:
r["#"] = studente.#; {nome, cognome, matricola}
studente.# = r["#"]; {nome, cognome, matricola}
Oppure anche un caso del genere diventa facile da gestire:
r["#"] = a["#"]; {nome, cognome, matricola}
Anzi io cambierei il formato e lo farei così:
#{r["#"] = a["#"]; #=nome, cognome, matricola}#
In pratica ogni volta che trovi un blocco #{ }# sotituisci tutti gli # all'interno di esso con gli elementi presenti al'itnerno di #=...
Qindi potresti gestire anche una cosa del genere:
#{
r["#"] = a["#"];
funzione(r);
r["#"] += studente.#;
stampa(r["#"]);
#=nome, cognome, matricola
}#
Mi dai una mano?
Dai su sto programma tornerà sempre utile in seguito
bravi, bravi :)
però naturalmente, non per fare lo sborone, ma in VB il problema di chiamare e spazzolare con un "nome variabile" un'oggetto in generale (e quindi anche proprietà e procedure) è già risolto dall'oggetto Collection:
Oggetto Collection[b]
Un oggetto Collection è un insieme di elementi ordinati al quale è possibile fare riferimento come una singola unità.
Osservazioni
L'oggetto Collection rappresenta un modo semplice per fare riferimento a un gruppo di elementi correlati come se fossero una singola unità. Gli elementi, o membri, di un insieme sono correlati per il semplice fatto che si trovano nell'insieme. I membri di un insieme non devono necessariamente avere lo stesso tipo di dati.
Un insieme può essere creato in modo analogo agli altri oggetti. Ad esempio:
Dim X As New Collection
Dopo aver creato l'insieme, è possibile aggiungervi membri con il metodo Add e rimuovere membri con il metodo Remove. È possibile estrarre membri specifici dall'insieme con il metodo Item, mentre è possibile eseguire un'iterazione nell'intero insieme con l'istruzione For Each...Next.[/size]
Metodo Add[b]
Aggiunge un membro a un oggetto Collection.
Sintassi
oggetto.Add item, key, before, after
La sintassi del metodo Add è composta dal segnaposto oggetto e dai seguenti argomenti predefiniti:
oggetto Obbligatoria. Espressione oggetto che definisce un oggetto dell'elenco "Si applica a".
item Obbligatoria. Espressione di qualsiasi tipo che specifica il membro da aggiungere all'insieme.
key Facoltativa. Espressione stringa univoca che specifica una stringa chiave, che può essere utilizzata al posto di un indice di posizione per accedere a un membro dell'insieme.
.....[/size]
:cool:
interessante...
però in c#? java? il problema rimane
e quindi vi state costruendo una classe Collection ...
poi c'è anche la strada di codice che scrive codice (in VBA):
Esempio di metodo InsertLines[b]
In questo esempio il metodo InsertLines viene utilizzato per inserire righe di codice nel riquadro del codice specificato.
For i = 1 to 100
Application.VBE.CodePanes(1).CodeModule.InsertLines i, "TextBox" & Cstr(i) & ".Text = aa(" & Cstr(i) & ")"
Next i[/size]
in VBA è bello perchè il codice si può anche sparare addosso, automodificandosi run-time !! :D
VBA: facile come il Basic e potente come l'Assembler ! :cool: :D
Originally posted by "a2000"
VBA: facile come il Basic e potente come l'Assembler ! :cool: :D
Ah sì...scrivici un driver di epriferica in VBA ;)
se la periferica è un'apparecchiatura con un microcontrollore programmabile, perchè no !
:)
Il programma che ho scritto ieri in 30 minuti me ne ha già fatti risparmiare 15:
table.Columns.Add("Nome");
table.Columns.Add("Cognome");
table.Columns.Add("Eta");
table.Columns.Add("Telefono");
table.Columns.Add("Via");
table.Columns.Add("Sesso");
table.Columns.Add("Partita_IVA");
table.Columns.Add("Telefono2");
table.Columns.Add("Tipo_telefono");
table.Columns.Add("Tipo_telefono2");
table.Columns.Add("Tipo_patologia");
table.Columns.Add("Medico_curante");
table.Columns.Add("Telefono_medico");
table.Columns.Add("Prescrizione");
table.Columns.Add("Piano_di_trattamento_settimanale");
table.Columns.Add("Note");
table.Columns.Add("data_ammissione");
table.Columns.Add("data_dimissione");
table.Columns.Add("localita");
table.Columns.Add("cap");
table.Columns.Add("email");
table.Columns.Add("ricerca");
table.Columns.Add("ricerca2");
table.Columns.Add("RepertiDiagnostici");
table.Columns.Add("TrattamentiPassati");
table.Columns.Add("AnamnesiRecente");
table.Columns.Add("AnamnesiRemota");
r= table.NewRow();
Paziente paziente = pazienti.Get(i);
r["Nome"] = paziente.Nome;
r["Cognome"] = paziente.Cognome;
r["Eta"] = paziente.Eta;
r["Telefono"] = paziente.Telefono;
r["Via"] = paziente.Via;
r["Sesso"] = paziente.Sesso;
r["Partita_IVA"] = paziente.Partita_IVA;
r["Telefono2"] = paziente.Telefono2;
r["Tipo_telefono"] = paziente.Tipo_telefono;
r["Tipo_telefono2"] = paziente.Tipo_telefono2;
r["Tipo_patologia"] = paziente.Tipo_patologia;
r["Medico_curante"] = paziente.Medico_curante;
r["Telefono_medico"] = paziente.Telefono_medico;
r["Prescrizione"] = paziente.Prescrizione;
r["Piano_di_trattamento_settimanale"] = paziente.Piano_di_trattamento_settimanale;
r["Note"] = paziente.Note;
r["data_ammissione"] = paziente.data_ammissione;
r["data_dimissione"] = paziente.data_dimissione;
r["localita"] = paziente.localita;
r["cap"] = paziente.cap;
r["email"] = paziente.email;
r["Reperti_diagnosticiConvert"] = paziente.Reperti_diagnostici;
r["TrattamentiPassati"] = paziente.TrattamentiPassati;
r["AnamnesiRecente"] = paziente.AnamnesiRecente;
r["AnamnesiRemota"] = paziente.AnamnesiRemota;
ho scritto solo due riche di codice per generarne 60!!! molto simili :cool:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int fRead(string &buf, const string delim, istream &f)
{
int count = 0, i = 0;
while(i < delim.length())
{
char c = f.get();
if(f.eof())
break;
if(c == delim[i])
++i;
else
{
++count;
if(i>0)
{
buf += delim.substr(0,i);
count += i;
i = 0;
}
buf += c;
}
}
if(i == delim.length())
return count;
return 0;
}
void parseParams(const string p, vector<string> &v)
{
string temp;
for(int i=0; i<p.length(); ++i)
{
if(p[i] == ',')
{
v.push_back(temp);
temp.erase();
}
else if(!isspace(p[i]))
temp += p[i];
}
if(temp.length() > 0)
v.push_back(temp);
}
void replace(string &s, const string rep)
{
int pos = 0;
while(1)
{
pos = s.find('#', pos);
if(pos == string::npos)
break;
s.erase(pos, 1);
s.insert(pos, rep);
pos += rep.length();
}
}
int main(int argc, char *argv[])
{
if(argc != 3)
{
cerr << endl << "Uso: " << argv[0] << " sorgente desetinazione" << endl;
return 1;
}
ifstream in(argv[1]);
if(in.fail())
{
cerr << endl << "File sorgente inesistente" << endl;
return 2;
}
ofstream out(argv[2]);
if(out.fail())
{
cerr << endl << "Impossibile creare il file di destinazione" << endl;
return 3;
}
while(!in.eof())
{
string buffer;
fRead(buffer, "#{", in);
if(buffer.length()) out << buffer;
buffer.erase();
fRead(buffer, "#=", in);
cout << buffer;
if(buffer.length())
{
string params;
fRead(params, "}#", in);
vector<string> v;
parseParams(params, v);
for(vector<string>::iterator it=v.begin(); it<v.end(); ++it)
{
string temp = buffer;
replace(temp, *it);
out << temp;
}
}
}
in.close();
out.close();
return 0;
}
Puoi usarlo ad esempio con un file del genere:
Programma
#{
prova[p.#] = p.#;
prova[p.#] += a[p.#];
a[p.#] = funzione(a[p.#]);#=topolino, pippo, pluto, paperino}#
Un'altro...
#{
prova["#"] = c.#;#=topolino, pippo, pluto, paperino}#
Finito
Originally posted by "cionci"
Puoi usarlo ad esempio con un file del genere:
Programma
#{
prova[p.#] = p.#;
prova[p.#] += a[p.#];
a[p.#] = funzione(a[p.#]);#=topolino, pippo, pluto, paperino}#
Un'altro...
#{
prova["#"] = c.#;#=topolino, pippo, pluto, paperino}#
Finito
Grazie!!!
Questo programma è davvero indispensabile!!!
Hai visto quanto lavoro mi ha risparmiato la mia versione rudimentale?
Con il tuo è ancora meglio :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.