Übungspaket 4 Klassifikation von Dreiecken
|
|
- Helga Schulze
- vor 5 Jahren
- Abrufe
Transkript
1 Übungspaket 4 Klassifikation von Dreiecken Übungsziele: Skript: 1. Selbstständiges Entwickeln eines ersten Programms 2. Anwenden der Methoden des Software Life Cycles 3. Programmentwurf durch Anwendung der Methode der Schrittweisen Verfeinerung 4. Erstellen eines ersten, eigenen C-Programms 5. Finden von Programmierfehlern Kapitel: 6 bis 9 und 16 Semester: Wintersemester 2018/19 Betreuer: Thomas, Tim und Ralf Synopsis: Nach dem ihr im 3. Übungspaket ein in der Vorlesung entwickeltes Programm auf dem Rechner zum Laufen gebracht habt, müsst ihr nun euer erstes eigenes Programm selber entwickeln. Im Rahmen der Programmentwicklung sollt ihr alle Phasen des Software Life Cycles anwenden.
2 Teil I: Stoffwiederholung Aufgabe 1: Das Konzept der Fallunterscheidung In Kapitel 9 des Skriptes haben wir die Fallunterscheidung eingeführt. Erkläre mit eigenen Worten, wofür sie verwendet werden kann und wie sie mittels der Methode der Schrittweisen Verfeinerung dargestellt wird! Die Fallunterscheidung dient dazu, einen logischen Ausdruck auszuwerten und in Abhängigkeit des Ergebnisses etwas Bestimmtes zu tun. Man spricht auch von einer bedingten Programmverzweigung. Die einfachste Form der Fallunterscheidung kann man als wenn-dann Konstruktion beschreiben: wenn ein logischer Ausdruck wahr ist dann tue etwas Sinnvolles Diese Konstruktion lässt sich erweitern: wenn ein logischer Ausdruck wahr ist dann tue etwas Sinnvolles sonst tue etwas anderes Aufgabe 2: Die Fallunterscheidung in C Erkläre kurz, wie die Fallunterscheidung in der Programmiersprache C implementiert wird! Gib zusätzlich mindestens vier Beispiele für eine sinnvolle Fallunterscheidung in C an! Die einfache wenn-dann Konstruktion wird in C wie folgt umgesetzt: if ( logischer Ausdruck ) Anweisung; Das Schlüsselwort if wird mit der Bedeutung wenn verwendet. C kennt kein Schlüsselwort für dann; es ist implizit enthalten. Es kann nur eine Anweisung folgen; benötigt man mehr als eine Anweisung, müssen diese mit geschweiften Klammern eingeschlossen werden (aus Platzgründen ohne Einrücken): 1 if ( logischer Ausdruck ) 2 { Anweisung_1 ; Anweisung_2 ; } Die erweiterte Fallunterscheidung sieht wie folgt aus (wieder ohne Einrücken): 1 if ( logischer Ausdruck ) 2 { Anweisung_1 ; Anweisung_2 ; } 3 else { Anweisung_3 ; Anweisung_4 ; } Die Anweisungen 1 und 2 werden ausgeführt, wenn die Bedingung erfüllt ist (der logische Ausdruck wahr ist), sonst die Anweisungen 3 und Wintersemester 2018/19, Einführung in die Praktische Informatik
3 Weitere Beispiele (Anmerkung: i und x sind vom Typ int): 1 if ( i == 0 ) 2 printf ( "i ist null \n" ); 3 4 if( i == 0 ) 5 printf ( "i ist null \n" ); 6 else printf ( "i ist nicht null \n" ); 7 8 if( i == 0 && x < 3 ) 9 { 10 printf ( "i ist null \n" ); 11 printf ( "x ist kleiner als 3\n" ); 12 } 13 else { 14 printf ( " entweder ist i ungleich null " ); 15 printf ( " oder x ist groesser oder gleich 3\ n" ); 16 } if( i == 0 && x < 3 ) 19 { 20 printf ( "i ist null \n" ); 21 if(x >0) 22 { 23 printf ( " x ist entweder 1 oder 2\ n" ); 24 } 25 else { 26 printf ( " x ist negativ oder gleich null \ n" ); 27 } 28 } 29 else { 30 printf ( " entweder ist i ungleich null " ); 31 printf ( " oder x ist groesser oder gleich 3\ n" ); 32 } Aufgabe 3: Detailfragen zur Speicherorganisation Wie kann man die Speicheradressen von Variablen und Funktionen ausgeben? Variablen: printf( "%p", & name der variablen ); Funktionen: printf( "%p", & name der funktion ); Einführung in die Praktische Informatik, Wintersemester 2018/19 4-2
4 Teil II: Quiz Aufgabe 1: Phasen des Software Life Cycle Wie heißen die einzelnen Phasen des Software Life Cycle und worauf zielen sie ab? 1. Phase Name: Ziele: 2. Phase Name: Ziele: 3. Phase Name: Ziele: 4. Phase Name: Ziele: 5. Phase Name: Ziele: 6. Phase Name: Ziele: Aufgabenstellung Erfassung des Problems, des Problemumfangs und der notwendigen Randbedingungen, vage Beschreibung des gewünschten Ergebnisses. Problemanalyse Konkretisierung aus Programmierersicht: welche Daten, wie wird verarbeitet, welches Ergebnis, Bedienung, Reaktion auf Fehler, welche Testdaten? Entwurf Aufteilung komplexer Aufgabenstellungen in mehrere kleinere Komponenten. Wie werden Daten zwischen den Komponenten vermittelt? Implementierung Detaillierte Beschreibung der Algorithmen der einzelnen Module: Struktogramm/schrittweise Verfeinerung (kein C-Code). Kodierung Umsetzen der Implementierung in C-Code. Test Test aller Programmteile mit gültigen und ungültigen Daten, Fehlererkennung und -behebung. 4-3 Wintersemester 2018/19, Einführung in die Praktische Informatik
5 Teil III: Fehlersuche Aufgabe 1: Syntaxfehler Unser Programmiererteam, die Tri Angels haben in folgendes Programm je Zeile einen Fehler eingebaut. Finde, erkläre und korrigiere sie. 1 # include <stdio.h> 2 INT main ( int argc, char ** argv ) 3 [ 4 int i, j k, l; 5 i = 1; j = 2; k = 3; l = 2: 6 if ( i == 1 7 printf ( "i ist 1\n ); 8 if ( i == 1 &&& j == 3 ) 9 printf ( "i ist 1 und j ist 3\" ); 10 if ( k == 1 && [j == 3 l < 5)) 11 print ( " k ist 1 und j ist 3 oder l kleiner 5\ n" ); 12 if ( i => 2 * (j + k)*l l == 2 ) 13 printf " der komplizierte ausdruck ist wahr \ n"; 14 $} Zeile Fehler Erläuterung Korrektur 1 großes D C unterscheidet Groß/Kleinbuchstaben #include 2 großes INT C unterscheidet Groß/Kleinbuchstaben int 3 [ In C werden Blöcke durch { und } gebildet { 4, fehlt Variablen müssen mit Komma getrennt werden j, k 5 : Abschluss einer Anweisung mittels ; l = 2; 6 ) fehlt Die Bedingung muss mit einer runden Klammer enden if (i == 1) 7 " fehlt Zeichenketten müssen innerhalb von "..." stehen "i... 1\n" 8 &&& Das logische und besteht aus nur zwei &-Zeichen && 9 \" Der Zeilenumbruch heißt \n. Bei \" will der Compiler ein " ausgeben. Folgefehler: er erkennt das Ende der Zeichenkette nicht j ist 3\n" 10 [ Die einzelnen Ausdrücke müssen in () stehen (j == 3...) 11 f fehlt Die Ausgabeanweisung heißt printf() printf Einführung in die Praktische Informatik, Wintersemester 2018/19 4-4
6 Zeile Fehler Erläuterung Korrektur 12 => Der Vergleich heißt in C >= i >= () fehlen Die Argumente von printf müssen in () stehen printf() 14 $ zu viel Dort gehört kein $-Zeichen hin } Programm mit Korrekturen: 1 # include <stdio.h> 2 int main ( int argc, char ** argv ) 3 { 4 int i, j, k, l; 5 i = 1; j = 2; k = 3; l = 2; 6 if ( i == 1 ) 7 printf ( "i ist 1\n" ); 8 if ( i == 1 && j == 3 ) 9 printf ( "i ist 1 und j ist 3\n" ); 10 if ( k == 1 && (j == 3 l < 5)) 11 printf ( " k ist 1 und j ist 3 oder l kleiner 5\ n" ); 12 if ( i >= 2 * (j + k)*l l == 2 ) 13 printf ( " der komplizierte ausdruck ist wahr \ n" ); 14 } 4-5 Wintersemester 2018/19, Einführung in die Praktische Informatik
7 Teil IV: Anwendungen Aufgabe 1: Vorüberlegung: Klassen von Dreiecken In der Mathematik werden Dreiecke, die durch die drei Seiten a, b und c beschrieben werden, in die folgenden fünf Klassen eingeteilt. Beschreibe jede Klasse mittels einer Formel (a, b und c) sowie mindestens einem Zahlenbeispiel. 1. Kein Dreieck: Die Dreiecksungleichung besagt, dass die Summe zweier Seiten immer echt größer sein muss als die dritte Seite: Die drei Seiten a, b, c können kein Dreieck bilden, wenn folgende Aussage wahr ist: a + b c oder b + c a oder a + c b. Beispiel: a = 5, b = 1, c = 1 Umgekehrt bilden die drei Seiten a, b, c ein Dreieck, wenn folgende Aussage wahr ist: a + b > c und a + c > b und b + c > a 2. Gleichseitiges Dreieck: Alle drei Seiten a, b, c müssen gleich lang sein: a = b und b = c. Beispiel: a = 4, b = 4, c = 4 3. Gleichschenkliges Dreieck: Zwei Seiten des Dreiecks müssen gleich lang sein, folgende Aussage muss also wahr sein: a = b oder a = c oder b = c Beispiel: a = 6, b = 6, c = 3 4. Rechtwinkliges Dreieck: Im rechtwinkligen Dreieck muss die Summe der Quadrate der beiden Seiten, die den rechten Winkel einschließen, genauso groß sein, wie das Quadrat der dritten Seite: a 2 + b 2 = c 2 oder b 2 + c 2 = a 2 oder a 2 + c 2 = b 2 Beispiel: a = 3, b = 4, c = 5 5. Gewöhnliches Dreieck: Jede Kombination der Seiten a, b, c, die gemäß Bedingung 1 ein Dreieck bilden, aber keine der Bedingungen 2 bis 4 erfüllen, bilden ein gewöhnliches Dreieck. Beispiel: a = 3, b = 4, c = 6 Einführung in die Praktische Informatik, Wintersemester 2018/19 4-6
8 Aufgabe 2: Entwicklung eines Dreiecksprogramms In dieser Aufgabe geht es um die eigenständige Entwicklung eines Programms zur Klassifikation von Dreiecken. Dabei sollt ihr alle Phasen des Software Life Cycle nacheinander durchlaufen (siehe auch Skriptkapitel 7), was durch die folgende Gliederung unterstützt werden soll. Die Klassifikation der einzelnen Dreiecke kann gemäß Aufgabe 1 erfolgen. Innerhalb dieser Aufgabe bezeichnen wir die drei Seiten des Dreiecks mit a, b und c. 1. Aufgabenstellung Entwickle ein Programm, das drei Zahlen für die Seiten a, b und c einliest. Das Programm soll überprüfen, ob es sich um ein Dreieck handelt und ggf. die zutreffenden Dreiecksklassen ausgeben. Beispiel: Eingabe: 3, 4, 5 Ausgabe: rechtwinkliges Dreieck Das Programm soll auch erkennen, falls getätigte Eingaben unsinnig sind. Hierzu zählt beispielsweise die Eingabe negativer Seitenlängen. Hinweis: Bei der Programmentwicklung kann davon ausgegangen werden, dass immer nur ganze Zahlen vorkommen, sodass der Datentyp int verwendet werden kann. 2. Pflichtenheft Aufgabe : Klassifikation von Dreiecken Eingabe : drei Zahlen für die Seiten a, b und c, Datentyp int Ausgabe : Die jeweilige(n) Klasse(n) des Dreiecks Sonderfälle : Zahlenwerte 0 für eine oder mehrere Seiten 3. Testdaten Testfall a b c Dreiecksklasse(n) kein Dreieck gleichseitig, gleichschenklig gleichschenklig gleichschenklig rechtwinklig gewöhnlich gewöhnlich fehlerhafte Eingabe fehlerhafte Eingabe 4-7 Wintersemester 2018/19, Einführung in die Praktische Informatik
9 4. Implementierung Klassifikation von Dreiecken Variablen: Integer: a, b, c Einlesen von Seite a, Einlesen von Seite b, Einlesen von Seite c wenn a > 0 und b > 0 und c > 0 dann wenn a+b > c und a+c > b und b+c > a dann Ausgabe des Textes: reguläres Dreieck Test auf gleichseitiges Dreieck Test auf gleichschenkliges Dreieck Test auf rechtwinkliges Dreieck sonst Ausgabe des Textes: kein Dreick sonst Ausgabe des Textes: Mindestens eine Eingabe ist fehlerhaft Test auf gleichseitiges Dreieck wenn a = b und b = c dann Ausgabe des Textes: Gleichseitiges Dreieck Test auf gleichschenkliges Dreieck wenn a = b oder b = c oder a = c dann Ausgabe des Textes: Gleichschenkliges Dreieck Test auf rechtwinkliges Dreieck wenn a 2 + b 2 = c 2 oder b 2 + c 2 = a 2 oder a 2 + c 2 = b 2 dann Ausgabe des Textes: Rechtwinkliges Dreieck Handsimulation: Trage in nachfolgender Tabelle ein, welche Ausdrücke ausgewertet und welche Ausgaben getätigt werden. Eingabe: Ausdrücke und Variablen Zuweisung Auswertung Ausgabe Variable a: Wert: undef. 2 Variable b: Wert: undef. 3 Variable c: Wert: undef. 4 a>0 und b>0 und c>0 wahr regulär a=b und b=c falsch a=b oder a=c oder b=c falsch a 2 +b 2 =c 2 oder b 2 +c 2 =a 2 oder a 2 +c 2 =b 2 falsch Einführung in die Praktische Informatik, Wintersemester 2018/19 4-8
10 5. Kodierung Unsere Kodierung sieht wie folgt aus (teilweise etwas komprimiert): 1 # include <stdio.h> 2 3 int main ( int argc, char ** argv ) 4 { 5 // fuer jede seite eine variable nebst initialisierung 6 int a = -1, b = -1, c = -1; 7 8 // eingabeaufforderung und die seiten einlesen 9 printf ( " Bitte Seite a eingeben : " ); scanf ( "%d",&a ); 10 printf ( " Bitte Seite b eingeben : " ); scanf ( "%d",&b ); 11 printf ( " Bitte Seite c eingeben : " ); scanf ( "%d",&c ); // damit wir wissen, was vor sich geht 14 printf ( "\ neingabe : a=%d b=%d c=%d\n\n", a, b, c ); // pruefung auf korrekte eingabe 17 if ((a > 0) && (b > 0) && (c > 0)) 18 { 19 // alles OK; erster test : dreieck oder keines 20 if ((a+b > c) && (a+c > b) && (b+c > a)) 21 { 22 printf ("a, b und c bilden ein Dreieck \n"); // zweiter test : gleichseitiges dreieck 25 if ((a == b) && (b == c)) 26 printf (" Das Dreieck ist gleichseitig \n"); // dritter test : gl eichsc henkli ges dreieck 29 if ((a == b) (b == c) (a == c)) 30 printf (" Das Dreieck ist gleichschenklig \ n"); // vierter test : rechtwinkliges dreieck 33 if ((a*a + b*b == c*c) (a*a + c*c == b*b) 34 (b*b + c*c == a*a)) 35 printf (" Das Dreieck ist rechtwinklig \n"); 36 } 37 else printf ("a, b und c bilden kein Dreieck!\n"); 38 } 39 else printf (" Mindestens eine Seite ist fehlerhaft \ n"); // fertig 42 return 0; 43 } 4-9 Wintersemester 2018/19, Einführung in die Praktische Informatik
11 Handsimulation: Im Sinne eines effizienten Arbeitens ist es sehr lohnenswert, das auf Papier entwickelte C-Programm vor dem Eintippen mittels einer Handsimulation für einige ausgewählte Testdaten zu überprüfen. Trage hierzu in nachfolgender Tabelle (von oben nach unten) ein, welche Ausdrücke ausgewertet und welche Ausgaben getätigt werden. Eine mögliche Testeingabe lautet: 3, 4, 5. Eingabe: 3, 4, 5 Zeile Variablen Aktion Resultat/Effekt Definition int a,b,c Anlegen und Initialisieren 9 a=-1 b=-1 c=-1 scanf( "%d", & a ) Eingabe 3: a=3 10 a= 3 b=-1 c=-1 scanf( "%d", & a ) Eingabe 4: b=4 11 a= 3 b= 4 c=-1 scanf( "%d", & a ) Eingabe 5: c=5 14 a= 3 b= 4 c= 5 printf(...) Ausgabe: a=3 b=4 c= a>0 && b>0 && c>0 wahr a+b>c && a+c>b && b+c>a wahr printf(...) Ausgabe: ein Dreieck a==b && b==c falsch a==b a==c b==c falsch a*a + b*b == c*c... wahr printf(...) Ausgabe: rechtwinklig return 0 Programmende 6. Speicherorganisation Um ein besseres Gefühl für die internen Dinge eines C-Programms zu bekommen, sollt ihr diesmal auch eine Speicherkarte erstellen, deren Einträge üblicherweise absteigend sortiert sind (die großen Adressen oben, die kleinen unten). Für alle Variablen und Funktionen sind jeweils ihre Namen und Adressen einzutragen. Bei Variablen ist ferner anzugeben, wie viele Bytes sie im Arbeitsspeicher belegen. Hinweise findet ihr in der ersten Programmieraufgabe aus Aufgabenblatt 3 sowie in Kapitel 8 des Skriptes. Verwende folgende Tabelle, in der bereits zwei Beispiele (fast vollständig) eingetragen sind: Adresse Name Typ Größe 0x00401BE4 printf Funktion 0x00401BDC scanf Funktion 0x main Funktion 0x0028FF1C a Variable: int 4 Bytes 0x0028FF18 b Variable: int 4 Bytes 0x0028FF14 c Variable: int 4 Bytes Einführung in die Praktische Informatik, Wintersemester 2018/
12 Der zugehörige Teil des C-Programms sieht wie folgt aus, den wir beispielsweise hinter Programmzeile 7 oder Zeile 40 einfügen können: // speichersegmente ausgeben // zuerst die funktionen printf ( " Adressen der Funktionen :\n" ); printf ( "\ tmain : \t%p\n", main ); printf ( "\ tprintf : \t%p\n", printf ); printf ( "\ tscanf : \t%p\n", scanf ); // und jetzt noch die variablen printf (" Adressen und Groessen der Variablen :\ n"); printf ("\ta: %p %d Bytes \n", &a, sizeof ( a ) ); printf ("\tb: %p %d Bytes \n", &b, sizeof ( b ) ); printf ("\tc: %p %d Bytes \n", &c, sizeof ( c ) ); 4-11 Wintersemester 2018/19, Einführung in die Praktische Informatik
Übungspaket 10 Fallunterscheidungen
Übungspaket 10 Fallunterscheidungen Übungsziele: Skript: 1. Umgang mit der einfachen Fallunterscheidung, 2. sowie mehrfachen Fallunterscheidung und 3. problemangepasster Auswahl Kapitel: 24 und 25 Semester:
MehrÜbungspaket 9 Logische Ausdrücke
Übungspaket 9 Logische Ausdrücke Übungsziele: Skript: 1. Umgang mit logischen Vergleichs- und Verknüpfungsoperatoren 2. Bilden einfacher und komplexer logischer Ausdrücke Kapitel: 22 Semester: Wintersemester
MehrÜbungspaket 14 Eindimensionale Arrays
Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbungspaket 12 Der Datentyp char
Übungspaket 12 Der Datentyp char Übungsziele: Skript: 1. Umgang mit dem Datentyp char, 2. Deklarationen von char-variablen, 3. char-konstanten 4. und char-rechenoperationen. Kapitel: 29 bis 31 sowie 24,
MehrÜbungspaket 8 Datentyp int
Übungspaket 8 Datentyp int Übungsziele: Skript: 1. Umgang mit dem Datentyp int, 2. Deklarationen von int-variablen, 3. int-konstanten 4. und int-rechenoperationen. Kapitel: 21 Semester: Wintersemester
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbungspaket 12 Der Datentyp char
Übungspaket 1 Der Datentyp char Übungsziele: Skript: 1. Umgang mit dem Datentyp char,. Deklarationen von char-variablen, 3. char-konstanten 4. und char-rechenoperationen. Kapitel: 9 bis 31 sowie 4, 5 und
MehrÜbungspaket 3 Mein erstes Programm: Fläche eines Rechtecks
Übungspaket 3 Mein erstes Programm: Fläche eines Rechtecks Übungsziele: Skript: 1. Der Software Life Cycle im Überblick. Umgang mit Editor und Compiler 3. Editieren und Starten eines eigenen Programms
MehrÜbungspaket 8 Datentyp int
Übungspaket 8 Datentyp int Übungsziele: Skript: 1. Umgang mit dem Datentyp int, 2. Deklarationen von int-variablen, 3. int-konstanten 4. und int-rechenoperationen. Kapitel: 21 Semester: Wintersemester
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrÜbungspaket 20 Zeiger und Zeigervariablen
Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18
MehrÜbungspaket 25 Kommandozeilenargumente
Übungspaket 25 Kommandozeilenargumente Übungsziele: Skript: 1. Umgang mit argc/argv 2. argc/argv als Schnittstelle von Programm und Betriebssystem 3. Vereinfachtes Testen mit argc/argv Kapitel: 51 und
MehrÜbungspaket 20 Zeiger und Zeigervariablen
Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrÜbungspaket 7 Angemessenes Formatieren von C-Programmen
Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungsziele: Skript: 1. Gute Layout-Struktur durch Einrücken. Richtiges Verwenden von Kommentaren Kapitel: 19 Semester: Wintersemester 016/17 Betreuer:
MehrÜbungspaket 7 Angemessenes Formatieren von C-Programmen
Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungsziele: Skript: 1. Gute Layout-Struktur durch Einrücken. Richtiges Verwenden von Kommentaren Kapitel: 19 Semester: Wintersemester 018/19 Betreuer:
MehrÜbungspaket 13 Der Datentyp double
Übungspaket 13 Der Datentyp double Übungsziele: Skript: 1. Umgang mit dem Datentyp double, 2. Deklarationen von double-variablen, 3. double-konstanten 4. und double-rechenoperationen. Kapitel: 32 Semester:
MehrÜbungspaket 3 Mein erstes Programm: Fläche eines Rechtecks
Übungspaket 3 Mein erstes Programm: Fläche eines Rechtecks Übungsziele: Skript: 1. Der Software Life Cycle im Überblick. Umgang mit Editor und Compiler 3. Editieren und Starten eines eigenen Programms
MehrÜbungspaket 5 Abstrakte Programmierung
Übungspaket 5 Abstrakte Programmierung Übungsziele: Skript: 1. Strukturierung einer gegebenen Aufgabe, 2. Bearbeitung von Arbeitsabläufen des alltäglichen Lebens mittels Struktogrammen 3. und der Methode
MehrÜbungspaket 32 Einfach verkettete, sortierte Liste
Übungspaket 32 Einfach verkettete, sortierte Liste Übungsziele: Skript: 1. Aufbau einer einfach verketteten, sortierten Liste 2. Traversieren von Listen 3. Vereinfachung durch ein Dummy-Element Kapitel:
MehrÜbungspaket 22 Rekursive Funktionsaufrufe
Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme
MehrÜbungspaket 28 Module und getrenntes Übersetzen
Übungspaket 28 Module und getrenntes Übersetzen Übungsziele: Skript: 1. Verteilen von Programmteilen auf mehrere Dateien 2. Richtige Verwendung der Header-Dateien 3. Richtiger Umgang mit dem C-Compiler
MehrÜbungspaket 24 Zeichenketten
Übungspaket 24 Zeichenketten Übungsziele: Skript: 1. Verständnis über die interne Repräsentation von Zeichenketten 2. Arbeiten mit Zeichenketten 3. Definition konstanter Zeichenketten 4. Verwendung diverser
MehrÜbungspaket 11 Schleifen
Übungspaket 11 Schleifen Übungsziele: Skript: 1. Umgang mit den Schleifen in C. Wahl des richtigen Schleifentyps 3. Umwandlung der Schleifen ineinander Kapitel: 6 bis 8 Semester: Wintersemester 017/18
MehrGrundlagen der Programmierung
Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,
MehrÜbungspaket 21 Funktionen mit Zeigern und Arrays als Parameter
Übungspaket 21 Funktionen mit Zeigern und Arrays als Parameter Übungsziele: Skript: 1. Funktionen mit Zeigern als Parameter 2. Emulation von Variablenparametern 3. Funktionen mit Arrays als Parameter 4.
MehrÜbungspaket 6 Arbeiten mit Syntaxdiagrammen
Übungspaket 6 Arbeiten mit Syntaxdiagrammen Übungsziele: Skript: Verstehen, Anwenden und Erstellen von Syntaxdiagrammen Kapitel: 20 Semester: Wintersemester 2017/18 Betreuer: Kevin, Theo, Thomas und Ralf
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrÜbungspaket 13 Der Datentyp double
Übungspaket 13 Der Datentyp double Übungsziele: Skript: 1. Umgang mit dem Datentyp double, 2. Deklarationen von double-variablen, 3. double-konstanten 4. und double-rechenoperationen. Kapitel: 32 Semester:
MehrÜbungspaket 19 Programmieren eigener Funktionen
Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame
MehrÜbungspaket 19 Programmieren eigener Funktionen
Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame
MehrAusdrücke (1) Grundlegende Eigenschaften
Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrÜbungspaket 22 Rekursive Funktionsaufrufe
Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungsziele: Skript: In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären
MehrNachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben
MehrKontrollstrukturen -- Schleifen und Wiederholungen
Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
Mehr4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C
Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige
MehrJava Anweisungen und Ablaufsteuerung
Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrÜbungspaket 30 Kopieren von Dateien
Übungspaket 30 Kopieren von Dateien Übungsziele: Skript: 1. Öffnen und Schließen von Dateien 2. Einfaches Lesen und Schreiben 3. Behandlung der EOF-Marke 4. Kopieren ganzer Dateien Kapitel: 59 bis 67 und
MehrGrundlagen der Programmierung
Grundlagen der Programmierung 3. Vorlesung 18.04.2018 1 Elemente von Programmiersprachen Operatoren Kontrollstrukturen Bibliotheksfunktionen 2 Was sind Kontrollstrukturen? Kontrollstrukturen erlauben,
Mehr1.6 Programmstrukturen/Abweisende Schleife
1.6 Programmstrukturen/Abweisende Schleife 1.6.1 Schleife Die meisten Programmiersprachen haben Konstruktionen, die eine beliebige Wiederholung von Programmteilen ermöglichen. Diese Konstruktionen heißen
MehrÜbungspaket 1 Grundlagen: von der Hardware zum Programmieren
Übungspaket 1 Grundlagen: von der Hardware zum Programmieren Übungsziele: Skript: 1. Die Bedeutung des Programmierens für mein Studium und meine spätere Berufstätigkeit 2. Was ist eine erfolgreiche Lernstrategie?
MehrÜbungspaket 1 Grundlagen: von der Hardware zum Programmieren
Übungspaket 1 Grundlagen: von der Hardware zum Programmieren Übungsziele: Skript: 1. Die Bedeutung des Programmierens für mein Studium und meine spätere Berufstätigkeit 2. Was ist eine erfolgreiche Lernstrategie?
MehrVorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
MehrBedingte Anweisungen
Bedingte Anweisungen Bedingte Anweisungen werden nicht immer ausgeführt, sondern nur, wenn eine Bedingung erfüllt (wahr) ist. C/C++/Java bieten hier 2 Konstruktionen an: if-anweisung sowie switch-case
MehrProgrammieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf
MehrVorlesung Objektorientierte Programmierung Klausur
Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe
MehrEinheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen
Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik
MehrÜbungspaket 4 Funktionszeiger
Übungspaket 4 Funktionszeiger Übungsziele: Literatur: 1. Verstehen von Funktionszeigern. 2. Anwenden von Funktionszeigern. C-Skript 1, Kapitel: 85 Semester: Wintersemester 2017/18 Betreuer: Kevin, Peter
MehrTeil 5: Zeiger, Felder, Zeichenketten Gliederung
Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik
Mehrint i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben
Datenfelder (Array) Seite 1 von 7 Bei den bisherigen Programmen wurde für jede verwendete Variable (oder für jedes Objekt) ein eigener Typ und Name vergeben. Die Initialisierung, d.h. die Belegung mit
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
Mehreinlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrTag 2 Repetitorium Informatik (Java)
Tag 2 Repetitorium Informatik (Java) Dozent: Daniela Novac Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Zeichen und
MehrRO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
MehrGrundlagen der Programmierung
Grundlagen der Programmierung 8. Vorlesung 25.05.2016 1 Ausdrücke "Befehle", die ein Ergebnis liefern 3 + 4 sin(x) x < 10 getchar() Ausdrücke können Teil eines anderen Ausdrucks sein x = sin( x + y ) Auswertung:
MehrVorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp ZAIK Universität zu Köln WS 07/08 1 / 6 Datentypen Arten von Datentypen
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrDr. Monika Meiler. Inhalt
Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8
MehrEINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrEinführung in die Informatik I
Einführung in die Informatik I Kapitel I.5: Verzweigungen Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät
MehrKlausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrJava Ablaufsteuerung (Beispiele)
Informatik 1 für Nebenfachstudierende Grundmodul Java Ablaufsteuerung (Beispiele) Kai-Steffen Hielscher Folienversion: 16. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Blöcke Anweisungen
MehrEinleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
MehrGI Vektoren
Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrInformatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. August 2009 1/17 Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz
MehrGrundlagen der Informatik
Grundlagen der Informatik Einführung in die Programmiersprache C Teil 2 Ein- und Ausgabe in C-Programmen Prof. Dr.-Ing. Thomas Wiedemann Fachgebiet Informatik / Mathematik Überblick zur Vorlesung Ein-
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
MehrPraxis der Programmierung
Funktionen, Header-Dateien, Pointer Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Organisatorische Bemerkungen 2 Modul Programmierung Pflichtmodul für BSc INF
MehrZeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt
Zeichenketten (1) Literale Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt "Hallo Welt" Mehrere solcher Literale gelten als eine Zeichenkette, wenn sie nur durch Whitespaces (Leerzeichen,
MehrKlausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
MehrPrimzahlen und Programmieren
Primzahlen Wir wollen heute gemeinsam einen (sehr grundlegenden) Zusammenhang zwischen Programmieren und Mathematik herstellen. Die Zeiten in denen Mathematiker nur mit Zettel und Stift (oder Tafel und
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrÜbungspaket 5 Abstrakte Programmierung
Übungspaket 5 Abstrakte Programmierung Übungsziele: Skript: 1. Strukturierung einer gegebenen Aufgabe, 2. Bearbeitung von Arbeitsabläufen des alltäglichen Lebens mittels Struktogrammen 3. und der Methode
MehrTeil 5: Felder, Zeiger, Zeigerarithmetik Gliederung
Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Felder (Arrays) Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder
Mehr