HW06B
Would you like to react to this message? Create an account in a few clicks or log in to continue.

2. Funktionen

HW06B :: C++

Go down

2. Funktionen Empty 2. Funktionen

Post  Admin Sat Apr 28, 2007 2:50 pm

Funktionen

Funktionen werden eingesetzt damit man mehr Übersicht im Programm code erlangt.

Eine Funktion wird außerhalb der main-Funktion geschrieben, meistens schreibt man alle Funktionen über die main Funktion.

eine Funktion kann alle Datentypen zurückgeben oder auch nichts.

So wird eine Funktion deklariert :

wie bei jeder deklaration schreibt man am Anfang den Dateitypen und dann den Name der Funktion.

Code:
void ausgabe() { //diese Funktion gibt nichts zurück wegen dem Dateityp : void

Rückgabe einer Funktion :

Eine Funktion kann alle Datentypen zurückgeben.

Eine Funktion mit Rückgabewert wird so geschrieben:

Code:

int rechnung(int a, int b) {
return a+b;
}

int main() {
int c, d, ergebnis;
ergebnis = rechnung(c, d);
cout << ergebnis;
}

In der Funktion "rechnung" werden zwei Variablen vom Typ INTEGER deklariert.
Der Rückgabewert der Funktion "rechnung" ist eine Integer Variable, weil vor der Namenszuweisung "int" steht.
In der main Funktion steht "ergebnis = rechnung(c, d);" das heißt das die Funktion aufgerufen wird und der Wert von c und d wird den Variablen a und b zugwiesen.
Die Funktion Rechnung gibt "a+b" zurück und dieser Wert wird der Variable ergebnis zugewiesen.


Zahlen beispiel :
Angenommen c und d in der main Fuktion haben den Wert 1 und 2.
Dann wird die Funktion "rechnung" aufgerufen und c und d werden a und b zugewiesen
In deisem Fall könnte man genauso gut schreiben :
Code:

ergebnis = rechnung(1, 2);
danach gibt die Funktion "rechnung" 1+2 zurück, dieser Wert wird direkt der Variable "ergebnis" zugewiesen.

Die Ausgabe des Pragramms wäre : 3

Wer das noch nicht verstanden hat:
Die Funktion "rechnung" kann man sich als Maschine vorstellen die 2 Zahlen addiert.
Man wirft 2 Zahlen rein und es kommt eine Zahl heraus.

Das Praxisbeispiel :

Das untere Programm simuliert einen Rechner.

Code:

#include

int rechner (int a, int b, char operation) {
switch(operation) {
case '*': return a*b;break;
case '/': return a/b;break;
case '-': return a-b;break;
case '+': return a+b;break;
}
}

int main() {

int zahl1, zahl2;
char operation;
while(1) {
system("cls");
cin >> zahl1 >> operation >> zahl2;
cout << "= " << rechner(zahl1, zahl2, operation);
system("echo.");
system("pause");
}
return 0;
}



by Mathias Fröhlich
Admin
Admin
Rang : Administrator

Number of posts : 141
Age : 33
Registration date : 2007-03-16

Back to top Go down

2. Funktionen Empty Re: 2. Funktionen

Post  Admin Sat May 05, 2007 1:18 pm

2. Praxisbeispiel

Mit diesem Programm könnt ihr in einem Bereich von 20x40C
"zeichnen", indem ihr einen Cursor mit w,a,s,d steuert

Code:
#include <iostream.h>
#include <fstream.h>
#include <conio.h>

const int X = 20;
const int Y = 40;

char matrix[X][Y];

int hoverX = 5, hoverY = 5;

void initWorld() {
  matrix[0][0] = char(201); // linkes oberes Eckzeichen
    for(int i = 1; i <= Y; i++) {
        matrix[0][i] = char(205);  // linke "Wand"   
    }
    matrix[0][Y-1] = char(187); // linkes unteres Eckzeichen
   
    for(int i = 1; i <= X; i++) {
        matrix[i][0] = char(186);  // obere "Wand"   
    }
    matrix[X][0] = char(200);    // rechte obere Ecke
   
    for(int i = 1; i <= Y; i++) {
        matrix[X][i] = char(205);    // untere "Wand" 
    }
    matrix[X][Y-1] = char(188);      // rechte untere Ecke
   
    for(int i = 1; i < X; i++) {
        matrix[i][Y-1] = char(186);  // rechte "Wand" 
    }
   
  for(int zelleX = 2;zelleX < X-2; zelleX++) {
      for(int zelleY = 2;zelleY < Y-2; zelleY++) {  // Der "Inhalt"
        matrix[zelleX][zelleY] = '\0';     
      }
  }
}
void printWorld() {
  system("cls");
  for(int zelleX = 0;zelleX < X+1; zelleX++) {
      for(int zelleY = 0;zelleY < Y; zelleY++) {  // Der "Inhalt"
        cout << matrix[zelleX][zelleY];     
      }
      cout << "\n";   
  }
}
void  printRobot(int x, int y) {
    matrix[x][y] = char(219);
}
void clear(int x, int y) {
    matrix[x][y] = '\0';   
}

void sleep(int delay) {
   
  delay *= 100000;
  for(double i = 0; i <= delay; i += 0.1) {       
  }   
}

void steuerKonsole() {
    char cursor;
    while(cursor != 'q') {
      //system("cls");
      printWorld();
      cursor = getch(); //Eingabe ohne bestätigung mit <ENTER>
      switch(cursor) {
          case 'w': hoverX--;break;
          case 'a': hoverY--;break;
          case 's': hoverX++;break;
          case 'd': hoverY++;break;
          case 'q': break;
      }
      printRobot(hoverX, hoverY);
      sleep(20);
    }
}

void savePicture(char* fileName) {
    ofstream fileOut(fileName);
    fileOut << ".Robot" << endl;
    fileOut << "\t\t" << "(C)" << " Mathias Fröhlich 2007" << endl << endl;
    for(int zelleX = 0;zelleX <= X; zelleX++) {
        for(int zelleY = 0;zelleY < Y; zelleY++) {
          fileOut << matrix[zelleX][zelleY];       
        }
        fileOut << "\n";   
    }
    fileOut.close();       
}
int main() {
    initWorld();
    printWorld();
    steuerKonsole();
    savePicture("Zeichnung.txt");
}
Admin
Admin
Rang : Administrator

Number of posts : 141
Age : 33
Registration date : 2007-03-16

Back to top Go down

Back to top


HW06B :: C++

 
Permissions in this forum:
You cannot reply to topics in this forum