informatik grundlagen, seminar 8 ws04 1 informatik grundlagen, ws04, seminar 8 informatik
TRANSCRIPT
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!!!