Benaming functie etc

algemene C code
Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Benaming functie etc

Berichtdoor spaansebrabander » 18 Jan 2017, 01:34

Ik vind de benamingen mbt functies een beetje verwarrend, als je ook Engelse literstuur erbij neemt.

Stel je roept ergens een functie aan in de loop()

int DitIsFunctie( int a, int b, int c) //int is het data type, inta etc zijn de parameters maar hoe noemt men deze regel?

Dan staat ergens de echte functie

int DitIsFunctie(inta, intb, intc){ // hoe noemt men nu deze regel?
return a+b+c; // Is dit de functie body?
}
Gaarne de namen in het Engels en in het Nederlands

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Benaming functie etc

Berichtdoor Koepel » 18 Jan 2017, 02:20

Soms staat ergens bovenaan in het bestand de "function prototyping". Ik weet niet of daar een Nederlandse term voor is, iedereen gebruikt "function prototyping".
https://en.wikipedia.org/wiki/Function_prototype
Dan weet de compiler alvast hoe die functie er uit ziet met de parameters en return type.
Soms wordt dat de "function declaration" genoemd, of "declaring the prototype of a function". Lekker verwarrend. Ik gebruik altijd de term "function prototyping".

Code: Alles selecteren
#include <Wire.h>
#include <Ethernet.h>

int DitIsFunctie( int a, int b, int c);   // function prototyping

unsigned long previousMillis;

void setup()
{
  ...


In de Arduino is er een extra laag, waarbij door alle code heen wordt gegaan om de functies alvast te verzamelen en de function prototypes maakt. Je hoeft dus zelf niet de "function prototyping" te doen.

Dat andere is gewoon de echte functie zelf. Als jij de code binnen een functie de "body" wilt noemen, dan is dat best. Dan heet het kopje (de eerste regel) de "header". Ik denk daar nooit bij na ;) Na even zoeken blijken "body" en "header" gangbaar te zijn. Een nederlandse naam wordt zover ik weet niet gebruikt.

Dus in de Arduino IDE zet je een functie ergens neer, en dan is die functie overal bekend :)

Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Re: Benaming functie etc

Berichtdoor spaansebrabander » 18 Jan 2017, 11:55

Functie signature en functie prototypes

Het functie data type, de functienaam en de functie parameter lijst worden samen de functie signature genoemd.

int IsLeapYear(int year) // Dit is de functie signature

Als je een ; toevoegt :

int IsLeapYear(int year); // Dan heet dit het Functie prototype... zie ; op het einde
Ik vind dat vreemd, door er een ; achter te zetten krijgt het ding een andere neem

Dit heb ik uit een Engels boek vertaald.
Beginning C for Arduino. Ik vind dat boek erg rommelig geschreven en soms heel langdradig

Wat ik eigenlijk wil weten is. De functie staat ergens buiten de loop, de aanroep van de functie staat in de loop of in de de setup. Hoe heet nou de aanroep van de functie en hoe noem je de functie zelf

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Benaming functie etc

Berichtdoor Koepel » 18 Jan 2017, 12:38

Eerlijk gezegd heb ik van "signature" nog niet eerder gehoort.
Een function prototyping is altijd met een ; er achter en function prototyping is in de Arduino IDE niet nodig.

De aanroep van een functie is de aanroep, of in het engels "calling a function". Daar is verder geen speciale naam voor.

De functie zelf, die mag je van mij "de functie zelf" noemen of functie "definitie". Ik geef zelfs de voorkeur aan "de functie zelf", want de termen "definitie" en "declaratie" zijn niet altijd duidelijk. In het Engels worden "definition" en "declaration" net zo goed verwarrend gebruikt.

Je bent misschien teveel met het alleronderste van de taal 'c' bezig.
In de Arduino IDE kun je de functie zelf gewoon ergens neerzetten, en die kun je aanroepen. Dat is alles.

Belangrijker zijn de operaties en statements.
Daarna kun je eens globaal c++ objecten (class) bekijken, maar dat hoef je niet te begrijpen om een sketch te maken.
Ken je de meeste dingen van de linkerkolom van deze pagina ? https://www.arduino.cc/en/Reference/HomePage.

Je zou een sketch kunnen maken met een paar functies, en die aan ons laten zien. Voeg een paar lokale variabelen toe, en bereken iets en geef dat terug als return waarde.

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Benaming functie etc

Berichtdoor shooter » 18 Jan 2017, 14:18

https://www.arduino.cc/en/Reference/FunctionDeclaration
wel in het engels sorry
maar daar zie je redelijk hoe het in elkaar zit.
in het engels call je een functie, in nederlands aanroep is prima.
Niet zo strak zien, het is een taal met veel vrijheden, net zoals nederlands, waar ook vele manieren zijn om iets te beschrijven.
paul deelen
shooter@home.nl

Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Re: Benaming functie etc

Berichtdoor spaansebrabander » 19 Jan 2017, 09:22

Dat er zoveel vrijheid is, is misschien ook wel het probleem. Als je iets op internet opzoekt, krijg je x verhalen, die allen net weer iets anders zijn. Vanmorgen kwam ik de volgende zin weer tegen:
Een programma kan uit meerdere functies bestaan, maar één van die functies moet de naam main hebben.
Wat houdt dat nu weer in?
Ik ben begonnen met proberen sketches te maken, maar dan loop je vast omdat je de taal onvoldoende kent. Duik je in de taal, dan gaat het zo diep dat je gauw door de bomen het bos niet meer ziet. Het is helemaal niet zo simpel allemaal als men wil doen geloven.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Benaming functie etc

Berichtdoor nicoverduin » 19 Jan 2017, 09:32

Alle c/c++ programmas beginnen main(). Main bij de arduino roept setup() eenmalig aan en loop() contine. Dat staat in de co libraries van de arduino. Dus et klopt nog steeds en is al iets van 40 jaar zo
Maar als jij de C taal wil leren moet je beginnen met "The C programming language" van Kerningham & Richie. Gewoon als pdf te vinden op het web. Gratis te downloaden. Daar ligt de basis.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Re: Benaming functie etc

Berichtdoor spaansebrabander » 20 Jan 2017, 04:10

Heb Beginning C for Arduino van Jack Purdum, Ph.D., maar dat is enerzijds heel langdradig en anderzijds springt het van de hak op de tak. Ik ga dat andere boek opzoeken

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Benaming functie etc

Berichtdoor Koepel » 20 Jan 2017, 11:16

Dat boek staat op internet. Ik kwam inderdaad de dingen tegen waar je moeite mee had.
Het boek is stapsgewijs een goede basis, maar wel in wat oudere stijl.

Mijn voorkeur is om alles ruim en open uit te schrijven. Ik zal bijvoorbeeld niet gebruiken: y = x + .5; Ik schrijf dat zo normaal mogelijk op, dus: y = x + 0.5;

De "function signature" kwam ik ook tegen, ik vind het maar een vreemde term.

Het onderdeel van de pointers is wel belangrijk in de 'c' taal, maar in de Arduino omgeving heb je dat niet vaak nodig. In het boek wordt "by reference" maar heel kort genoemd, terwijl de Arduino libraries steeds meer "by reference" doen.

Wanneer een functie een parameter heeft als "pointer" of "by reference", dan weet de functie de geheugenlocatie van die variabele en kan de variabele zelf wijzigen. Met een "pointer" wordt precies bepaald wat de compiler moet doen en "by reference" heeft de compiler meer vrijheden om er wat moois van te maken.

Een voorbeeld van een pointer:
Code: Alles selecteren
  // de aanroep
  int i = 3;
  myFunction( &i);
  // nu is i 34 geworden

...

// de functie zelf
void myFunction( int *p)
{
  *p = 34;
}



Een voorbeeld met "by reference":
Code: Alles selecteren
  // de aanroep
  int i = 3;
  myFunction( i);
  // nu is i 34 geworden

...

// de functie zelf
void myFunction( int & value)
{
  value = 34;
}


Je kunt sketches gaan proberen, en iedere als je iets ziet dat je niet begrijpt dan er over gaan lezen, en dan zelf wat proberen en kijken wat het resultaat is.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Benaming functie etc

Berichtdoor nicoverduin » 20 Jan 2017, 12:17

Koepel schreef:
Het onderdeel van de pointers is wel belangrijk in de 'c' taal, maar in de Arduino omgeving heb je dat niet vaak nodig. In het boek wordt "by reference" maar heel kort genoemd, terwijl de Arduino libraries steeds meer "by reference" doen.

Wanneer een functie een parameter heeft als "pointer" of "by reference", dan weet de functie de geheugenlocatie van die variabele en kan de variabele zelf wijzigen. Met een "pointer" wordt precies bepaald wat de compiler moet doen en "by reference" heeft de compiler meer vrijheden om er wat moois van te maken.


Dat is toch een C++ toevoeging?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten