Programmiersprachen Einführung in C

Ähnliche Dokumente
6. Bearbeitung von Strings in C Bearbeitung von Strings in C

2. Programmierung in C

Einstieg in die Informatik mit Java

Inhalt. Peter Sobe 63. Felder in C

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Dr. Monika Meiler. Inhalt

Lösung Übungszettel 6 Aufgabe 1-4

Übungspaket 23 Mehrdimensionale Arrays

Programmiersprachen Einführung in C

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Einstieg in die Informatik mit Java

Kapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Elementare Datentypen in C++

Wiederholung C-Programmierung

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

C/C++-Programmierung

C für Java-Programmierer

Einführung in die C-Programmierung

Zusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct

Deklarationen in C. Prof. Dr. Margarita Esponda

GI Vektoren

Strukturierte Datentypen und Funktionszeiger

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Erste Schritte der Programmierung in C

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

Inhalt. 4.7 Funktionen

Einführung in die Programmiersprache C

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff

Zusammenfassung des Handzettels für Programmieren in C

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

1. Übung zu "Numerik partieller Differentialgleichungen"

Kurze Einführung in die Programmiersprache C++ und in Root

Propädeutikum zur Programmierung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Programmierung

+ C - Array (Vektoren, Felder)

Die Programmiersprache C99: Zusammenfassung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Algorithmen und Datenstrukturen

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Programmierung mit C Felder; Array

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Informationsverarbeitung im Bauwesen

C++-Zusammenfassung. H. Schaudt. August 18, 2005

1 Vom Problem zum Programm

Dr. Monika Meiler. Inhalt

"Einführung in die Programmierung" Krefeld, den 24. September 2013

Hochschule München, FK 03 FA SS Ingenieurinformatik

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Grundlagen der Programmiersprache C++

Objektorientiertes Programmieren für Ingenieure

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

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

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Repetitorium Informatik (Java)

4 Kontrollfluss-Diagramme

Zeiger: Der Adressoperator &

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

INE1 Mehr zu Funktionen Ausserdem: Strings (Saiten) Call by value, struct's Call by reference Array Parameter Strings und Stringfunktionen

Programmierung in C. Grundlagen. Stefan Kallerhoff

Mehr zu Datentypen: Felder, Zeiger und Strukturen

Einstieg in die Informatik mit Java

Informatik Repetitorium SS Volker Jaedicke

Programmierung mit C Zeiger

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

2. Semester, 2. Prüfung, Lösung

Klassen mit Instanzmethoden

Arrays Fortgeschrittene Verwendung

Algorithmen und Programmierung II

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Modellierung und Programmierung 1

Die Programmiersprache C Eine Einführung

C als erste Programmiersprache

C kompakt für Java-Programmierer

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Gliederung Programmiersprachen. Programmiersprachen Einführung in C. Kontrollstrukturen. Verzweigung mit IF. Beispiel: Zahlenklassifizieren

Prof. W. Henrich Seite 1

Objektorientierte Programmierung OOP Programmieren mit Java

Transkript:

Programmiersprachen Einführung in C Teil 8: Felder und Zeichenketten Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in C 4. Bildschirm Ein-/Ausgabe 5. Kontrollstrukturen 6. Funktionen 7. Programmierstil, Programmierrichtlinien 8. 9. Ausdrücke 10. Arbeiten mit Dateien 11. Strukturen, Aufzählungstypen 12. Zeiger 13. Enums, Strukturen und Unions 14. Speicherklassen 15. Optional: Vertiefung einiger Themen 2 1

Felder und Zeichenketten Beispiele aus der Mathematik Vektoren : a = (1, 2, 3, 4, 5, 6, 7) u.ä. Matrizen : ( 0 1 2 ) (Reihen- und Spaltenlauf!) ( 3 4 5 ) ( 6 7 8 ) Sonstige Beispiele Ordner Nr. 10 Telefonkurzwahlnummer 5 Kontonummer #0815 Wartenummer 12 Personalstammdatensatz #4711 Gemeinsamkeit: Basisdatentyp + Zugriff über (numerischen) Index Basisdatentyp, z.b. int, double, unsigned, etc., aber auch (später) Konto, Ordner, etc. 3 Vektoren in C/C++ int vector [5] ; beschreibt homogene Datenstruktur mit 5 Komponenten vector [0], vector [1], vector [2], vector [3], vector [4] Zählbeginn immer bei Komponenten-Nr. 0 Bezeichner der gesamten Struktur ist vector Datentyp der Komponenten ist int 123456 sequentielle Speicherung 788889888888888888888 mit Vorbesetzung int vector[5] = 1, 2, 3, 4, 5 ; int vec2[5] = 1, 2, 3; // Fehlende Einträge werden mit 0 initialisiert! mit impliziter Dimensionierung abhängig von Vorbesetzung int vector [ ] = 1, 2, 3, 4, 5 ; 4 2

Matrixdeklarationen / -definitionen Matrix (3 X 4), d.h. 3 Reihen (Zeilen), 4 Spalten double matrix [3][4]; double matrix [3][4] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; double matrix [ ][4] = 1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12; Gruppierung wesentlich bei automatischer Dimensionierung beliebig viele Dimensionen möglich (je nach Ressourcen) Zugriff auf Feldelemente durch vollständige Indizierung erstes Element : matrix [0][0] letztes Element: matrix [2][3] // Achtung: Feldindizierung beginnt bei 0,0! mit Hilfe von Zeigern............................ (etwas später) 5 Übung: Suche nach einem Feldelement Schreiben Sie ein Programm, das folgendes leistet: Hauptprogramm Definition eines 1-dim. Feldes [10] von double-werten Eingabe der Feldelemente Eingabe einer Variable gleichen Typs (Vergleichswert) Unterprogramm Vergleich des Vergleichswertes mit den Feldelementen Rückgabe des Index des Feldelementes, das betragsmäßig den kleinsten Abstand zum Vergleichswert besitzt. (schreiben Sie für die Berechnung des Betrags des Abstands eine Funktion abs) Die aufrufende Funktion (Hauptprogramm) gibt das Feldelement, das zu dem Rückgabe-Index gehört, aus 6 3

Programm MinDist Bestimmung des Feldelementes mit dem kleinsten Betragsabstand zu einem Vergleichswert #include<stdio.h> const int AnzElemente=10; // Anzahl Feldelemente double abs(double x) // Bestimmung des Betrags return (x > 0)? x : -x; int mindist(double feld[], int AnzElemente, double v_wert) // bestimmt das Feldelement mit der min. Distanz zu einem Vergleichswert int i, MinInd; double Min, dist; MinInd = 0; Min = abs(feld[0]- v_wert); // Vorbesetzung Distanzminimalwert for (i=1; i<anzelemente; i++) dist = abs (feld[i] - v_wert); if (dist < Min) Min = dist; // neue Minimaldistanz MinInd = i; // diesen Index merken return MinInd; 7 Programm MinDist (Hauptprogramm) void main (void) double feld[anzelemente], vergl_wert; int i,index; printf("\neingabe der Feldelemente\n"); for (i=0;i<anzelemente;i++) printf("double-element [%d]: ",i); scanf("%lf", &feld[i]); printf("\neingabe des Vergleichswerts: "); scanf("%lf", &vergl_wert); Index = mindist(feld, AnzElemente, vergl_wert); printf("\n\ndie minimale Distanz zwischen Vergleichswert %f und den Feldelementen\n", vergl_wert); printf("betraegt: %f. Das naechste Feldelement befindet sich unter Index %d\n", abs(feld[index]-vergl_wert), Index); printf("und hat den Wert %f\n", feld[index]); // Programmende 8 4

Felder als Aktualparameter Übergabe der Feldadresse - nicht Kopie des Feldes als Wertparameter void incr_elems (int feld [10]) int i; for ( i = 0; i < 10; i++) feld[i] = feld[i] + 1; Aufruf mit Feldvariable a_feld: int a_feld[10] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;... for (i = 0; i< 10; i++) printf("%d ", a_feld[i]); ---> 0 1 2 3 4 5 6 7 8 9 incr_elems(a_feld); for (i = 0; i< 10; i++) printf("%d ", a_feld[i]); ---> 1 2 3 4 5 6 7 8 9 10 Implizite Behandlung als Referenz-Parameter: Übergabe der Adresse, Dereferenzieren bei Zugriff auf Komponenten 9 Zeichenketten in C/C++ Zeichenketten sind Felder vom Typ char 1 in C kein extra string-datentyp 1 in C++ sehr flexible Klasse 'string', die vielfältige String-Objekte ermöglicht Zeichenketten in C / C++ sind null-terminiert! #include <stdio.h> void main () char w [20]; w [0] = s ; w [1] = t ; w [2] = r ; w [3] = i ; w [4] = n ; w [5] = g ; 12345673891 char w[20] = "string" string"; w [6] = \0 ; // Endekriterium für String-Funktionen printf(w); // Ausgabe des Wortes 'string' 10 5

Zeichenkettenfunktionen sind beispielsweise... #include <string.h> strlen - ermittelt die Länge einer Zeichenkette 1 a = strlen (w) // Anzahl der Zeichen vor dem abschl. Null-Zeichen, jedoch ohne dieses selbst! strcpy - kopiert eine Zeichenkette 1 strcpy (ziel_zk, quell_zk) // entspricht ziel_zk = quell_zk strcat - hängt eine Zeichenkette an eine bestehende an (Konkatenation) 1 strcat (ziel_zk, quell_zk) // entspricht ziel_zk = ziel_zk + quell_zk strcmp - vergleicht zwei Zeichenketten 1 if (strcmp (zk1, zk2) > 0)... 1 liefert... -1, wenn zk1 < zk2 0, wenn zk1 == zk2 +1, wenn zk1 > zk2 11 Beispielprogramm 'Zeichenkettenoperationen' #include <string.h> #include <stdio.h> void main( void ) char string[80]; strcpy( string, "Hello world from " ); strcat( string, "strcpy " ); strcat( string, "and " ); strcat( string, "strcat!" ); printf( "String = %s\n", string ); Output: String = Hello world from strcpy and strcat! 12 6

Aufgaben Deklarieren Sie einen Vektor mit 20 Gleitpunkt-Komponenten initialisieren Sie die ersten 5 Komponenten bei der Definition weisen sie den nächsten 5 Komponenten im Programm-Rumpf einen Wert zu Deklarieren sie ein Feld in Form einer Matrix mit zwei Dimensionen initialisieren sie es als obere Dreiecksmatrix Weisen Sie drei Matrixkomponenten einen Wert zu Definieren Sie eine String-/Zeichenkettenvariable, die 25 Zeichen aufnehmen kann Initialisieren Sie die Variable mit Ihrem Rufnamen konkatenieren Sie Ihren Familiennamen Löschen Sie den ganzen String auf adäquate Weise 13 7