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

Post on 06-Apr-2015

114 views 1 download

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

Informatik Grundlagen, Seminar 8 WS04 1

Informatik Grundlagen, WS04, Seminar 8Informatik

Informatik Grundlagen, Seminar 8 WS04 2

Was machen wir heute?

Nachbesprechen von Übungsblatt 6

Statische Variablen

Modularisierung

Übungsblatt 8 - worauf es ankommt.

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

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.

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.

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!

Informatik Grundlagen, Seminar 8 WS04

Vorstellung Übungsblatt 6

Aufgabe 2:

Hämmerle

Aufgabe 3:

Sturn oder Masser

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 */

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;}

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;}

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!

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[]) { ...}

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[]) { ...}

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.

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[]) { ...}

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[]) { ...}

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.

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;}

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;}

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; ...}

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.

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[]);

Informatik Grundlagen, Seminar 8 WS04

Zeiger

Was ist Zeiger;

Initialisierung (NULL);

Adressen

&

*

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

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!!!