Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

25
Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik

Transcript of Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Page 1: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 1

Informatik Grundlagen, WS04, Seminar 8Informatik

Page 2: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 2

Was machen wir heute?

Nachbesprechen von Übungsblatt 6

Statische Variablen

Modularisierung

Übungsblatt 8 - worauf es ankommt.

Page 3: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 3

Nachbesprechung Übungsblatt 6

Gute Lösungen, aber

Lösungsidee nicht vergessen (für jede Funktion)

Bei Funktionen: was macht sie?

Zweck der Funktion

Parameter

Programmierstil beachten!

Variablennamen

Funktionsnamen

Klammersetzung

Einrückung

Page 4: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Nachbesprechung Übungsblatt 6

Keine globalen Vars Symbolische Konstanten für Feldlänge

verwenden.

Diese Konstanten überall verwenden, wo Feldlänge notwendig!

Bei Feldern Grenzen abprüfen.

Page 5: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Nachbesprechung Übungsblatt 6

#define ROW 3

#define COLUMN 3

int Matrix[ROW][COLUMN]

Nicht:For (r=0; r<3; r++) …

Besser:For (r=0; r<ROW; r++) …

Algorithmus soll allgemein sein; im Bssp. durch einfache Änderung von ROW wird überall Grösse geändert.

Page 6: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Nachbesprechung Übungsblatt 6

Array Grenzen immer überprüfen!

Auch bei strings. Nicht nur auf `\0´ überprüfen, sondern while (string[i]!= `\0´ && i < MAX)

Auch bei Kommandozeilenparams argv!

Page 7: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Vorstellung Übungsblatt 6

Aufgabe 2:

Hämmerle

Aufgabe 3:

Sturn oder Masser

Page 8: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 8

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Klammerungif (someCondition) {

printf(”condition true\n”);}

if (someCondition) {printf(”condition true\n”);

} else {printf(”condition false\n”);

}

while (someCondition) {printf(”looping\n”);

}

int StrLen(char string[]) {return 0;

}

/* Einfache Bedingung */

/* Verzweigte Bedingung */

/* Schleifen */

/* Funktionen */

Page 9: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 9

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Klammerung - so nicht:if (someCondition) printf(”condition true\n”);

if (someCondition) printf(”condition true\n”);

else printf(”condition false\n”);

while (someCondition) printf(”looping\n”);

int StrLen(char string[]) {

return 0;}

Page 10: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 10

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Klammerung - nicht so:if (someCondition) printf(”condition true\n”);

if (someCondition) printf(”condition true\n”);

else printf(”condition false\n”);

while (someCondition ) printf(”looping\n”);

int StrLen(char string[]) {

return 0;}

Page 11: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 11

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Variablen-Namenint i = 0;int j = 0;

int calcResult = 0;

char text[MAX_LENGTH] = {0};

const double cPi = 3.14;

static int sIntermediateSum = 0;

int gSwitch = 1;int main(int argc, char* argv[]) { ...}

z.B. Zählvariablen

aussagegkräftige Namen

Prefix c für Konstanten

Prefix s für statische Variablen

Prefix g für globale Variablen

Beginnen immer mit Kleinbuchstaben!

Page 12: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 12

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Variablen-Namen: so nichtint K = 0;int L = 0;

int iResult = 0;

char szText[MAX_LENGTH] = {0};

const double cpi = 3.14;

static int intermediatesum = 0;

int Switch = 1;int main(int argc, char* argv[]) { ...}

Page 13: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 13

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Variablen-Namen: so nichtint K = 0;int L = 0;

int iResult = 0;

char szText[MAX_LENGTH] = {0};

const double cpi = 3.14;

static int intermediatesum = 0;

int Switch = 1;int main(int argc, char* argv[]) { ...}

Page 14: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 14

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Funktions-Namenvoid PrintString(char str[]) { ....}

int IsValidDate(int year, int month, int day) { ... /* return 1 if valid, 0 if not valid */ ...}

double SquareRoot(double value) { ...}

Beginnen immer mit Großbuchstaben!

Aussagekräftige Namen verwenden.

Page 15: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 15

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Funktions-Namen: so nichtint Leapyear(int year) { /* return number of days for february */}

int isvaliddate(int Year, int month, int day) { ... /* return 0 if valid, 1 if not valid */ ...}

double dSquareRoot(double value) { ...}

PrintString(char string[]) { ...}

Page 16: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 16

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Funktions-Namen: so nichtint Leapyear(int year) { /* return number of days for february */}

int isvaliddate(int Year, int month, int day) { ... /* return 0 if valid, 1 if not valid */ ...}

double dSquareRoot(double value) { ...}

PrintString(char string[]) { ...}

Page 17: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 17

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Einrückungenint DoSomeStuff(char str[]) { int i = 0; .... if (someCondition) { printf(”%s”; str); while (someOtherCondition) { int j = 0; ... } }else { printf(”wrong value”); }

return 0;}Leerzeilen sind immer erwünscht wenn Übersichtlichkeit erhöht wird.

Page 18: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 18

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Einrückungen: so nichtint DoSomeStuff(char str[]) {int i = 0; .... if (someCondition) {printf(”%s”; str); while (someOtherCondition) { int j = 0; ... } }else { printf(”wrong value”); }

return 0;}

Page 19: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 19

Nachbesprechung Übungsblatt 6 + 7

Programmierstil Beispiele

Einrückungen: so nichtint DoSomeStuff(char str[]) {int i = 0; .... if (someCondition) {printf(”%s”; str); while (someOtherCondition) { int j = 0; ... } }else { printf(”wrong value”); }

return 0;}

Page 20: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 20

Statische Variablen

Statische Variablen - was ist das?

Wofür werden sie eingesetzt?

Wann werden sie initialisiert?

Details auf Vorlesungsfolien

Beispiel “LaufendeSumme”

Funktion bekommt über Parameter int Wert. Diese

Params werden laufend aufsummiert.

int CalculateSomething(int value) { static int sum = 0; ...}

Page 21: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 21

Modularisierung

Was versteht man unter Modularisierung?

Was sind die Vorteile?

Unterschiede Deklaration/Definition?

Wann nimmt man:#include <name.h>

und wann#include “name.h”

Details siehe Vorlesungsfolien.

Page 22: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Module: Beispiel zum Üben

Ändern Sie Ihr Progr. Ü7 Ascii2Int so um, dass sie eine eigene „Bibliothek“ mit der Funktion Ascii2Int implementieren.

Wie sieht das header file aus?

Wie sieht die Implementierung aus?

Wie sieht main aus?

(für die ganz schnellen und gwieften: Int2Ascii zusätzlich)

Int2Ascii (int zahl; char *string[]);

Page 23: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Zeiger

Was ist Zeiger;

Initialisierung (NULL);

Adressen

&

*

Page 24: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04

Fragestunde zur Klausur

Angaben genau durchlesen

Beginne mit der Aufgabe die du glaubst, zu können

Niemals zu lange an einer Aufgabe „herumdoktern“ = (sich aufhalten)

Kurze Aufgaben: ca. max. 10 min

Page 25: Informatik Grundlagen, Seminar 8 WS04 1 Informatik Grundlagen, WS04, Seminar 8 Informatik.

Informatik Grundlagen, Seminar 8 WS04 25

Übungsblatt 8

Worum geht es?

Modularisierung kennen lernen und anwenden

Mit Pointern vertraut werden.

Worauf sollte geachtet werden:

Angaben genau lesen.

Testprogramm für Aufgabe 1 nicht vergessen.

Programmierrichtlinien einhalten

In Zukunft rigoroser Punkteabzug!!!