Programmare: iniziamo?

« Older   Newer »
 
  Share  
.
  1. W32.Melo.p
     
    .

    User deleted


    Questo post è riferito soprattutto a coloro i quali ambiscono a diventare programmatori, anche solo a tempo perso, in modo non troppo lungo, nè scocciante! Just for beginners, direbbe qualcuno.


    Bane principianti (in senso buono!) iniziamo!

    La prima cosa che vi serve per iniziare a programmare è.... programmare! Quindi sciegliete un linguaggio di base e fatelo vostro a tentativi!

    Visto che volete iniziare da zero, avrete bisogno di qualche nozione elementare di programma, (anche se dubito che ne avrete dvvero bisogno) ad ogni modo, cominciamo (lo so che l'ho detto tre volte già, ma che volete farci?!): un programma è una serie di istruzioni, codificate o non, che vengono eseguite direttamente dal pc, senza che voi dobbiate fare altro che rispondere alle domande e le richieste del programma stesso. Che differenza c'è tra un programma non codificato ed uno codificato, come ho accennato prima? In realtà sui pc non esiste nulla di non codificato, perchè se non è il programma stesso ad esserlo, allora ci pensa il sistema operativo a farlo.... l'unica differenza è nell'uso di un programma particolare, il compilatore, il quale "traduce" letteralmente le istruzioni in linguaggio macchina, che nelle vostre postazioni 386 è l'ASSEMBLER! Quest'ultimo è il linguaggio più stabile, più completo e totale, e più assurdamente complicato oggi esistente! Non so quanti di voi l'avrnno mai sentito nominanare, perchè ormi è nel disuso più totale! Viene usato ad oggi solo (e non ne sono tanto sicuro!) dalle grandi case di hardware per fare i driver delle loro periferiche (insomma quei .sys di 100 kb massimo!).

    Ora vi faccio una domanda un pò strana, alla quale non dovete rispondere perchè è solo per introdurre ciò che sto per dire, comunque:

    Avete mai craccato un programma? Non dico scaricare da internet (o da dove li prendete) il file modificato o la patch, intendo proprio aprire l'eseguibile col dasm (non vi dico cos'è sennò facciamo mattino!), decompilare, frugare in mezzo al codice, etc... per poi aprire con un editor esadecimale il tutto e modificare un 45 quì ed un 90 là?

    Tutto quello che vedete aprendo con un editor esadecimale un programma compilato (che so,..... blocco note!) non è altro che la sfilza di istruzioni, scritte in assembler, che permettono l'esecuzione del programma. Ci si rende conto che a scrivere in quel modo (perchè non dovete guarndare la parte a testo, ma quella coi numeri!!!!) è una follia, soprattutto se pensate di dover inserire immagini e suoni e puntatori etc...

    No, non si inizia con l'assembler, anche se è un linguaggio molto stimolante!

    Invece si inizia dal batch! Non sapete che è il batch? Però ne avete sicuramente visto qualcuno di file batch, pensteci: "File Batch MS-DOS". Niente? Meglio!

    Il batch è .... non è un linguaggio vero e proprio, è più..... una serie di istruzioni, uno script, che un programma vero, anche perchè ha bisogno dell'interprete dei comandi, .... è come una pagin web, come questa che vedete ora: se la aprite col blocco note vedrete tag, script, nessuna immagine, e tanta roba in più. Senza Internet Explorer, o un browser qualsiasi resterebbe uno script, come un file batch senza windows o il dos.

    Detto questo parliamo di batch. Aprite blocco note e copiate ed incollate questo testo

    CODICE

    @echo off
    cls
    echo ciao!
    pause
    exit


    Cosa vedi
    CODICE

    ciao!
    premere un tasto per continuare...



    ora salvate come prova.bat, dove volete, ma con questo nome o comunque aggiungete .bat alla fine.

    Apritelo.....


    che ne dite? Il programma saluta e chiede di premere un tasto per continuare (uscire).

    Nel batch non ci sono regole fisse, non si inizia con qualcosa in particolare a differenza di ogni altro linguaggio, e non si finisce neanche con qualcosa in particolare (io ho ciuso il programma col comando "exit" che vedete alla fine, ma avrei potuto ometterlo, perchè tanto il file è finito!). Su ogni riga viene posto uno o più (vedremo in seguito) comandi, ogni riga non deve terminare con un carattere o codice particolare, in quanto la fine del comando è definita dall'andata a capo.

    Analizziamo insieme cosa c'è scritto in quel semplice esempio:

    @ è un operatore, o prefisso, il quale può essere attribuito a qualunque comando. Esso permette di non visualizzare, per quel comando, il "prompt" dell'interprete dei comandi (prova ad eliminare tutta la prima riga per vedere il risultato tongue.gif)

    echo off è un comando particolare, il quale dice all'interprete di non visualizzare più in seguito il prompt durante l'esecuzione di questo programma. In genere è preceduto da @ per non visualizzare il prompt neanche su di esso.

    cls è l'abbreviato di "clear screen" ovvero pulisci schermata. Cancella tutto quello che c'è scritto nella finestra e porta il cursore in 0,0 (=alto sinistra).

    echo ciao! invece visualizza su una nuova riga il testo che viene dopo echo, ovvero il testo "ciao!".

    pause interrompe l'esecuzione del programma e in attesa che venga premuto un tasto qualsiasi visulizza il messaggio "premere un tasto qualsiasi...".

    exit come accennato prima è un comando che forza l'uscita immediata del programma, anche se ci sono altri comandi di seguito.

    Detto ciò, se vi interessa questo "linguaggio", per così dire, vi serve soltanto il blocco note e le guide, quella mia al dos, e quella del dos 6.22 ufficiale di Microsoft, scaricabili quì:

    [URL=Guida Personale al DOS]https://www.forumcommunity.net/?t=1971417[/URL]
    [URL= Guida in italino di MS-DOS 6.22 + Compilatore QBasic (necessario)]https://www.forumcommunity.net/?t=1971413[/URL]

    Vi consiglio caldamente di partire da questo, anche perchè è quello più semplice, e su cui sono più preparato.

    Batch
    Difficoltà: 3/10
    Potenzialità: 8/10

    P.S.
    Per i vosti file batch se posso vorrei consigliarvi un editor di testo straordinrio e incredibilmente versatile. Si chiama metapad, è gratuito, personalizzabile, minuscolo, senza pretese e supporta plugins per la lingua, scaricabili dl sito: http://liquidninja.com/metapad/
    Io stesso vi sto scrivendo con questo!

    Dopo che abbiamo provato il batch passiamo al pascal: Il turbo pascal è uno dei linguaggi più diffuso nelle scuole superiori per 2 motivi:
    1) I tre sono pascal, c e c++, e gli ultimi 2 sono troppo complicati per occupare ore di lezione.
    2) Il pascal garantisce un ambiente stabile, ed integra molte funzioni e operazioni matematiche.

    Per iniziare in questo linguaggio è necessario (ed obbligatorio!) disporre del compilatore e dell'editor del Turbo Pascal (minima versione: 6! se mi venite a chiedere cose sul tp5 vi banno!!! INTESI?)
    Per ogni evenienza ecco la copia più aggiornata del compilatore, insieme a due editor, tutte le librerie ufficiali, alcune non ufficali, e due guide molto esaustive, una in inglese (NG) e l'altra in italiano, fornita da uno dei capisaldi della programmazione italiana, Giorgio Ober (http://www.giobe2000.it/).

    [URL=Turbo Pascal 7.0]https://www.forumcommunity.net/?t=1894068[/URL]

    Nel pascal vigono regole ferree: un programma inizia con "program nome_prog;", poi viene il link alle librerie esterne ("uses crt wincrt math etc...;") poi la dichiarazione delle variabili e dei loro tipi ("var f:text;m,n:integer; etc...wink.gif. Il programma vero e proprio inizia con "begin" e finisce con "end.". Ogni riga termina col ; tranne che stringhe particolari, tra cui il begin ("inizio") di cui prima.

    Il pascal è molto diverso dal batch, e perchiò è necessario allenamento e buona conoscenza delle principali sintassi. A titolo del tutto esemplare metto quì di seguito una serie di programmi in pascal, di varia utilità ed interesse, di cui non spiego tutti i comandi, perchè ci vorrebbe troppo tempo, io scrivo offline e ora ho voglia di giocare a gta, quindi se avete domande postate di seguito (quotando se necessario!)

    CODICE

    program veglia;
    uses crt, dos;
    var h, m, s, hund : Word;
    begin
     repeat
     GetTime(h,m,s,hund);
     delay(500);
     clrscr;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     writeln;
     Writeln('                                    ',h,':',m,':',s);
     until keypressed;
    end.


    CODICE

    program pigreco;
    uses crt,windos;
    var i,g:longint;a,b,c,p,h:real;q,t:string;ore1,min1,sec1,cent1,ore,min,sec,cent:word;

    procedure calcolo;
      begin
      (*utilizzo di un passo di 0,000001 da 0 a 0,55*)
      a:=0;
      b:=0;
      c:=0;
      h:=0.000001;
      for i:=0 to 550000 do
          a:=a + sqrt(1-(i*h)*(i*h));
      p:=h*a;
      (*utilizzo di un passo di 0,0000001 da 0,5501 a 0,8*)
      h:=0.0000001;
      for i:=5500001 to 8000000 do
          b:=b + sqrt(1-(i*h)*(i*h));
      p:=p+h*b;
      (*utilizzo di un passo di 0,00000001 da 0,80001 a 1*)
      h:=0.00000001;
      for i:=80000001 to 100000000 do
          c:=c + sqrt(1-(i*h)*(i*h));
      p:=p+h*c;
      p:=4*p;
      end;

    begin
        clrscr;
        writeln('      25 aprile 2005                           Carmelo Pellegrino VD');
        writeln;
        Writeln('Questo Programma permette di calcolare il valore numerico del pi greco.');
        writeln;
        writeln('Nonostante il programma utilizzi un metodo iterativo di estrema precisione');
        writeln('si verificano approssimazioni grossolane da parte del programma stesso.');
        writeln('Pertanto si registra sperimentalmente un''errore dell''ordine di 10^-5.');
        writeln('Si consiglia di attendere con pazienza l''uscita del programma.');
        writeln;
        writeln('Premere INVIO per continuare.');
        readln;
        GetTime(ore,min,sec,cent);
        calcolo;
        GetTime(ore1,min1,sec1,cent1);
        writeln;
        writeln('La procedura Š terminata.');
        (*elimino il suffisso 'E+00' alla fine del numero*)
        str(p,q);
        delete(q,pos('E+00',q),4);
        writeln('p =',q);
        g:=(360000*(ore1-ore)+6000*(min1-min)+100*(sec1-sec)+cent1-cent);
        str(g,t);
        insert('.',t,Length(t)-1);
        t:=t+'sec';
        writeln('Tempo di elaborazione: ',t);
        readln;
    end.


    CODICE

    program potenza;
    uses crt;
    var a, b, c, d:longint;
    procedure calcola;
    begin
    clrscr;
    write('Avvertenze: Si consiglia vivamente di non inserire numeri troppo grandi,');
    writeln('al fine di evitare di ottenere delle fesserie come risultato.');
    writeln('Pertanto evitare di scrivere 10^10, perch‚ Š inutile. Grazie.');
    writeln;
    writeln('Inserire la base');
    writeln;readln(a);
    clrscr;
    write('Base: ',a);
    writeln;
    writeln;
    writeln('Inserire l''esponente:');
    writeln;readln(b);
    clrscr;
    write('Calcolo di ',a,' elevato a ',b,' in corso...');
    c:=1;
    for d:=1 to b do
    c:=a*c;
    clrscr;
    writeln;
    writeln(' Risultato: ',a,'^',b,' = ',c);
    readln;
    end;
    begin
    calcola
    end.


    CODICE

    program tabellina;
    uses crt;
    var n,i:integer;
    begin
    clrscr;
    write ( 'introduci numero di cui calcolare la tabellina:' );
    writeln; readln (n);
    clrscr;
    for i:=1 to 10 do
    writeln (n ,'x',i,'=',n*i);
    readln;
    end.


    In effetti sono sparpagliati, e non in ordine di difficoltà, ma non c'è problema, sappiate che seguono la relazione lineare secondo la quale il più corto è quello più facile, e il più lungo è il più complesso. Fate copia e incolla nel blocco note come prima, ma ora salvate nome.pas ed aprite col programma TURBO.EXE che trovate nella cartella BIN dell'archivio decompresso.

    Turbo Pascal
    Difficoltà: 7
    Potenzialità: 9

    Sperando che abbiate già iniziato a cimentcrvi nella programmazione partendo da questi due, approdiamo sulle assolate sponde dell'isola a forma di "u", o è una "n",..... ah! si, è una "c". Parliamo di C.

    Il C è un linguaggio molto diffuso, grazie anche ad aggiornamenti, rivisitazioni, e sistemazioni quà e là è arrivato fino a noi. Il primo pensiero a cui uno si rivolge è in genere questo: prima c'era il dos, quindi il batch, poi la borland ha fatto il turbo pascal (che non è morto come il batch, abbandonato ufficialmente nel '97, ma vive ancora nel moderno delpi!) poi hanno inventato il c e poi il c++. Nulla di ciò è vero (tranne quello che c'è tra parentesi!). Il C è un linguaggio preistorico, in termini di informtica, che nasce a metà degli anni sessanta per sostituire il troppo complicato assembler! Le seconde versioni dell'antico UNIX sono scritte tutte in C, e così quasi tutti i moderni sistemi operativi (forse, di sicuro dal dos 1 a win 3.1!). Dopo il C venne in mente di farne un'altro che lo implementasse e migliorasse, che fu chiamato "D" (che fantasia eh?), ma di cui si sono perse le tracce. Il batch nasce contemporaneamente al DOS di Bill Cancelli, quindi si parla già degli anni ottanta! Il pascal è nato sul dos, ma non è così vecchio.....

    Dopo questa breve (...e penosa) analisi storica parliamo del linguaggio in se.

    Nel c, come nel pascal vigono regole ferree, molto simili a quelle del pascal, ma non uguali (che scoperta!).
    Ogni riga del corpo del programma termina col ;. Si inizia a scivere con lo scrivere:

    CODICE

           main()
      {
              corpo-prog


    Ad ogni parentei graffa aperta ne corrisponde una chiusa successivamente, un pò come nel pascal, ad ogni begin corrisponde il suo end;. Le variabili vanno dichiarate prima di inserire il corpo del programma ed i tipi sono pressocchè identici, tranne che per il tipo boolean del pascal che in c non esiste. Inoltre ogni variabile di un tipo va raggruppata come in esempio dopo il suo tipo, ed ogni variabile va seprata dall'altra dalla vigola.

    Es.:
    CODICE

    short number,sum;
    int bignumber,bigsum;
    char letter;
    main()
    {
    ...
    }


    Nell'esempio vediamo "short number,sum;" che significa "variabili numeriche intere "number" e "sum"" (il corrispondente in pascal è number,sum:integer;), "int bignumber,bigsum;" significa "variabili intere grandi "bignumber" e "bigsum"" (il corrispondente in pascal: bignumber,bigsum:longint;), "char letter;" significa "variabile stringa singolo carattere "letter"" (corrispondente al pascal: letter:of char;).
    Poi main(), il corpo del programma e la fine.

    Siccome anche io sto studiando il c adesso non potrò rispondere alle vostre domande a riguardo.... almeno finchè non riscarico il dev e finisco di leggere la guida.... a proposito:

    Un buon compilatore gratuto per il c si chiama DEVC++, è grande, nel senso che sono una ventina di mega.
    Ecco la guida che GTOnizuka mi ha passato l'altro giorno via msn: https://www.forumcommunity.net/?t=1971420

    Bene (forse)!

    Spero di non essere stato noioso.

    Rispondete numerosi, perché ne vale la pena!

    Melo,
    stanco

    Ciaoooo

    Edited by W32.Melo.p - 24/9/2005, 17:26
     
    .
  2. ostromos
     
    .

    User deleted


    Ma per iniziare a programmare non è meglio utilizzare Liberty Basic?
     
    .
  3. Salvus
     
    .

    User deleted


    Credo invece sarebbe più istruttivo iniziare a spiegare subito il Java. Io una volta imparato quello ho imparato subito il c# e credo che non avrei problemi nemmeno con c++. Trovo molto più didattico il java rispetto ad altri linguaggi.
     
    .
  4. black Lillo
     
    .

    User deleted


    http://j-horror.forumcommunity.net/

    Ti piacciono i film horror made in japan? adori la cultura giapponese?
    Visitaci in questo forum! J-Horror Mania non parla solo di horror giapponese, ma anche di cinema Coreano, Thailandese, Cinese e Asiatico in generale!

    Ti aspettiamo! :lol: :lol: :lol:
     
    .
  5. Ricki MS-DOS PY
     
    .

    User deleted


    CITAZIONE (black Lillo @ 31/7/2009, 16:33)
    http://j-horror.forumcommunity.net/

    Ti piacciono i film horror made in japan? adori la cultura giapponese?
    Visitaci in questo forum! J-Horror Mania non parla solo di horror giapponese, ma anche di cinema Coreano, Thailandese, Cinese e Asiatico in generale!

    Ti aspettiamo! :lol: :lol: :lol:

    ma i moderatori dove sono?? :blink:

    comunque secondo me il linguaggio per iniziare a programmare è il Python: :D

    -semplice
    -multipiattaforma
    -flessibile
     
    .
  6. Dark Mind
     
    .

    User deleted


    questo è spam...non è nobile pubblicizzare il proprio forum(fosse questo granchè ma si parla di film horror e pure giapponesi) su un forum morente di un grado di informazione molto superiore al tuo..vedrò di segnalarti...per colpa di questo simpaticone rimetto il link:
    http://lascienza.forumcommunity.net/

    questo forum è molto più organizzato e anche se più sotto in classifica ha già molte discussioni più di questo che aspettano nuovi appassionati.
     
    .
5 replies since 24/9/2005, 16:24   1219 views
  Share  
.