Grundlagen der Programmierung



Ähnliche Dokumente
1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen Programmieren 1 Felix Rohrer. Übungen

Programmierkurs Java

Wofür braucht man eine Tabellenkalkulation? Das Programm Microsoft Excel gehört in Softwarekategorie der Tabellenkalkulationen.

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Informationsblatt Induktionsbeweis

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Übungsaufgaben zur Programmiersprache Python

Übungsaufgaben Tilgungsrechnung

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Installation und Inbetriebnahme von Microsoft Visual C Express

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Übung 8: Semaphore in Java (eigene Implementierung)

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Übungen zu C++ Kapitel 1

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einführung in die Java- Programmierung

Programmieren was ist das genau?

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Grundlagen der Tabellenkalkulation Die wichtigsten Funktionen im Überblick Christian Schett

Kapitalerhöhung - Verbuchung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungsblatt 3: Algorithmen in Java & Grammatiken

Propädeutikum zur Programmierung

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Informatik 1 Tutorial

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Vorkurs Informatik WiSe 15/16

Überblick. Lineares Suchen

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Institut für Informatik

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

1 topologisches Sortieren

Ihr Mandant möchte einen neuen Gesellschafter aufnehmen. In welcher Höhe wäre eine Vergütung inklusive Tantieme steuerrechtlich zulässig?

Einführung in die Informatik Tools

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Die Größe von Flächen vergleichen

Professionelle Seminare im Bereich MS-Office

Programmierkurs Java

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Programmierung von Konturzügen aus Geraden und Kreisbögen

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Kapitel 8.3: Kalkulation vom Hundert und im Hundert. Kapitel 8.4: Durchführung der Absatzkalkulation an einem Beispiel

Mediator 9 - Lernprogramm

1 Mathematische Grundlagen

Bauteilattribute als Sachdaten anzeigen

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Whitebox-Tests: Allgemeines

Berechnungen in Access Teil I

Hilfe zur Urlaubsplanung und Zeiterfassung

PVL 3 - Roulette. (5 Punkte) Abgabe bis

Einführung in die C++ Programmierung für Ingenieure

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

1 Vom Problem zum Programm

Zimmertypen. Zimmertypen anlegen

Java: Vererbung. Teil 3: super()

5. Tutorium zu Programmieren

Was meinen die Leute eigentlich mit: Grexit?

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Multicheck Schülerumfrage 2013

Website der Solling-Schule (Berlin) Anleitung zur Nutzung

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Programmieren in Java

Grundlagen. Kapitel 1

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Leichte-Sprache-Bilder

Zeichen bei Zahlen entschlüsseln

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Andreas Rühl. Investmentfonds. verstehen und richtig nutzen. Strategien für die optimale Vermögensstruktur. FinanzBuch Verlag

Softwareentwicklung Schrittweise Verfeinerung, Programmieren üben: Tic-Tac-Toe in Raten

Qt-Projekte mit Visual Studio 2005

Stammdatenanlage über den Einrichtungsassistenten

5. Übung: PHP-Grundlagen

Version 0.3. Installation von MinGW und Eclipse CDT

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

Studieren- Erklärungen und Tipps

Dossier: Rechnungen und Lieferscheine in Word

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Einführung in PHP. (mit Aufgaben)

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

Transkript:

Grundlagen der Programmierung 7.1 Vom Problem zum Programm................... 38 7.2 Programmiersprachen.......................... 38 7.3 Erste Schritte.................................. 38 7.4 Entwicklerwerkzeuge.......................... 39 7.5 Datentypen................................... 39 7.6 Programmstrukturen........................... 41 ÜBERBLICK 7

7 Grundlagen der Programmierung Lerninhalte Das Erlernen einer Programmiersprache ist weiterhin die Grundvoraussetzung, um wesentliche Konzepte der Informatik zu verstehen. Im vorliegenden Kapitel erfolgt der Einstieg algorithmisch orientiert. Als Programmiersprache wird aufgrund des hohen Verbreitungsgrads Java verwendet, zur Programmentwicklung wird BlueJ eingesetzt. 7.1 Vom Problem zum Programm Der Einstieg in die Welt der Programmierung erfolgt zunächst anhand eines Gedankenbeispiels, das sich auch noch durch die folgenden Kapitel ziehen wird: dem Sortieren eines Kartenhaufens. Dabei wird im vorliegenden Abschnitt zunächst die Problematik besprochen, ein Beispiel des täglichen Lebens in eine dem Computer verständliche Form zu bringen. Der Lernende wird erneut mit dem bereits aus Kapitel 3 bekannten EVA-Prinzip konfrontiert. Für den Einstieg in die Programmierung bieten sich folgende Aufträge an: Formulieren Sie Aufgaben des täglichen Lebens mit dem EVA-Prinzip. Beispiele: Schreiben einer Klausur, Durchführen einer Kopfrechenaufgabe. Welche Handlungen des täglichen Lebens lassen sich von einem Computer erledigen, welche nicht? 7.2 Programmiersprachen Der Teilabschnitt gibt einen groben Überblick über die wichtigsten Programmiersprachen und führt gleichzeitig eine Klassifizierung durch. Zum Weiterarbeiten: Informieren Sie sich über den Verbreitungsgrad einzelner Programmiersprachen. Hinweis: Unter dem Link http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html findet man eine aufschlussreiche Statistik zur Thematik. Welche Programmiersprachen werden hauptsächlich in der Industrie verwendet? Sprechen Sie mit Informatikern aus Ihrer Verwandtschaft/Ihrem Bekanntenkreis! 7.3 Erste Schritte In diesem Abschnitt sollen die Lernenden anhand des allseits beliebten Hello Word-Einstiegsprogramms zunächst einen Überblick bekommen, welch große Vielfalt an Programmiersprachen den Markt bevölkert. Das Programm Hello World dient dem Programmierer seit jeher dazu, eine neue Programmierumgebung bzw. deren Werkzeuge kennenzulernen. 38

7.4 Entwicklerwerkzeuge Aufgaben (S. 186) 1. Sehen Sie sich auf der Seite http://www2.latech.edu/~acm/helloworld Beispiele zu Hello World in weiteren Programmiersprachen an. 2. Versuchen Sie, einige ausgewählte Hello World-Beispiele in der Lernumgebung zu kompilieren und zu interpretieren. Die meisten dort angewendeten Programmiersprachen lassen sich mit dem Paketmanager Synaptic in der Lernumgebung installieren. Lösungen/didaktische Hinweise 1. Der Link enthält Programmierbeispiele in nahezu allen existierenden Sprachen. Hier bietet sich für die Lernenden ein struktureller Vergleich der Sprachen an. Welche Sprachen erscheinen dem Laien intuitiv einfach, welche sind eher komplex? 2. Hier sollten in jedem Fall die Beispiele zu C/C++ und Java getestet werden. Aber auch Prolog ist als Beispiel einer KI-Sprache interessant. 7.4 Entwicklerwerkzeuge Die Lernenden erhalten in diesem Abschnitt einen Einblick in die für die Programmierung wichtigen Werkzeuge. Dem Unterrichtenden bleibt es dabei freigestellt, ob er zunächst den Umgang mit Editor und Compiler auf der Kommandozeile bespricht (als Editor bietet sich hier joe an) oder gleich die IDE BlueJ verwendet. Die Programmierbeispiele des Buchs sind in BlueJ entwickelt worden, die Quelltexte lassen sich aber auch auf der Kommandozeile kompilieren. Arbeitsaufträge: Testen Sie das Syntaxhighlighting verschiedener Programmquelltexte im Editor gedit. Die Quelltexte diverser Sprachen zum Hello World-Beispiel können wieder von http:// www2.latech.edu/~acm/helloworld entnommen werden. Arbeiten Sie sich anhand eines einfachen Programmbeispiels in die BlueJ-Arbeitsumgebung ein (vgl. Anhang A4). 7.5 Datentypen Die Lernenden sollen verschiedene Datentypen kennenlernen. Im Unterschied zur Mathematik werden Variablen in der Informatik mit aussagekräftigen, selbsterklärenden Bezeichnern versehen. Die Zuordnung einer Variablen zu einem bestimmten Datentyp erfolgt aus Gründen der Speichereffizienz. Ergänzender Arbeitsauftrag: Ändern Sie im Programm Quader die Variablentypen von double auf integer. Welche Probleme ergeben sich dadurch? Die Lernenden sollen an dieser Stelle erfahren, dass die verwendete Java-Bibliotheksfunktion ein bestimmtes Eingabedatenformat erwartet. In diesem Zusammenhang kann auch auf Typecasting und die daraus resultierenden Fehlerquellen eingegangen werden. 39

7 Grundlagen der Programmierung Aufgaben (S. 193) 1. Bauen Sie bewusst einige Fehler in den lauffähigen Quellcode ein und schauen Sie sich die Fehlermeldungen an, die der Compiler darauf ausgibt. 2. Schreiben Sie ein Programm, das den Umfang und die Oberfläche und das Volumen einer Kugel bei vorgegebenem Radius berechnet. Recherchieren Sie ggf. die dafür notwendigen Formeln in der Wikipedia (www.wikipedia.de). Lösungen/didaktische Hinweise 1. Die Lernenden sollen an dieser Stelle merken, dass die Fehlermeldungen z.t. nicht wirklich im Zusammenhang mit dem verursachenden Fehler stehen. In der BlueJ- Umgebung werden die Fehler am unteren Fensterrand des Editors angezeigt. 2. Das folgende Listing zeigt das Java-Programm zur Berechnung des Volumens und der Oberfläche einer Kugel bei vorgegebenem Radius: import java.math.*; /*Import der Mathematikbibliothek*/ public class Kugel public static void main (String args[]) double r; /* r = Radius der Kugel */ Eingabe ein = new Eingabe(); r = ein.readdouble("radius r: "); /* Einlesen von r */ double V = 4.0/3.0*Math.PI*r*r*r; double O = 4.0*Math.PI*r*r; /* Hier erfolgen die Berechnungen von Volumen und Oberfläche */ System.out.println(" Volumen = " + V); /* Ausgabe des Volumens der Kugel*/ System.out.println(" Oberfläche = " + O); /* Ausgabe der Oberfläche der Kugel*/ Listing 7.1: Berechnung von Kugelvolumen und Oberfläche Erläuterung der Aufgabenstellung Sinn der Übung ist zunächst der Transfer des einfachen EVA-Programms zur Berechnung der Kenngrößen eines Quaders auf eine Kugel. Die Schüler sollen dabei insbesondere auch die benötigte Formel durch eine Google-Recherche ausfindig machen, um ihre Recherchekompetenz zu festigen. 40

7.6 Programmstrukturen 7.6 Programmstrukturen In diesem Abschnitt werden die wichtigsten algorithmischen Strukturen vermittelt. Zunächst werden die beiden Standardvarianten zur grafischen Darstellung von Algorithmen besprochen: der PAP und das Nassi-Shneiderman-Diagramm, besser bekannt als Struktogramm. Anhand konkreter Beispiele werden dann die Strukturen Anweisungsfolge, Verzweigung und Schleife besprochen und sowohl in Form eines Struktogramms als auch Programms demonstriert. Im Rahmen des Teilabschnitts ergeben sich vielfältige Programmieraufgaben, deren Lösung nachfolgend vorgestellt wird. Aufgaben (S. 196) 1. Erstellen Sie ein Java-Programm, das einen in Euro eingegebenen Geldbetrag in Dollar umrechnet. 2. Erstellen Sie ein Programm, das zu einem vorgegebenen Nettopreis die Mehrwertsteuer ausrechnet und sowohl den Bruttopreis (Preis inkl. Mehrwertsteuer) als auch die im Preis enthaltene Mehrwertsteuer ausgibt. Orientieren Sie sich bei der Lösung an Listing 7.5. Lösungen 1. Erstellen Sie ein Java-Programm, das einen in Euro eingegebenen Geldbetrag in Dollar umrechnet. import java.math.*; public class Euro_Dollar public static void main (String args[]) double euro, kurs, dollar; /* Eingabe der Variablen */ Eingabe ein = new Eingabe(); euro = ein.readdouble("betrag in Euro: "); /* Einlesen des Euro-Betrags */ kurs = 1.22; /* aktueller Kurs */ dollar = kurs*euro; dollar = Math.round(dollar * 100. ) / 100.; /* Runden des Werts */ System.out.println(euro+" Euro sind " + dollar +" Dollar."); /* Ausgabe des Dollar-Betrags */ Listing 7.2: Umrechnung Euro/Dollar 41

7 Grundlagen der Programmierung 2. Erstellen Sie ein Programm, das zu einem vorgegebenen Nettopreis die Mehrwertsteuer ausrechnet und sowohl den Bruttopreis (Preis inkl. Mehrwertsteuer) als auch die im Preis enthaltene Mehrwertsteuer ausgibt. import java.math.*; public class Mehrwertsteuer public static void main (String args[]) double netto, steuern, brutto, steuersatz; /* Definition der Variablen */ Eingabe ein = new Eingabe(); netto = ein.readdouble("nettobetrag: "); /* Einlesen des Netto-Betrags */ steuersatz = 1.19; /* aktueller Steuersatz */ steuern = netto * steuersatz; brutto = netto + steuern; steuern = Math.round(steuern * 100. ) / 100.; brutto = Math.round(brutto * 100. ) / 100.; /* Runden der Werte */ System.out.println(" Die Steuern betragen " + steuern +" Euro."); /* Ausgabe der Steuern */ System.out.println(" Der Gesamtpreis beträgt " + brutto +" Euro."); /* Ausgabe des Gesamtpreises */ Listing 7.3: Berechnung der Mehrwertsteuer Erläuterung der Aufgabenstellung Auch bei dieser Aufgabe steht der Transfer des Gelernten vom vorgegebenen Beispiel im Vordergrund. 42

7.6 Programmstrukturen Zum Weiterarbeiten 1. Bauen Sie in das Programm aus Listing 7.6 folgenden Fehler ein: Ergänzen Sie in Zeile 16 ein Multiplikationszeichen hinter der Variablen b, sodass die Zeile nunmehr lautet: 16 D = b*b*-4*a*c; 2. Was für Auswirkungen hat diese Ergänzung auf den Programmablauf? 3. Bauen Sie selbst Fehler in das Programm ein und verfolgen Sie die Ausgaben des Compilers. Lösungen/didaktische Hinweise 1. Hier erfahren die Lernenden den Vorzug des Debuggers: Durch das zusätzliche Multiplikationszeichen, das durch einen Tippfehler entstehen könnte, wird die Rechnung zwar formal ausgeführt, liefert aber ein falsches Ergebnis. Ein besonders tückischer Laufzeitfehler, der vom Compiler nicht identifiziert wird. 2. Derartige selbst eingebaute Fehler sind gerade in der Anfangsphase der Programmierung wichtig, um das Spektrum der Compilerfehlermeldungen kennenzulernen. Aufgabe (S. 201) Schreiben Sie ein Java-Programm, das das Notenpunktesystem der gymnasialen Oberstufe (Noten von 00 bis 15) in verbalisierte Form ( ungenügend bis sehr gut ) umwandelt (siehe www.wikipedia.de/punktesystem der gymnasialen Oberstufe). Lösung import java.math.*; public class Punktesystem public static void main (String args[]) int punkte; Eingabe ein = new Eingabe(); System.out.println("Geben Sie Ihre Note ein!"); punkte = ein.readint("note (0-15): "); switch(punkte) case 0: System.out.println("ungenügend"); break; 43

7 Grundlagen der Programmierung case 1: System.out.println("mangelhaft"); break; case 2: System.out.println("mangelhaft"); break; case 3: System.out.println("mangelhaft"); break; case 4: System.out.println("ausreichend"); break; case 5: System.out.println("ausreichend"); break; case 6: System.out.println("ausreichend"); break; case 7: System.out.println("befriedigend"); break; case 8: System.out.println("befriedigend"); break; case 9: System.out.println("befriedigend"); break; case 10: System.out.println("gut"); break; case 11: System.out.println("gut"); break; case 12: System.out.println("gut"); break; case 13: System.out.println("sehr gut"); break; case 14: System.out.println("sehr gut"); break; case 15: System.out.println("sehr gut"); break; default: System.out.println("Die Eingabe ist ungültig."); Erläuterung der Aufgabenstellung Die Aufgabe ist ein relativ einfacher Transfer des im Buch vorgestellten Beispiels zu den Wochentagen. 44

7.6 Programmstrukturen Aufgaben (S. 203) CARL FRIEDRICH GAUSS hat in der oben beschriebenen Anekdote eine Formel entwickelt, mit der sich die Summation einer endlichen Reihe stark vereinfacht. Für die Summe aller natürlichen Zahlen bis zu einer Zahl n gilt: i= 1 1. Beweisen Sie (unterstützt durch eine Wikipedia-Recherche) die Richtigkeit dieser Formel. 2. Ändern Sie das Programm aus Listing 7.8 so ab, dass die Gaußformel zur Berechnung der Reihe verwendet wird. 3. Welchen Vorteil könnte die Anwendung der Gaußformel im Programm bringen? Lösungen/didaktische Hinweise 1. Der Beweis kann direkt aus der Wikipedia übernommen werden. Er basiert auf der vollständigen Induktion. 2. Im Programm ist direkt der folgende Code einzusetzen: int summe = n*(n+1)/2; n n ( n + 1) i = 1+ 2 + 3 +... + n = 2 3. Der Vorteil der Formel ist die direkte Berechnung des Ergebnisses und damit die Reduktion der Rechenschritte im Vergleich zur Iteration. Aufgabe (S. 205) Was geschieht, wenn Sie in Zeile 16 des Listings die Bedingung zum Abbruch der Schleife wie folgt ändern? 16 while (kapital == 2*startkapital) Bedingung: Identität durch doppeltes Gleichheitszeichen Lösung/didaktische Hinweise In diesem Fall prüft die Abfrage gleich am Anfang, ob das verzinste Kapital inklusive Zinseszinsen exakt gleich dem doppelten Startkapital ist, was zu Beginn aber nicht erfüllt sein kann. Die Schleife wird somit nicht betreten, das Programm liefert als Verdopplungszeit 0 Jahre. 45

7 Grundlagen der Programmierung Aufgabe (S. 208) Analysieren Sie folgendes Listing und erläutern Sie, was ausgegeben wird: public class Praefix_Postfix public static void main(string[] args) int i; i = 23; i++; i--; System.out.println(i); System.out.println(i++); System.out.println(++i); // Lösung/didaktische Hinweise Die Lerngruppe sollte hier wirklich angehalten werden, das Programm in Form eines Schreibtischtests zu analysieren und die Analyse hinterher durch Programmierung zu bestätigen. Die Programmausgabe lautet: 23, 23, 25. 46