Einführung in die Programmierung - WS 2024/25 - PDF

Summary

This document contains lecture notes on introductory programming, specifically focusing on Java programming concepts. It covers topics like program structure, code examples, and basic programming constructs.

Full Transcript

VO Einführung in die Programmierung Teil I WS 2024/25 H.Hagenauer FB Informatik Kapitel 1 Erstes Programm VO EinfProg., 2024W H.Hagenauer, FB Informatik 2 Erstes Programm public cl...

VO Einführung in die Programmierung Teil I WS 2024/25 H.Hagenauer FB Informatik Kapitel 1 Erstes Programm VO EinfProg., 2024W H.Hagenauer, FB Informatik 2 Erstes Programm public class Kreis{ public static void main(String[] args){ double radius, umfang, flaeche; Berechnung von final double PI = 3.14159; Umfang und Fläche eines System.out.println(); Kreises System.out.println("Radius bitte: "); radius = SavitchIn.readLineDouble(); Eingabe: Radius umfang = 2*PI*radius; flaeche = PI*radius*radius; System.out.println("Umfang = " + umfang); System.out.println("Flaeche = " + flaeche); System.out.println(); } } VO EinfProg., 2024W H.Hagenauer, FB Informatik 3 Schritte zum lauffähigen Programm 1. (Programm)Code mittels Editor eingeben 2. Programm speichern als Datei mit Namen Kreis.java (z.B. im Verzeichnis einfprog) 3. ins Verzeichnis einfprog wechseln C:\> cd einfprog 4. Datei Kreis.class erzeugen (Hinweis: Datei SavitchIn.java oder C:\einfprog> javac Kreis.java SavitchIn.class muss im selben Verzeichnis vorhanden sein!) 5. Programm ausführen („laufen C:\einfprog> java Kreis lassen“) (Hinweis: Eingaben mit return-Taste abschließen) VO EinfProg., 2024W H.Hagenauer, FB Informatik 4 Compiler – Java Bytecode Compiler: spezielles Programm zur Übersetzung von Quellcode in Bytecode Bytecode: Maschinencode (d.h. vom Prozessor lesbarer Code) für einen „virtuellen“ Prozessor (Maschine) – Java Virtual Maschine (JVM) Editor Editor erzeugt Quellcode →.java-Datei Kreis.java Java Compiler Compiler übersetzt (kompiliert, compile) den Quellcode in Java Bytecode →.class-Datei Kreis.class Virtuelle Maschine (= spezielles Programm), wird auf JVM realem Prozessor ausgeführt; Input: class-Datei – Output: Ergebnisse realer Prozessor VO EinfProg., 2024W H.Hagenauer, FB Informatik 5 Erstes Programm – genauer betrachtet Programmname public class Kreis{ Grundstruktur – immer nötig public static void main(String[] args){ Deklaration von double radius, umfang, flaeche; Variablen final double PI = 3.14159; Anweisungen System.out.println(); für Eingabe System.out.println("Radius bitte: "); radius = SavitchIn.readLineDouble(); Anweisungen für umfang = 2*PI*radius; „Berechnung“ flaeche = PI*radius*radius; Anweisungen System.out.println("Umfang = " + umfang); für Ausgabe System.out.println("Flaeche = " + flaeche); System.out.println(); } } VO EinfProg., 2024W H.Hagenauer, FB Informatik 6 Grundstruktur eines Java-Programms jedes Java-Programm ist eine Klasse (Details später) jedes Java-Programm hat einen Namen – dieser wird beim Programmieren vergeben Speicherung in Datei mit selbem Namen und Endung.java public class.....{ public static void main(String[] args){.....; jedes Java-Programm hat (vorläufig) eine.....; main-Methode (Details später).....; } die main-Methode enthält (Variablen-) Deklarationen und } Anweisungen, jeweils mittels ; abgeschlossen alle.....-Teile sind beim Programmieren entsprechend einzusetzen. Blöcke werden in Java mittels {…} gekennzeichnet. VO EinfProg., 2024W H.Hagenauer, FB Informatik 7 Verwendete Symbole Java-Programme bestehen aus Buchstaben, Ziffern, Satzzeichen, mathematischen Symbolen, Leerzeichen (blanks), Sonderzeichen. Daraus werden gebildet Namen (Bezeichner, identifer) bezeichnen z.B. Programmname, Variablen, Konstanten, Typen, Methoden, … bestehen aus: Buchstaben, Ziffern, _, $; erstes Zeichen darf keine Ziffer sein; Groß- und Kleinbuchstaben werden unterschieden! z.B.: Kreis radius x meinProg min Min m2n all_Numbers nicht erlaubt z.B.: 5ter my prog sbg-wien private VO EinfProg., 2024W H.Hagenauer, FB Informatik 8 Verwendete Symbole (2) Schlüsselwörter - reservierte Wörter sind spezielle Bezeichner, die Programmteile kennzeichnen, in Java fix definiert; dürfen nicht als eigene Namen verwendet werden! z.B.: public class static void if while private (Hinweis: komplette Liste siehe Literatur) Zahlen (dezimal) ganze Zahlen, z.B.: 5 815 1000000 Gleitkommazahlen, z.B. 3.14154 0.35 2.5 Hexadezimal-, Binärzahlen (siehe Literatur) VO EinfProg., 2024W H.Hagenauer, FB Informatik 9 Verwendete Symbole (3) Kommentare fügen Erläuterungen im Programmcode hinzu werden vom Compiler ignoriert → keine Auswirkungen auf Programmablauf 2 Arten von Kommentaren (in Java) Zeilenkommentar beginnt mit // double sum; //alle Ausgaben reicht bis zum Ende der Zeile Blockkommentar Programm berechnet Umfang, kann sich über mehrere Zeilen Flaeche eines Kreises. erstrecken Eingabe: Radius */ VO EinfProg., 2024W H.Hagenauer, FB Informatik 10 Kapitel 2 Einfache Programme: Variablen, Grundtypen, Algorithmus VO EinfProg., 2024W H.Hagenauer, FB Informatik 11 Variablen und deren Deklaration Variablen dienen zur Speicherung von Daten (z.B. Eingabewerte, (Zwischen-)Ergebnisse, …) Variablen sind „Behälter“ mit Namen (Bezeichner) und sie besitzen einen bestimmten Typ Variablen müssen vor ihrer ersten Verwendung deklariert werden, um  Typ und Name festzulegen  Speicherplatz zu reservieren Variable können immer nur einen Wert des vereinbarten Typs speichern Werte von Variablen sind änderbar - mittels Zuweisungen (assignments) VO EinfProg., 2024W H.Hagenauer, FB Informatik 12 Variablen und deren Deklaration (2) der Typ einer Variablen bestimmt welche Werte gespeichert werden können (keine Addition von Äpfel und Birnen!) – Compiler prüft dies – findet solche Fehler – erforderlicher Speicherplatz wird bereitgestellt, Codierung festgelegt double radius; // Variable radius vom Typ double int k, n; // Variablen k und n vom Typ int long grosseZahl; // Variable grosseZahl vom Typ long Variablendeklaration (vorerst): allgemeine Form type variable_1, variable_2,...; beliebiger beliebige Anzahl von primitiver Typ Variablenbezeichnern VO EinfProg., 2024W H.Hagenauer, FB Informatik 13 Primitive Typen von Java (vorläufig) Allgemein bestimmt ein (Daten-)Typ welche Werte eine Variable speichern kann – Wertebereich wird festgelegt. Java unterscheidet 2 Arten von Typen primitive Typen: einfache Werte wie Zahlen, Zeichen,... Klassentypen (siehe später) Folgende primitive Typen (Grundtypen, primitive types) werden vorerst verwendet (weitere später): Speicher- Typ bedarf Wertebereich int 4 Byte ganze Zahlen im Bereich -231... 231-1 long 8 Byte ganze Zahlen im Bereich -263... 263-1 double 8 Byte Gleitkommazahlen VO EinfProg., 2024W H.Hagenauer, FB Informatik 14 Zahltypen, Numerale Unveränderliche Zahlwerte werden mittels Numeralen direkt im Programm angegeben. Numerale für ganze Zahlen Folge von Ziffern ohne Blanks dazwischen optional kann ein Vorzeichen vorangestellt werden: - oder + (bei keinem Vorzeichen wird + angenommen) 1 4711 0 -25343 2879345 +55 VO EinfProg., 2024W H.Hagenauer, FB Informatik 15 Zahltypen, Numerale (2) Numerale für Gleitkommazahlen 1.0 //Dezimalpkt. nötig! Folge von Ziffern mit Dezimalpunkt 0.001 (verpflichtend!), welcher den -25.47 Nachkommaanteil kennzeichnet; 25000.0 Vorzeichen analog zu ganzen Zahlen alternative wissenschaftliche Notation (scientific notation): E oder e zur 1E0 1e-3 Kennzeichnung eines Exponenten zur Basis 10 -2.547e1 2.5E4 2e3 bedeutet 2·10 3 Exponenten sind ganze Zahlen, optional mit Vorzeichen Beachte: 18 und 18.0 sind mathematisch gleiche Werte – jedoch verschiedene Typen! VO EinfProg., 2024W H.Hagenauer, FB Informatik 16 Arithmetische Ausdrücke und Operatoren Arithmetische Ausdrücke (expressions) berechnen mit Hilfe von Operatoren einen numerischen Wert aus Variablen und Konstanten binäre (zweistellige) Operatoren für Grundrechnungsarten: + - * / (Additon, Subtraktion, Multiplikation, Division)  es gelten die bekannten Vorrangregeln der Mathematik (d.h. Punktrechnung (*, /) vor Strichrechnung (+, -) bzw. anders ausgedrückt: *, / haben höhere Priorität als +, - )  Klammern (nur runde () ) heben die Vorrangregeln auf  gleichrangige Operatoren werden von links nach rechts ausgewertet (links- assoziativ) 3 + 5 * 2 // Erg: 13 (3 + 5) * 2 // Erg: 16 siehe Programm: 3 + (5 * 2) // Erg: 13 ArithmAusdruck 3 - 5 + 2 – 4 // Erg: -4 3 - (5 + (2 – 4)) // Erg: 0 VO EinfProg., 2024W H.Hagenauer, FB Informatik 17 Arithmetische Ausdrücke und Operatoren (2) unäre (einstellige) Operatoren für Vorzeichen: + – 5 + -2 // Erg: 3  beziehen sich sich auf nur einen -5 + 2 // Erg: -3 Operanden -(5 + 2) // Erg: -7  binden stärker (höhere Priorität) als obige binäre Opertoren ganzzahlige Division  gilt dann, wenn beide Operanden integer-Typen sind 5 / 3 // Erg: 1 23 / 5 // Erg: 4  Ergebnis ist ganzzahlig (ganzzahliger 5 / 10 // Erg: 0 Anteil des Quotienten) -7 / 3 // Erg: -2  Nachkommastellen werden abgeschnitten – kein runden! VO EinfProg., 2024W H.Hagenauer, FB Informatik 18 Arithmetische Ausdrücke und Operatoren (3) Modulus- oder %-Operator: %  berechnet den Rest bei Division  binärer Operator, vor allem für 5 % 3 // Erg: 2 integer-Typen 12 % 2 // Erg: 0  selbe Priorität wie Multiplikation und -5 % 3 // Erg: -2 Division 7 – 15 % 4 // Erg: 4  Zusammenhang mit ganzzahliger Division: a % b = a – (a/b) * b VO EinfProg., 2024W H.Hagenauer, FB Informatik 19 Zuweisungen (assignments) Zuweisungen speichern einen (berechneten) Wert in einer Variablen allgemeine Form variable = expression; zu berechnender Ausdruck Zuweisungsoperator Vorgangsweise: 1. Ausdruck auf rechter Seite wird ausgewertet 2. Wert wird der Variablen auf der umfang = 2 * PI * radius; linken Seite zugewiesen int n; double x; n = 11; Dabei ist zu beachten n = n + 1; bisheriger Wert der Variablen wird x = 15.1; überschrieben n = n*n + 5; //n: 149 x = x * 1.8 + 32.0 //x: 59.18 dies ist keine mathematische Gleichung! VO EinfProg., 2024W H.Hagenauer, FB Informatik 20 Zuweisungen - Zuweisungskompatibilität Zuweisungen sind nur dann möglich, wenn die Typen auf beiden Seiten einer Zuweisung die Zuweisungskompatibilität (assignment compatibility) erfüllen: Typ der linken und rechten Seite ist gleich oder (bei primitiven Typen) Typ der rechten Seite kann einer Variablen zugewiesen werden, dessen Typ in folgender Liste weiter rechts steht byte → short → int → long → float → double int n; double x; n = 11; n = 4.27; //nicht erlaubt!! x = 2 * n + 1; siehe Programme: n = x – 0.5; //nicht erlaubt!! WertTausch,Zuweisung VO EinfProg., 2024W H.Hagenauer, FB Informatik 21 Initialisierung von Variablen Initialisierung von Variablen Variablen können (und sollen!) bei der Deklaration initialisiert werden – d.h. sie erhalten einen Anfangswert Variablen können erst verwendet (gelesen) werden, nachdem sie einen Wert bekommen haben! Kombination von Deklaration mit Zuweisung → Initialisierung – gehört zu gutem Programmierstil! int sum = 0; int k = 3, n = 5 + k; double x = 2.75; double y = x * x – 2 * x + 3; int eins = 2, zwei; //nur eins initialisiert VO EinfProg., 2024W H.Hagenauer, FB Informatik 22 Konstantendeklaration Um einem bestimmten Wert einen Namen geben zu können, erlaubt Java die Deklaration von benannten Konstanten (named constants): Kennzeichnung durch reservierten Bezeichner final entspricht initialisierter Variablen, deren Wert nicht mehr verändert werden kann Wert wird an einer Stelle festgelegt und kann beliebig oft verwendet werden → guter Programmierstil, Programm einfacher änderbar Bezeichner aus Großbuchstaben (lt. Konvention) allgemeine Form final type variable = expression; final double PI = 3.14154; beliebiger Typ final double STEUERSATZ = 20.0; final int MAX_VERSUCHE = 3; VO EinfProg., 2024W H.Hagenauer, FB Informatik 23 Syntax, Semantik Ähnlich einer natürlichen Sprache benötigt auch eine Programmiersprache Regeln und Beschreibungen um korrekte Programme erstellen und erkennen zu können. Syntax Regelwerk für den korrekten Aufbau von Programmen oder Programmteilen die Menge aller Syntaxregeln einer Programmiersprache wird Grammatik genannt z.B. eine Zuweisung besteht aus einer Variablen, einem Zuweisungsoperator und einem Ausdruck, hat also die Form variable = expression; VO EinfProg., 2024W H.Hagenauer, FB Informatik 24 Syntax, Semantik (2) Semantik gibt die Bedeutung von syntaktisch richtigen Programmteilen an, d.h. sie beschreibt die Wirkung bei der Ausführung z.B. lautet die Semantik einer Zuweisung: berechne den Ausdruck auf der rechten Seite des Zuweisungsoperators und weise das Ergebnis der Variablen zu VO EinfProg., 2024W H.Hagenauer, FB Informatik 25 Einfache Ein-/Ausgabe Ausgabe Verwendung der Standardausgabe von Java, z.B.  inkl. Zeilenumbruch: System.out.println(argument);  ohne Zeilenumbruch: System.out.print(argument); argument besteht (vorläufig) aus Zeichenketten (Strings) und Variablen (Details später):  Strings werden gekennzeichnet durch “...“  Wert einer Variablen wird in einen String umgewandelt  Konkatenation (Verknüpfung) von Strings und Variablenwerte mittels dem speziellen Operator + System.out.println(“Bitte Radius eingeben:“); System.out.println(“Umfang = “ + umfang); System.out.println(“x: “ + x + “ n: “ + n); System.out.print(“Ergebnis: “ + x); //kein Zeilenumbruch System.out.println(); //nur Zeilenumbruch VO EinfProg., 2024W H.Hagenauer, FB Informatik 26 Einfache Ein-/Ausgabe (2) Eingabe mittels SavitchIn benötigt wird die Datei SavitchIn.class (oder.java) im selben Verzeichnis enthält verschiedene Methoden für die Eingabe spezifischer Typen, jeweils ein Wert pro Zeile: SavitchIn.readLineInt() → int-Wert einlesen SavitchIn.readLineDouble() → double-Wert einlesen SavitchIn.readLine() → String einlesen eingegebener Wert muss einer Variablen mit passendem Typ zugewiesen werden Eingabe mittels der Klasse Scanner Scanner ist im Java-System enthalten etwas komplizierter für einfache Programme Verwendung siehe Programm KreisMitScanner VO EinfProg., 2024W H.Hagenauer, FB Informatik 27 Problem - Algorithmus - Programm Programme geben Schritt für Schritt ein Lösungsverfahren an – sie beruhen auf einem oder mehreren Algorithmen (algorithms). Eine kompakte Definition für Algorithmus lautet: schrittweises, präzises Verfahren zur Lösung eines Problems. D.h. ein Algorithmus legt eine eindeutige und vollständige Folge von (elementaren) Operationen zur Lösung eines Problems fest. Algorithmen existieren in verschiedenen Formen, z.B. natürliche Sprache (Kochrezept, Wegbeschreibung), graphisch (Anleitung um Möbel selbst zusammen zu bauen), Pseudocode, Mischformen,... Informatik: präzise Algorithmen entstehen durch schrittweise Verfeinerung (d.h. immer mehr Details werden beachtet) Programmierung heißt: Algorithmus in Programmiersprache umsetzen; dazu nötig: algorithmisches Denken (mittels Übung zu erlernen!) VO EinfProg., 2024W H.Hagenauer, FB Informatik 28 Problem - Algorithmus – Programm (2) Problem genaue Beschreibung des Problems, was wird gesucht? Basis für erste Lösungsidee Spezifikation Lösungsidee wird verfeinert, es entsteht ein Lösungsverfahren - Algorithmus Algorithmus Programmierung Programm Algorithmus wird in Programm umgesetzt – erfordert kreative Ingenieurtätigkeit VO EinfProg., 2024W H.Hagenauer, FB Informatik 29 Fallbeispiel Wechselgeld Problem: verschiedene Automaten (für Getränke, Fahrkarten,...) geben Wechselgeld zurück. Es ist zu einem bestimmten Betrag die erforderliche Menge an Münzen zu bestimmen. Spezifikation: Das Programm berechnet die Art und Anzahl der benötigten Euro- und Centmünzen. Die Gesamtanzahl soll möglichst gering sein. Eingabe: Betrag des Wechselgelds in Euro in üblicher Form (z.B. 3.75). Ausgabe: ursprünglicher Betrag gemeinsam mit Art der Münzen und deren jeweiliger Anzahl um diesen Betrag darzustellen. Lösungsidee (erste Variante): Variable um Betrag zu speichern Variablen um Anzahl der einzelnen Münzen zu speichern Berechnung der Anzahl einer Münzart: Betrag / Münzwert VO EinfProg., 2024W H.Hagenauer, FB Informatik 30 Fallbeispiel Wechselgeld (2) Algorithmus (Pseudocode, Version 1): * eingegebenen Betrag in Variable betrag speichern * Anzahl der 2-Euro Münzen berechnen und in zweiE speichern * restlichen Betrag in betrag speichern * Anzahl der 1-Euro Münzen für restlichen Betrag berechnen und in einE speichern * restlichen Betrag in betrag speichern * obige 2 Schritte für jede fehlende Münzart durchführen, wobei immer die größte verbleibende herangezogen wird (→ Münzanzahl minimieren!) * Originalbetrag und Anzahl der Münzarten ausgeben Zu bedenken: Variable betrag : Wert in Euro oder Cent? → Wert in Cent, ganzzahlig (exakte Ergebnisse, meist schneller) Originalbetrag ist am Ende auszugeben, jedoch laufende Änderung! → zwei Variablen: betragEuro für eingegebenen Eurowert, betragCent für sich ändernden Centwert VO EinfProg., 2024W H.Hagenauer, FB Informatik 31 Fallbeispiel Wechselgeld (3) Algorithmus (Pseudocode, Version 2): * eingegebenen Betrag in Variable betragEuro speichern * Betrag in Cent umwandeln int betragCent = betragEuro * 100; * Anzahl der 2-Euro Münzen berechnen und in zweiE speichern * restlichen Betrag in betragCent speichern * Anzahl der 1-Euro Münzen für restlichen Betrag berechnen und in einE speichern * restlichen Betrag in betragCent speichern * obige 2 Schritte für jede fehlende Münzart durchführen, wobei immer die größte verbleibende herangezogen wird (→ Münzanzahl minimieren!) * Originalbetrag und Anzahl der Münzarten ausgeben VO EinfProg., 2024W H.Hagenauer, FB Informatik 32 Kapitel 3 if-Anweisung, while-Schleife, Methoden – erste Motivation VO EinfProg., 2024W H.Hagenauer, FB Informatik 33 if-Anweisung, Verzweigung (vorläufig) Bisherige Programme: lineare Anweisungsfolgen (flow of control), d.h. Anweisungen wurden nacheinander ausgeführt. Jedoch ist es oft nötig, Anweisungen nur auszuführen, wenn bestimmte Bedingungen erfüllt sind. Bsp.: was ist der maximale Wert von 2 Variablen? Lösung (Algorithmus): Zahlen a, b und Maximum max ; wenn a größer oder gleich als b dann max = a; sonst max = b; a >= b a < b int a, b, max; Flussdia- gramm max = a max = b if (a >= b) max = a; else max = b; VO EinfProg., 2024W H.Hagenauer, FB Informatik 34 if-Anweisung, Verzweigung (2) Eine if-Anweisung (Verzweigung, bedingte Anweisung, if-statement) prüft eine Bedingung. Abhängig davon ob die Bedingung wahr (true) oder falsch (false) ist, werden verschiedene Anweisungen ausgeführt. allgemeine Form Boolescher Ausdruck: res. Wort: if if (boolean_expression) wahr oder falsch (bzw. statement_1 trifft zu oder trifft nicht else zu) res. Wort: else statement_2 Semantik einer if-Aweisung: ergibt die Auswertung des Booleschen Ausdrucks wahr (true), wird statement_1 ausgeführt sonst alternativ statement_2. Bsp. siehe Programme Maximum und Muenzwurf. VO EinfProg., 2024W H.Hagenauer, FB Informatik 35 if-Anweisung, Verzweigung (3) if (a >= b){ Anstelle einer einzelnen max = a; Anweisung in einer Alternative System.out.println(“Max. in a“); kann ein Anweisungsblock } verwendet werden – else { Kennzeichnung mittels {...} max = b; System.out.println(“Max. in b“); } Sowohl einzelne Anweisungen als auch Blöcke sind einzurücken → bessere Lesbarkeit x < 0 x >= 0 Der else-Zweig kann auch x = -x; weggelassen werden. if (x < 0){ anz = anz +1; x = -x; anz = anz + 1; } VO EinfProg., 2024W H.Hagenauer, FB Informatik 36 Vergleichsoperatoren und Boolesche Werte Ergebnis eines Vergleichs ist true oder false – einfache Form eines Booleschen Ausdrucks (boolean expression) für Vergleiche werden Vergleichsoperatoren (comparison operators) verwendet Vergleichsoperatoren binden schwächer (geringere Priorität) als arithmetische Operatoren Operator Bedeutung int a = 3, b = 5; == gleich != a == 3 //Erg: true ungleich b != a + 1 //Erg: true > größer a > b //Erg: false >= größer oder gleich a >= b – 2 //Erg: true < kleiner b < 5 //Erg: false max) max = a[i]; bestimmten Wert in einem Array suchen  mit letzter Position beginnen  wenn Wert gefunden, Suche abbrechen und Position merken  wenn Position < 0 erreicht, int gesucht =...; dann Wert nicht gefunden! int pos = a.length - 1; while (pos >= 0 && a[pos] != gesucht) pos--; (siehe Prog. TypischArray ) //nach Schleife: pos == -1 // => nicht gefunden // sonst gefunden an Position pos VO EinfProg., 2024W H.Hagenauer, FB Informatik 105 Mehrdimensionale Arrays Die Arrayelemente können wieder Arrays sein, d.h. ein Array von Arrays (oder zweidimensionale Tabelle bzw. Matrix) – ein zweidimensionales Array. Analog zu einer Matrix kann auch von Zeilen und Spalten gesprochen werden: 2-dimensionales Array ist ein Array aus Zeilen, jede Zeile hat Spaltenelemente. //Deklaration a int[][] a; //Erzeugung a a = new int; a //Elementzugriff m = a; a a[i][k] = k + i; VO EinfProg., 2024W H.Hagenauer, FB Informatik 106 Mehrdimensionale Arrays (2) zum Durchlauf werden geschachtelte Schleifen benötigt – z.B. jedem Element die Summe seiner Indizes zuweisen for (int zeile = 0; zeile < a.length; zeile++) for (int spalte = 0; spalte < a[zeile].length; spalte++) a[zeile][spalte] = zeile + spalte; (Siehe Prog. ZweiDimArray ) Zeilen können unterschiedliche int[][] v = new int[]; Längen aufweisen v = new int; v = new int; auch mehr als 2-dimensionale int[][][] h = new int; Arrays möglich: Deklaration, Erzeugung, Zugriff analog VO EinfProg., 2024W H.Hagenauer, FB Informatik 107 for-each-Schleife Oft ist das gesamte Array zu durchlaufen, um alle Werte für eine weitere Verarbeitung zu lesen. Java bietet dazu eine kompakte Form der for-Schleife, die sogenannte for-each-Schleife (enhanced for) an: erlaubt sequenziellen Durchlauf aller Elemente, beginnend bei erstem Zugriff auf Elemente nur lesend – d.h. Array wird nicht verändert (wenn Elemente von primitiven Typen)! kann nur ein Array durchlaufen (nicht zwei Arrays parallel!)  bei jedem Schleifendurchlauf wird der Variablen el der Wert int[] a =...; des nächsten Arrayelements for(int el: a) zugewiesen System.out.print(el + " ");  Typ der el Variablen muss dem Elementtyp des Arrays entsprechen (Siehe Prog. ForEach-Demo ) VO EinfProg., 2024W H.Hagenauer, FB Informatik 108 Beispiel: Sortieren Problem: eine Menge von Werten ist nach einem bestimmten Kriterium zu sortieren – klassische Aufgabe der Informatik! Beschränkung hier: int-Werte aufsteigend sortieren. Spezifikation etwas genauer: ein int-Array werte mit beliebigen Werten ist aufsteigend zu sortieren, d.h. die Elemente sind so umzustellen, dass für alle i mit 0

Use Quizgecko on...
Browser
Browser