Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische...

30
Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig

Transcript of Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische...

Page 1: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Einführung in die Programmiersprache C

2.Tag

Institut für Mathematische Optimierung -

Technische Universität Braunschweig

Page 2: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

VergleichsoperatorenOperator Beschreibung

> echt größer

>= größer oder gleich

< kleiner

<= kleiner oder gleich

== gleich

!= ungleich

Beispiel: (a >= b)Ist a wirklich größer oder gleich b, so liefert die Klammer den Wert 1 zurück, sonst 0.

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 3: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Logische Operatoren und Wahrheitstafel

&& und|| oder! nicht

Geben je nach Wahrheitswert zweier Variablen p und q folgende Wahrheitswerte zurück:

p q p&&q p||q !p

0 0 0 0 1

0 1 0 1 1

1 1 1 1 0

1 0 0 1 0

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 4: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel für Vergleichs- und logische Operatoren

#include<stdio.h>int main(void){

int antw1,antw2,antw3;double zahl1=1.1,zahl2=3.3,zahl3=-2.0;

antw1 = ( (zahl1 > zahl2) || (zahl2 != 3.3) );antw2 = ( (zahl2 + zahl3!=0.0) && (zahl1 == 0.0) );antw3 = ( (!antw2) || (zahl3 > 0.0) );printf("antw1=%d\tantw2=%d\tantw3=%d\

n",antw1,antw2,antw3); return 0;

}Welchen Werte haben antw1, antw2 und antw3?Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 5: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Die for-Schleife• Die for-Schleife hat die Form:

for(Ausdruck1;Ausdruck2;Ausdruck3){Anweisungen;}

• Gibt es nur eine Anweisung, können die geschwungenenKlammern weggelassen werden.

Was WannAusdruck1 Initialisierung vor 1. Schleifendurchlauf

Ausdruck2 Bedingung vor jedem Schleifendurchlauf

Ausdruck3 Veränderung nach jedem Schleifendurchlauf

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 6: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel einer for-Schleife

#include<stdio.h>int main(void){

int i;

for( i=0 ; i<10 ; i++ )printf("%d\n",i);

return 0;}Was wird ausgegeben und warum?

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 7: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

2. Beispiel einer for-Schleife#include<stdio.h>

int main(void){int i;

for(i=0;i<10;printf("%d\n",i))i++;return 0;}Unterschied zum letzten Beispiel? Was wird hier ausgegeben?

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 8: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel EndlosschleifeVorsicht! Setzt man die Bedingungen für die Schleife schlecht, so können auch Endlosschleifen entstehen. Nachfolgend das erste Beispiel einer for-Schleife, in dem die zweite Bedingung verändert wurde: …int main(void){

int i;

for(i=0;i>=0;i++)printf("%d\n",i);

return 0;}Ausgabe: 0,1,2,…,10,11,… Abbruch eines Programms mit Strg+c

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 9: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Aufgabe

Schreiben Sie ein Programm, dass die Zahlen 10,…,1 ausgibt. Verwenden Sie hierfür folgendes Grundgerüst:#include<stdio.h>int main(void){

for( ; ; )printf();

return 0;}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 10: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Lösung

#include<stdio.h>

int main(void){int i;

for(i=10;i>0;i--) printf("%d\n",i);return 0;}Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 11: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Die while-SchleifeDie while-Schleife

Ausdruck1;while(Ausdruck2){

Anweisungen;Ausdruck3;

}ist fast gleichwertig mit der for-Schleife (Unterschied bei continue, später)

for(Ausdruck1;Ausdruck2;Ausdruck3){

Anweisungen;}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 12: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel für while-Schleifedouble zahl;int zaehler=0;

printf("Bitte geben Sie eine beliebige Zahl ein!\t");scanf("%lf",&zahl); while(zahl>=1.0){

zaehler++;zahl=zahl/2;

}printf("Diese Zahl kann %d-mal halbiert werden und ist dann mit einem Wert von %lf kleiner als 1!",zaehler,zahl);

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 13: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Die do-while-Schleife

Die dritte Schleifen-Variante, die C bietet, ist:do{Anweisungen;}while(Ausdruck);Diese Schleife wird ausgeführt, solange Ausdruck wahr ergibt. Da aber Ausdruck nach dem jeweiligen Durchlaufen der Schleife ausgeführt wird, wird die Schleife mindestens einmal durchlaufen.Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 14: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel für do-while-Schleifedouble zahl;int zaehler=0;

printf("Bitte geben Sie eine beliebige Zahl ein!\t");scanf("%lf",&zahl);do{

zaehler++;zahl=zahl/2;

}while(zahl>=1.0);printf("Diese Zahl kann %d-mal halbiert werden und ist dann mit

einem Wert von %lf kleiner als 1!",zaehler,zahl);Ausgabe: while/do-while-Schleife bei Eingabe einer Zahl <1.0 (>=1.0)?

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 15: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Aufgabe

Schreiben Sie ein Programm, dass solange vom Benutzer die Eingabe einer Zahl verlangt, bis eine 0 eingegeben wird. Das Programm soll ansonsten jeweils die Quadratzahl der eingebeben Zahl ausgeben. Benutzen Sie dafür eine while- oder do-while-Schleife!

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 16: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Lösungint main(void){

int a;printf("Geben Sie eine Zahl ein:\t");scanf("%d",&a);while(a!=0){

printf("Quadratzahl ist %d\nNoch ne Zahl bitte:\n",a*a);

scanf("%d",&a);}return 0;

}Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 17: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Die if-BedingungDie bedingten Anweisungen in C haben die Form:if(Ausdruck1){Anweisungen;}else{Anweisungen;

}wobei es keinen else-Block geben muss. Die Anweisungsblöcke können wiederrum if-else-Blöcke enthalten.

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 18: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Aufgabe

Schreiben Sie ein Programm, dass eine Zahl einliest und danach ausgibt, ob diese positiv ist oder negativ. Verwenden Sie dafür die if-else-Anweisung.

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 19: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Lösung...

double zahl;

printf("Bitte geben Sie eine beliebige Zahl ein!\t");scanf("%lf",&zahl);if(zahl>=0.0)

printf("Die Zahl ist positiv!\n");else

printf("Die Zahl ist negativ!\n");return 0;

}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 20: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Die Anweisungen continue und break

• Der Befehl continue dient dazu, Teile einer Schleife zu überspringen. Genauer wird der Teil der Schleife, der nach dem continue steht, übersprungen.

• Mit dem Befehl break wird die aktuelle Schleife komplett abgebrochen und die nächste Anweisung im Programm ausgeführt.

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 21: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel für den continue-Befehlint j=0;

while (j < 10){

if (j > 8){

j++;continue;

}printf("Aktueller Wert von j: %d\n", j);j++;

}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 22: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel verbessert durch break-Befehlint j=0;

while (j < 10){

if (j > 8)break;

printf("Aktueller Wert von j: %d\n", j);j++;

}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 23: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Die switch-AnweisungDie switch-Anweisung ist eine weitere Möglichkeit, bedingte Anweisungen zu geben. Ihre allgemeine Form ist:switch(wert){case konstante1: Anweisungen;break;case konstante2: Anweisungen;break;case konstante3: Anweisungen;break;...default: Anweisungen;break;}Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 24: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel für die switch-Anweisungchar antwort;

printf("Verstehen Sie die switch-Anweisung? Antwort mit j oder n.\t");scanf("%c",&antwort);switch(antwort){

case 'j': printf("Das ist schoen!\n");break;

case 'n' : printf("Dann schauen Sie sich das nochmal an!\n");break;

default : printf("Das soll eine Antwort sein?\n");break;

}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 25: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Definieren eigener Funktionen• Bisher bekannte Funktionen: z.B. printf() und scanf() (durch

#include<stdio.h> durch den Präprozessor eingebunden)• Jetzt: Definition eigener Funktionen! Beispiel:

double quadrat(double zahl){

return zahl*zahl;}

• Die Funktion quadrat verlangt als Parameter eine Variable vom Typ double und gibt das Quadrat der Zahl, auch vomTyp double zurück (return-Befehl).

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 26: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Warum eigene Funktionen?

• Code ist übersichtlicher.• Änderungen leicht vornehmbar.• Code ohne Probleme schnell wiederverwendbar

(Bausteinprinzip)

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 27: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Funktionen im Quellcode

• Funktionen können erst verwendet werden, nachdem sie am Anfang des Quellcodes deklariert wurden. Dies geschieht durch einen Funktionsprototyp:

double quadrat(double zahl);So „weiß“ der Kompiler, dass es eine solche Funktion gibt.

• Die Funktiondefinition kann dann später oder in einer anderen Datei erfolgen.

• Definitionen von Funktionen dürfen nicht geschachtelt werden!Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 28: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Funktionsaufruf

Der Funktion müssen die richtigen Variablen mit dem entsprechendem Datentyp übergeben werden:

double zahl1=3.2, zahl2;zahl2=quadrat(zahl1);

Der Funktion quadrat wird hier wie gewünscht eine double-Variable übergeben und auch eine Wert vom Datentyp double zurückgegeben. Die Variablenbezeichnungen beim Aufruf der Funktion (hier zahl1) und innerhalb der Funktion (hier zahl) dürfen unterschiedlich sein.

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 29: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Beispiel (in main wird Funktion quadrat() aufgerufen)

#include<stdio.h>double quadrat(double );int main(void){

double a;printf("Bitte Zahl eingeben:");scanf("%lf",&a);printf("Quadrat von %.2f: %f\n",a,quadrat(a));

}double quadrat(double zahl){

return zahl*zahl;}

Institut für Mathematische Optimierung – Technische Universität Braunschweig

Page 30: Einführung in die Programmiersprache C 2.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.

Kommentare

Kommentare sollen das Verstehen und Nachvollziehen eines Programms ermöglichen, sie werden vom Compiler ignoriert. Hierfür existieren zwei Typen:

• Blockkommentar (der Text wird zwischen /* und */ auskommentiert):/* text */

• Zeilenkommentar (der Text wird in der kompletten Zeile hinter // auskommentiert):

// text

Institut für Mathematische Optimierung – Technische Universität Braunschweig