Loading...
Pages: 1 [2]   Go Down
Author Topic: Funzioni in C  (Read 207 times)
0 Members and 2 Guests are viewing this topic.
Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sono procedure in VB, se hai usato i vecchi Basic anni '80 le chiamavi subroutine anche te   smiley-wink
E si invocavano con un bel GOSUB, ricordi?  smiley-razz

Ma comunque le si chiamino, sono porzioni di codice che eseguono un determinato compito e che possono essere invocate con un nome, con o senza parametri, con o senza valori indietro. Il succo non cambia.
Logged


Offline Offline
Full Member
***
Karma: 2
Posts: 109
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Che significa inline ed overhead ? 

prendi la cosa con le pinze, ma credo che "inline" dice al compilatore di inserire in quel punto le istruzioni che sono all'interno della funzione richiamata. Invece senza la parola "inline" quando si arriva alla chiamata della funzione succede quello che ha detto Leo, portando un overhead. Questo è quello che ho capito, ma potrebbe essere completamente sbagliato  smiley-confuse
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 110
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@andrea86: hai capito bene.
Per la cronaca: inline sostituisce i #define del C nel caso delle funzioni permettendo al compilatore di effettuare tutti i controlli necessari ed evitando bug legati alle precedenze delle varie operazioni.

@leo72: io chiamo subroutine/routine le procedure in assembly  smiley .
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo72: io chiamo subroutine/routine le procedure in assembly  smiley .
Esattamente!  smiley-wink
Programmavo anch'io in assembly.... tanti anni fa  smiley-sweat
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Inoltre divido a piu non posso le funzioni in tab diverse e mi risulta tutto leggibile e ordinato invece di lunghissimi codici su tab singola.

Questo mi sembra molto interessante.
Solo che non ho capito come si fa  smiley-confuse
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Premi "tab"....  smiley-wink

L'IDE di suo indenta già secondo il valore preimpostato (2 spazi, che puoi cambiare editando a mano il file delle preferenze dell'IDE).
Se ci fai caso, se scrivi una { e premi invio, poi l'IDE nella riga successiva si sposta del numero di spazi prefissato. Anche dopo un } fa così. Se metti un commento a fine riga invece non lo fa, lo devi fare tutto a mano.
Io personalmente uso 4 spazi, rende il sorgente più.. bello.  smiley-wink

Inoltre l'indentazione rende il codice più leggibile.
Esempio:

Code:
void loop() {
delay(500);
byte temp = digitalRead(10);
if (temp == LOW) {
funzione1();
} else {
funzione2();
}
}

Eccolo indentato per benino:
Code:
void loop() {
    delay(500);
    byte temp = digitalRead(10);
    if (temp == LOW) {
        funzione1();
    } else {
        funzione2();
    }
}
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non avevo capito che ti stessi riferendo all'indentazione.
Sì quella la uso da quando programmavo in basic sull'apple II (rigorosamente compatibile  smiley-wink )
Pensavo ti riferissi alla possibilità di gestire finestre dello stesso programma con le procedure messe in aree diverse. Una cosa che evitasse lo scorrimento in verticale dei listati troppo lunghi.
Grazie per la precisazione smiley
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No, aspetta. Mi son confuso io  smiley-sweat smiley-sweat
Ho riletto il messaggio di Testato e lui parlava di "tab". Lì per lì credevo si riferisse alla tabulazione. Ma ora riguardando ciò che ha scritto, si riferisce al fatto di dividere il sorgente in più "linguette", dette appunto "tab". Ogni tab viene salvato in un file differente. Per usare questa funzione basta cliccare sulla frecciolina posta in alto a destra sopra all'area di inserimento del testo e scegliere "nuovo file". Ogni tab può contenere del codice. In fase di compilazione, l'IDE riunisce tutto in un unico file e poi lo passa al compilatore.
Logged


ivrea (to)
Offline Offline
God Member
*****
Karma: 10
Posts: 647
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sono procedure in VB, se hai usato i vecchi Basic anni '80 le chiamavi subroutine anche te   smiley-wink
E si invocavano con un bel GOSUB, ricordi?  smiley-razz
Ricordo meglio il primo linguaggio (strutturato) studiato, il Pascal
Code:
Procedure (<parametri>:<tipo>;<parametri>:<tipo>;...);
var ...
begin
end;
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ora che mi ricordo la definizione di "procedure" c'era anche in COBOL  smiley-wink
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In basic usavo il "goto" scrivendo programmi illeggibili. smiley-red

Comunque questa discussione mi è stata utilissima e vi ringrazio molto per le informazioni ricevute.

Ora ho capito anche l'uso delle finestre interne dell'editor (non sapevo che il compilatore considerasse tutto come un unico programma!). La possibilità di compartimentare il programma è veramente molto comoda. Soprattutto quando sono presenti più procedure e il codice diventa troppo lungo da gestire in una sola finestra.

Siete così bravi che secondo me potreste fare un angolino del forum intitolato "forse non sapevi che..." Dove mettere queste ed altre informazione che magari per voi sono banali, ma che per un utente inesperto possono essere utilissime.
Logged

Pages: 1 [2]   Go Up
Print
 
Jump to: