Parameterdefinitionen: Einführung in die Definition von Parametern in C im Rahmen der Lehre des Programmierens mit der Programmiersprache C. (Parameterdefinition, Parameterdefinitionen, Parameter, Argument, Argumente, C), Lektion, Seite 720840
https://www.purl.org/stefan_ram/pub/c-parameterdefinitionen (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Parameterdefinitionen in C

Eine Konstante 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.

constparameter.c

#include <stdio.h>

void ausgeben( int const n )
{ printf( "%d\n", n ); }

int main( void )
{ ausgeben( 7 ); }

stdout
7

Die Übergabe eines Wertes an einen Konstantenparameter beim Funktionsaufruf entspricht der Definition einer Konstante, im Falle des Programms »constparameter.c« also »int const n = 7«.

constparameter1.c

#include <stdio.h>

void ausgeben( int const n )
{ printf( "%d\n", n ); }

int main( void )
{ ausgeben( 7 ); ausgeben( 3 ); }

stdout
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.c« wird die Funktion »ausgeben« zweimal aufgerufen. Dadurch entstehen hintereinander zwei Inkarnationen der Funktion »ausgeben«. 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 | Erstes 
| | '-----> n ) | Exemplar 
| | | { printf( "%d\n", n ); } | der Funktion 
| | | | | "ausgeben" 
| | '-------------|-----------------' 
| | | V 
| | | 7 
| | | 
| | | 
| | ausgeben( 3 ) | void ausgeben 
| | | .-------------------------------. 
| | | | ( int const | Zweites 
| | '-----> n ) | Exemplar 
| | | { printf( "%d\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 einer Verbundanweisung.) 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.

constexample.c

#include <stdio.h>

int main( void )
{ { int const n = 7; { printf( "%d\n", n ); }}
{ int const n = 3; { printf( "%d\n", n ); }}}

stdout
7
3

Mehrere Parameter

Eine Funktion kann auch mehrere Parameterdeklarationen  haben, die dann durch ein Komma voneinander getrennt werden.

multiparameter.c

#include <stdio.h>

void doppelausgabe( int const a, int const b )
{ printf( "%d\n", a );
printf( "%d\n", b ); }

int main( void )
{ doppelausgabe( 4, 9 ); }

stdout
4
9

Übungsfragen

?   Ausgabe vorhersagen

/    Umbenennen

#include <stdio.h> /* printf */

void f( int const i ) { printf( "%d\n", i ); }

int main( void ) { int const a = 1; f( a ); }

Welche Ausgabe erzeugt das obige Programm?

?   Ausgabe vorhersagen

/    Umbenennen

#include <stdio.h> /* printf */

void f( int const i )
{ printf( "%d\n", i ); }

int main( void )
{ int const i = 1; int const j = 2; f( j ); }

Welche Ausgabe erzeugt das obige Programm?

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie eine Wirkfunktion »schreibzahl«, die eine als Argument beim Aufruf angegebene Zahl ausgibt!

/   Übungsaufgabe

Schreiben Sie eine Wertfunktion »zahl«, die eine als Argument beim Aufruf angegebene Zahl unverändert zurückgibt!

/   Übungsaufgabe

Schreiben Sie eine Wirkfunktion »summe», die die Summe der beiden als Argument angegebenen Zahlen ausgibt!

/   Übungsaufgabe

Schreiben Sie eine Wertfunktion »summe», die die Summe der beiden als Argument angegebenen Zahlen zurückgibt!

/   Ausgabe eines Zeichens

Schreiben Sie eine Funktion, welche eine ihre übergebene Zahl zusammen mit dem Schriftzeichen, das diese Zahl als Kennzahl hat, ausgibt. Wird die Funktion mit dem Wert »65« aufgerufen, so soll sie die Zeile »Das Zeichen A hat die Kennzahl 65.« ausgeben.

/   Übungsaufgabe

/    Umbenennen

#include <stdio.h> /* printf */

void f( int const i )
{ printf( "%d\n", i ); }

int main( void )
{ int const i = 1; int const j = 2; f( j ); }

Benennen Sie den Parameter »i« in »k« und die Konstante »i« (welche kein Parameter ist) in »n« um, ohne das Verhalten des Programms zu verändern.

Verkürzung

Schreiben Sie ein möglichst kurzes Programm, das genau die folgende Ausgabe erzeugt.

Ausgabe
11910 
11910 32251 
11910 
23141 
23141 32251 
23141 
10312 
10312 32251 
10312 
24170 
24170 32251 
24170 
17233 
17233 32251 
17233 
24947 
24947 32251 
24947

In der Lösung darf jedes Numeral im Programmtext (Quellcode) nur einmal vorkommen! Die Schreibweise und Formatierung der Ausgabe muß mit dem folgenden 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.

Würfel
Schreiben Sie eine Wertfunktion »wuerfel«, die eine ganzzahlige Pseudozufallszahl ergibt, die größergleich 1 und kleinergleich dem Wert ihres ganzzahligen Parameters ist. (Die Funktion soll sich für Parameterwerte zwischen 1 und 32768 so verhalten.) So soll der Wert von »wuerfel( 6 )« beispielsweise eine ganzzahlige Pseudozufallszahl zwischen 1 und 6 sein.
/    Vertauschen der Werte zweier Objekt mit einer Funktion
{ int x = 22;
int y = 47;
swap( x, y ); /* Ist solch eine Funktion moeglich? */
printf( "%d\n%d\n", x, y ); /* Ausgabe: 47 22 */ }

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 stefanram720840 stefan_ram:720840 Parameterdefinition, Parameterdefinitionen, Parameter, Argument, Argumente, C source, source code,sourcecode, Programmier sprache C, C, Programm, Programme, C-Programm C Sprache C Programmiersprache C C-Programme, Programmieren in C, Die Programmiersprache C, Die Programmier-Sprache C, C-Programmierung, Die Programmier Sprache C, ANSI-C, Standard C, ISO-C, International Standard ISO/IEC 9899:1999 (E), ANSI X3.159-1989, C90, C99, ANSI/ISO-C, ISO/IEC-C, IEC-C, ISO/IEC 9899:1999 (E), Standard C programmieren, Standart C programmieren, INCITS/ISO/IEC 9899-1999, Programming Languages - C (formerly ANSI/ISO/IEC 9899-1999) , 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, slrprd720840, slrprddef720840, 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