Eine konstante Variable (im folgenden auch „Konstante“ genannt) kann auch einen Wert bezeichnen, der bei einem Funktionsaufruf als Argument angegeben wurde.
In den runden Klammern einer Funktionsdefinition kann eine Parameterdeklaration stehen, die einer Konstantendefinition ohne Angabe des Wertes ähnelt. Der Wert der Konstante wird nämlich durch den Wert des Arguments beim Aufruf der Funktion angegeben.
void ausgeben( int const n ) { ::std::cout << n << "\n"s; }
int main(){ ausgeben( 7 ); }
std::cout
7
Die Übergabe eines Wertes an einen Konstantenparameter beim Funktionsaufruf ist eine Form der sogenannten Kopier-Initialisierung genannt und entspricht der Definition einer Konstante mit 〈type-specifier〉 »const« 〈declarator〉 "=" 〈assignment-expression〉, im Falle des Programms »constparameter.cpp« also wie bei »int const n = 7«.
void ausgeben( int const n ){ ::std::cout << n << "\n"s; }
int main(){ ausgeben( 7 ); ausgeben( 3 ); }
std::cout
7 3
Eine Konstantenbezeichner bezeichnet während der Lebenszeit der Konstante immer den gleichen Wert. Dadurch ist es aber nicht ausgeschlossen, daß während einer anderen Lebenszeit der gleiche Bezeichner einen anderen Wert bezeichnet. In dem Programm "constparameter1.cpp" wird die Funktion "ausgeben" zweimal aufgerufen. Dadurch entstehen hintereinander zwei Inkarnationen der Funktion "ausgeben".
Eine Inkarnation eine Funktion ist, etwas vereinfacht gesagt, die Verbindung der Funktion mit konkreten Argumentwerten.
Parameter zur Abstraktion
Parameter stehen innerhalb einer Funktionsdefinition für Details, die man nicht in der Funktionsdefinition festlegen will.
Die Funktion »f« gibt immer »7« aus.
Funktionsdefinition
void f(){ ::std::cout << 7; }
Die Funktion »g« gibt eine beliebige Zahl aus (die ihre beim Aufruf übergeben werden kann).
Funktionsdefinition
void g( int const n ){ ::std::cout << n; }
Mehrere Parameter
Eine Funktion kann auch mehrere Parameterdeklarationen haben, die dann durch ein Komma voneinander getrennt werden.
void doppelausgabe( int const a, int const b ) { ::std::cout << a << ", "s << b << "\n"s; }
int main() { doppelausgabe( 4, 9 ); }
std::cout
4, 9
Die Proklamation
Die Proklamation einer Funktion ist der Teil in der Dokumentation, der den Ergebnistyp, Namen und die Parameter einer Funktion kurz beschreibt.
Proklamation der Funktion »fabs(double)«
double fabs( double x );
Man kann die Kopfzeile einer Funktionsdefinition dazu in die Dokumentation schreiben. Dabei wird aber eine eventuelle Festlegung der Parameter als »const« weggelassen, da sie nur für den Rumpf, aber nicht für den Aufruf einer Funktion von Bedeutung ist.
Kopfzeile der Funktion »doppelausgabe(int,int)«
void doppelausgabe( int const a, int const b )
Proklamation der Funktion »doppelausgabe(int,int)«
void doppelausgabe( int a, int b );
C-Zeichenfolgen
Wenn eine C-Zeichenfolge als Argumentausdruck für einen Parameter vom Typ »::std::string« verwendet wird, wird sie zur Initialisierung des Parameters herangezogen und dadurch automatisch in eine C++-Zeichenfolge vom Typ »::std::string« gewandelt.
void f( ::std::string const s ) { ::std::cout << s << "\n"s; }
int main() { { ::std::string s { "abc" }; /* Definition und Initialisierung */ ::std::cout << s << "\n"s; }
f( "abc" ); }
Protokoll
abc abc
Initialisierungslisten als Argumente ⃗
Eine Initialisierungsliste ist eine Liste von Werten in geschweiften Klammern.
Als Argument kann auch eine Initialisierungsliste stehen.
Eine Initialisierungsliste als Argument wird zur Initialisierung des Parameters wie bei einer Variablendefinition herangezogen.
Bei Verwendung eines der Typen wie »int« oder »double« als Parametertyp, verbietet die Initialisierungsliste also eine Typeinengung.
main.cpp
void f( int const i ){ }
int main() { f( { 2 } ); /* OK */ f( { 2.1 } ); /* error */ }
transcript
main.cpp: In function 'int main()': main.cpp:11:14: error: narrowing conversion of '2.1000000000000001e+0' from 'double' to 'int' inside { } [-Wnarrowing] f( { 2.1 } ); /* error */ } ^
Bei dem Typ »::std::string« werden die Werte der Initialisierungsliste als Kennzahlen der Zeichen der Zeichenfolge interpretiert.
void f( int const i ){ ::std::cout << i << "\n"s; }
int main() { int const i = 1; int const j = 2; f( j ); }
Welche Ausgabe erzeugt das obige Programm?
Übungsaufgaben
/ Zahl ausgeben
Schreiben Sie eine Funktion »schreibzahl«, die eine als Argument beim Aufruf angegebene Zahl ausgibt!
/ Summe ausgeben
Schreiben Sie eine Funktion »summe_ausgeben«, die die Summe der beiden als Argument angegebenen Zahlen ausgibt!
Zusatzaufgaben
Schreiben Sie ein möglichst kurzes Programm, das genau die folgende Ausgabe erzeugt.
Die folgende Ausgabe enthält eine Wiederholung eines Schemas, das aber nicht wörtlich wiederholt wird, sondern mit einer gewissen Variation. Nun soll eine Funktion definiert werden, welche dieses Schema ausgibt. Der veränderliche Teil des Schemas soll in dieser Funktionsdefinition durch einen Parameter repräsentiert werden.
Bei der richtigen Lösung kommt jedes Numeral nur noch einmal im Quelltext vor. (Dies sollte aber nicht dadurch erreicht werden, daß einfach für jedes Numeral eine Konstante definiert wird.) Die Schreibweise und Formatierung der Ausgabe muß mit dem obigen Muster exakt übereinstimmen. Versuchen Sie, eine sich wiederholende Struktur in der Ausgabe als eine Wirkfunktion zu definieren.
Wenn die Lösung nicht gleich gelingt, dann verringern Sie vorübergehend die Anforderungen und schreiben Sie erst einmal ein Programm, daß z.B. nur einen Teil der Ausgabe erzeugt, aber noch Wiederholungen enthält oder die Ausgabe nicht ganz genau so wie vorgegeben erzeugt. Versuchen Sie Ihr Programm dann in kleinen Schritten zu verbessern, bis es den Anforderungen der Aufgabenstellung möglichst nahekommt.
Ein möglicher Weg zu Lösung könnte folgendermaßen beginnen.
1.) Ein Programm schreiben, das alle Zeilen so ausgibt, wie sie aufgelistet werden.
2.) Dieses Programm schrittweise umstrukturieren, bis jedes Numeral nur noch einmal vorkommt.
Ergänzungsaufgaben
Würfel
Schreiben Sie eine Wertfunktion »wuerfel«, die eine ganzzahlige Pseudozufallszahl ergibt, die größer-gleich 1 und kleiner-gleich dem Anfangswert ihres ganzzahligen Parameters ist. (Die Funktion soll sich für Parameterwerte zwischen 1 und 32767 so verhalten.) So soll der Wert von »wuerfel( 6 )« beispielsweise eine ganzzahlige Pseudozufallszahl zwischen 1 und 6 sein.
rand
Schreiben Sie eine Wertfunktion »rand« mit zwei int-Parametern, die eine pseudo-zufällige ganze Zahl zwischen dem Wert ihres ersten Arguments (einschließlich) und ihres zweiten Arguments (einschließlich) liefert.
void ausgeben( int const n ){ ::std::cout << n << "\n"s; }
int main(){ ausgeben( 7 ); ausgeben( 3 ); }
std::cout
7 3
Zu jeder Inkarnation gehört ein „Leben“ der Konstante. Während des ersten Lebens ist sie 7, während des zweiten Lebens ist sie 3. Während jedes Lebens ist sie konstant.
Mehrfache Uebergabe eines Arguments
|Zeit main | .----------------. | | | | | | | | ausgeben( 7 ) | void ausgeben | | | .-------------------------------. | | | | ( int const | Erste | | '-----> n ) | Inkarnation | | | { ::std::cout << n << "\n"; } | der Funktion | | | | | "ausgeben" | | '-------------|-----------------' | | | V | | | 7 | | | | | | | | ausgeben( 3 ) | void ausgeben | | | .-------------------------------. | | | | ( int const | Zweite | | '-----> n ) | Inkarnation | | | { ::std::cout << n << "\n"; } | der Funktion | | | | | "ausgeben" | | '-------------|-----------------' | | | V | | | 3 | | | V '----------------'
Mehrfache Exemplare eine Funktion sind ein Beispiel für die Möglichkeit der Erzeugung mehrerer Laufzeitexemplare durch ein einziges Stück Quelltext. Dadurch ist es möglich, beim Programmieren Arbeit zu sparen, da nicht alles, was mehrfach passiert soll, genauso oft auch im Programmtext stehen muß. Hier wird beispielsweise die Funktionsdefinition mehrfach verwendet, um verschiedene Werte auszugeben, obwohl sie nur einmal im Quelltext vorkommt.
Das Geschehen kann mit zwei aufeinanderfolgenden Blöcken verglichen werden, in denen jeweils eine Konstante »n« definiert wird. (Tatsächlich ist eine Funktionsdefinition ja auch die Benennung eines Blocks.) Die Lebenszeit der ersten Konstante »n« mit dem Wert »7« endet bevor die Lebenszeit der zweiten Konstante »n« mit dem Wert »3« beginnt. Da die Lebenszeiten und Gültigkeitsbereiche sich nicht überlappen entsteht kein Konflikt.
int main() { { int const n = 7; { ::std::cout << n << "\n"s; }} { int const n = 3; { ::std::cout << n << "\n"s; }}}
std::cout
7 3
Seiteninformationen und Impressum | Mitteilungsformular | "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram. | Eine Verbindung zur Stefan-Ram-Startseite befindet
sich oben auf dieser Seite hinter dem Text "Stefan Ram".) |
Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
Diese Seite ist eine Veröffentlichung von Stefan Ram.
Schlüsselwörter zu dieser Seite/relevant keywords describing this page:
Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720838 stefan_ram:720838
Parameterdefinition, Parameterdefinitionen, Parameter, Argument, Argumente, C++
source, source code,sourcecode,
Programmier sprache C++ Sprache,
C++, CXX, C+, Programm, Programme,
C++-Programm C++ Sprache C++ Programmiersprache C++
c++-Programme, Standard C++,
Programmieren in C++,
Programmieren in CXX,
Programmieren in CPP,
Programmieren in Cplusplus,
Die Programmiersprache C++,
Die Programmiersprache CXX,
Die Programmiersprache CPP,
Die Programmiersprache Cplusplus,
Die Programmier sprache C++,
Die Programmier sprache CXX,
Die Programmier sprache CPP,
Die Programmier sprache Cplusplus,
CXX-Programmierung,
C++-Programmierung,
CPP-Programmierung, c-plus-plus,
cpluplus-Programmierung,
ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus
ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX,
ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX,
IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX,
International Standard ISO/IEC 14882 First edition 1998-09-01,
ISO/IEC 14882:1998(E),
ISO/IEC 14882:2003(E),
ASC X3, 7/27/98,
c plus plus, C ++,
cplusplus, c plus plus,
Standard C+ programmieren, Stamdard C++ programmieren,
Standart C+ programmieren, Stamdart C++ programmieren,
INCITS/ISO/IEC 14882-1998,
Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998),
Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus
International Standard ISO/IEC 14882 First edition 1998-09-01,
Softwareentwicklung, Software-Entwicklung, Software Entwicklung,
Softwareprogrammierung, Software-Programmierung, Software Programmierung,
Softwareherstellung, Software-Herstellung, Software Herstellung,
Softwareerstellung, Software-Erstellung, Software Erstellung,
Softwareengineering, Software-Engineering, Software Engineering,
Softwareenginering, Software-Enginering, Software Enginering,
Softwaremethodik, Software-Methodik, Software Methodik,
Programmiermethodik, Programmier-Methodik, Programmier Methodik,
Softwaredidaktik, Software-Didaktik, Software Didaktik,
Methodik des Programmierens,
Didaktik des Programmierens,
Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens,
Programmieren, Programmierung,
Computer Science, Informatik,
Informatik, Informationspädagogik, Informationspaedagogik,
Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen,
Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still,
,
Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz,
lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung,
Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training,
WBT,
Net Based Training,
NBT,
computer based training,
CBT,
virtual learning environment,
virtual university,
für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie,
Onlineacademie,
Onlineakademie,
Wissen,
Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat,
Referate,
Hausaufgabe,
Hausaufgaben, Tip,
Tipp.
Tipps und Tricks,
Tips und Tricks, Methode,
Methoden,
Methodik, Funktion,
Funktionsweise,
Aufbau,
Prinzip,
Grundlage,
Grundlagen, Internetschulung,
Unterlage,
Unterlagen, Struktur,
Frage,
Fragen,
Antwort,
Antworten,
Schulunterricht,
zum erlernen,
was ist das?,
wie?,
lerne,
Onlineausbildung,
Onlinelehrgang,
Onlinekurs,
Onlinebuch,
Webbuch,
Academy,
Fachhochschule,
FH,
TFH,
Hochschule,
Universität,
Universitaet,
Uni,
Schule,
Berufsschule,
Gymnasium,
Erste Schritte mit,
Dozent,
Dozenten,
Zusammenfassung,
Übersicht,
Term,
Fachwort,
Fachbegriff,
Fachbegriffe,
Grundbegriff,
Grundbegriffe,
Lektion,
Lektionen,
Bedienungsanleitung,
Bedienungsanleitungen,
Spezialist,
Spezialisten,
Coaching,
Coach,
Fachbuch,
technologie,
Unterschied zwischen,
Unterschiede zwischen,
lehren,
unterrichten,
für das Studium,
für Studenten,
für Studentinnen,
für Studierende,
für Schüler,
für Schülerinnen,
Wie kann ich,
Wie kann man,
Hilfe,
selber,
erstellen,
Erstellung,
Beginner,
Online-Seminar,
Online-Kurs,
Online-Schulung,
ich,
gebrauchsanweisung,
gebrauchsanleitung,
Bedienungsanweisung,
Einweisung,
Kurzinfo,
Internet-Kurs,
Internet-Kurse,
Online-Training,
Intensiv,
Intensivkurs,
Vortragsreihe,
Präsentation,
Grundzüge,
Mitschrift,
Mitschriften,
Verständnis,
verstehen,
anwenden,
Hintergrundwissen,
Hintergrund,
Hintergründe,
content,
Funktionsprinzip,
Schritt für Schritt;
E-Learning;
elearning;
online learning;
Fernlehre,
Fernlehrgang,
Fernlehrgänge,
Referent,
Referenten,
Fernkurs,
Fernkurse,
Fernstudium,
Fernschule,
Fernuniversität,
Fernlehrer,
Denken,
Qualifizierungsmaßnahme,
Qualifizierung,
Qualifizierungen,
Volkshochschulkurs,
Volkshochschulkurse,
Internet-Learning-Plattform,
Online-Learning-Plattform,
E-Learning-Plattform,
Internetlearning-Plattform,
Onlinelearning-Plattform,
Elearning-Plattform,
jetzt,
Kochbuch,
einfach erklärt,
Kenntnis,
Kenntniss,
Kenntnisse,
deutsche Hilfe,
lernen und verstehen;
blended learning;
courseware,
Profi,
Profis,
professionell,
professionelle,
professionelles,
profesionell,
profesionelle,
profesionelles,
professionel,
gekonnt,
für Könner,
Grundkurs,
Leistungskurs,
Aufbaukurs,
Lehrtext,
Lehrtexte,
Fachtext,
Fachtexte,
Ausarbeitung,
distance learning,
Online Seminar,
distance education,
Online Tutorium,
Online Tutorien,
technology-based learning,
Computer based learning,
CBL,
Internet Based learning,
IBL,
Web based learning,
WBL,
online-learning,
OL,
online-training,
OT,
CAI,
Computer Assisted Instruction,
CUU,
Computerunterstützter Unterricht,
Computer-unterstützter Unterricht,
Know how,
Grundkenntnis,
Grundkenntnisse,
Kompetenz,
Schulungsunterlagen,
Insiderwissen,
Rat,
Lehrerinnen und Lehrer,
ABC,
Überblick,
Arbeitsblatt,
Sekundarstufe,
Oberstufe,
Material,
Materialien,
Unterrichtsentwurf,
Unterrichtsentwürfe,
Lerntip,
Lerntips,
Lerntipp,
Lerntipps,
ebook,
schnell lernen,
Lerner,
Lernender,
Lernende
Erwachsenenbildung,
Frage und Antwort,
Selbststudium,
Selbstudium,
Umschulung,
,
kostenlos, kostenlose, kostenloses,
kosten los, kosten lose, kosten loses,
gratis,
free, frei, freie, freies,
privat, private, privates, homepage, home-page, home page,
website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite,
Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel,
online, on-line, on line,
download downloaden, down load, or,
deutsch, deutsche, deutsches, deutscher,
Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges,
german, germany, and,
uebersicht, Uerbersicht, uebersichten, Uebersichten,
Übersicht, übersicht, Übersichten, übersichten,
Uebersicht, uebersicht, Uebersichten, uebersichten,
Info, Infos zu, Information über, ueber, Informationen über,
Auskunft, Auskünfte, Auskuenfte,
Dienst, PbclevtugFgrsnaEnz,
Angebot, Angebote, Anbieter,
server, für, fuer, in, an, keyword, keywords, key word, keywords,
internet, internets, net, network, net work, networks, net works,
web, www, world wide web,
Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar,
computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon,
computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon,
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
was ist ein, was ist das, was sind, definiere, definition, define,
Inhalt, html, xhtml, free im netz, PDF
Text, digital, digitale, binär, binäre, elektronisch, elektronische,
fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines,
Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen;
,
Stefan Ram, Berlin, and, or, near, uni, online,
slrprd, slrprdqxx, slrprddoc, slrprd720838, slrprddef720838, PbclevtugFgrsnaEnz
Erklärung, Beschreibung, Info, Information, Hinweis,
Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c++-parameterdefinitionen