1. Definition. 2. Interne Speicherung der Zeichenketten. 3. Vereinbarung von Zeichenketten

Ähnliche Dokumente
Programmieren in C++ Arrays, Strings und Zeigerarithmetik

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

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

Modellierung und Programmierung 1

ubasic Port für STM32F4 von Uwe Becker

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

Zugriff auf die Modul-EEPROMs

Java Kurs für Anfänger Einheit 5 Methoden

C/C++-Programmierung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

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

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

Zusammenfassung des Handzettels für Programmieren in C

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Deklarationen in C. Prof. Dr. Margarita Esponda

Objektorientiertes Programmieren für Ingenieure

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

2 Einfache Rechnungen

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

Die Programmiersprache C

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

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

int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) {

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

Eine Einführung in C-Funktionen

Programmieren was ist das genau?

VisualBasic - Variablen

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows

Dr. Monika Meiler. Inhalt

12. ArcView-Anwendertreffen Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?

Funktionen in PHP 1/7

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

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Modul 122 VBA Scribt.docx

1 Vom Problem zum Programm

Java-Vorkurs Wintersemester 15/16

C-Programmierung unter TOS ATARI ST

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

3 Variablen. 3.1 Allgemeines. 3.2 Definition und Verwendung von Variablen

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

Informationsverarbeitung im Bauwesen

Native Zeichenketten (C-Strings)

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Lua - Erste Schritte in der Programmierung

Informationsverarbeitung

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

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

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Einführung in die Programmiersprache C

Fakultät Angewandte Informatik Lehrprofessur für Informatik

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

Unterprogramme, Pointer und die Übergabe von Arrays

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Software Engineering Klassendiagramme Einführung

1 Polymorphie (Vielgestaltigkeit)

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage

12.5 Sicherer Programmcode

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

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

Einführung in VisualBasic for Applications. Stefan Mahlitz

Übung 1: String-Klasse

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

Oracle 10g Einführung

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Java Einführung Abstrakte Klassen und Interfaces

8a. Exkurs.NET. 8a.1.NET Architektur

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Lösungsvorschlag zur 9. Übung

entweder: zeilenweise fgets() oder: zeichenweise fgetc()

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Javakurs für Anfänger

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Dr. Monika Meiler. Inhalt

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries

Microsoft Access 2010 Bilder

C-Kurs 2011: Arrays, Strings, Pointer. Ohne Pointer geht nichts. Willkommen zum dritten Tag des C-Kurses.

1 Einführung Erste Schritte Programmierkurs Datentypen Weiterführende Programmierung

Programmieren I - ANSI C

3 Objektorientierte Konzepte in Java

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P)

E-PRIME TUTORIUM Die Programmiersprache BASIC

Programmierkurs: Delphi: Einstieg

Einführung in die Informatik 1

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

Einführung in die C-Programmierung

Datentypen: Enum, Array, Struct, Union

Klausur in Programmieren

Objektorientierte Programmierung OOP Programmieren mit Java

Primitive Datentypen

Übungspaket 19 Programmieren eigener Funktionen

Objektorientierte Programmierung

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg Universitätsstraße 31, Regensburg

Python Programmieren. Variablen, Ausdrücke und Anweisungen

Programmieren in C Einführung

Grundlagen der Programmiersprache C++

Transkript:

1. Definition Eine Zeichenkette (String) ist eine Aufeinanderfolge von darstellbaren Zeichen, die sequentiell im Speicher angeordnet sind und gemeinsam angesprochen werden. Jedes einzelne Zeichen wird entweder durch ein Byte oder ein Wort codiert dargestellt. Strings haben immer eine aktuelle Länge, die den gerade gespeicherten Zeichen entsprechen und eine maximale Länge. Die interne Speicherung ist von Programmiersprache zu Programmiersprache verschieden. 2. Interne Speicherung der Zeichenketten In Visual Basic wird die Länge des Strings mitgespeichert. Die maximale Länge ist auf ca. 65000 Zeichen begrenzt (16-Bit Version). Die Maximallänge muss nicht angegeben werden, da sich Visual Basic immer den benötigten Speicherplatz nimmt. In C/C++ wird eine Zeichenkette mit \0 abgeschlossen. Die Länge muss bei Bedarf immer wieder neu ermittelt werden, ist jedoch "unbegrenzt". Es gibt keinen eigenen Typ, daher werden Strings immer mittels eines Zeichenarrays (char-array) verwirklicht. In C++ gibt es innerhalb von Klassenbibliotheken (z.b. MFC) einen eigenen Typ für Strings, bei dem C++ den benötigten Speicherplatz an die Länge anpaßt. In JAVA gibt es einen eigenen Typ für Strings, bei dem JAVA den benötigten Speicherplatz an die Länge anpaßt. In Cobol ist eine Zeichenkette eine Aneinanderreihung von alphanumerischen Zeichen. Der Text wird immer linksbündig eingefügt, wobei die überstehenden Stellen abgeschnitten werden. Ist der String kleiner als die vereinbarte Anzahl, wird der Rest mit Blanks aufgefüllt. 3. Vereinbarung von Zeichenketten Es gibt zwei Möglichkeiten zur Vereinbarungen, nämlich explizit und implizit. Die Variable muss vor ihrer Verwendung nicht vereinbart werden. Um sie eindeutig als String auszuweisen, muss nach dem Namen ein $ angefügt werden (Text$ = "HALLO"), sonst ist die Variable vom Datentyp Variant. Um bei der Verwendung nicht $ schreiben zu müssen, kann man die Variable explizit vereinbaren (z.b. Dim oder Static). Dim Text As String Auch hier kann bei der Vereinbarung eine fixe Länge angegeben werden, wobei der Rest

mit Blanks aufgefüllt wird. Dim Text As String * 25 'String mit 25 Zeichen wird vereinbart In C/C++ muss immer eine Längenangabe angegeben werden, wobei diese um 1 zu erhöhen ist, um die abschließende \0 speichern zu können. char Text[26]; // String mit 25 Zeichen wird vereinbart (\0!!) In C++/MFC gibt es eigens für Zeichenketten, den Typ CString. Die Länge muss nicht angegeben werden. CString Text; Es gibt jedoch eine um einiges einfachere Methode einen String anzulegen, ähnlich der in C++. String Text; Auch in JAVA kann der String gleich bei der Vereinbarung initialisiert werden. String s2 = "Karl"; In Cobol erfolgt die Vereinbarung in der Data Division. 77 Text PIC X(25). Der String kann auch gleich bei der Vereinbarung initialisiert werden. 77 Text PIC X(25) value "Hallo". 4. Belegung von Zeichenketten Bei einem String ohne fixer Länge braucht sich der Programmierer nicht um die Länge kümmern, da Visual Basic die Länge des Strings automatisch anpaßt. Bei einem String mit fixer Länge werden die Zeichen abgeschnitten, falls der String länger als vereinbart ist. Text = "Hallo" Text = Text2 In C/C++ können Zeichenketten nicht direkt in Zuweisungen verwendet werden, sondern

nur mit sprintf, strcpy und strncpy. sprintf(text,"%s","hallo"); // sprintf wird jedoch normalerweise nur zu Typenkonvertierung verwendet. sprintf(text,"%s",text2); strcpy(text,"hallo"); // üblichere Methode zum kopieren eines Strings strcpy(text,text2); // Inhalt von Text2 nach Text Bei strncpy werden nur ein n-anzahl von Zeichen kopiert, die Funktion hängt zum Unterschied von strcpy nicht immer \0 an den String. Die \0 muss daher vom Programmierer selbst nach dem strncpy angehängt werden. strncpy(text,text2, 3); // 3 Zeichen von Text2 werden nach Text kopiert Text[3] = '\0'; // am Ende des Textes wird die '\0' angehängt Der Programmierer muss selber darauf achten, dass der Zielstring genügend gross ist, da sonst der dahinterliegende Speicherplatz überschrieben wird. In C++/MFC können Zeichenketten, die vom Typ CString sind, auch direkt in Zuweisungen verwendet werden. Text = "Hallo"; Text = Text2; Bei einer Zeichenkette die mit dem Befehl String definiert wurde, braucht sich der Programmierer nicht um die Länge des String zu kümmern, da die Länge des Strings automatisch angepaßt wird. Text = "Hallo"; Text = Text2; Hier erfolgt die Wertzuweisung mit dem Befehl move. move "Hallo" to Text. move Text2 to Text. 5. Ein-/Ausgabe von Zeichenketten Die Eingabe erfolgt mittels Steuerelement (Textfeld, Listbox,...), während die Ausgabe zusätzlich noch mit der Methode print erfolgen kann.

Print Text In C erfolgt die Eingabe mittel gets und scanf. Bei gets wird bis zum Zeilenende gelesen, und es können keine Formatierungen vorgenommen werden, bei scanf schon. Bei einer Eingabe von Blanks und Tabulator speichert gets sie im String, scanf bricht bei dem ersten Blank oder Tabulator ab. In C++ hat man zusätzlich noch die Funktion cin, bei der auch beim ersten Whitespace Zeichen abgebrochen wird, und keine Formatierung vorgenommen werden können. gets (Text); scanf ("%s",text); cin >> Text; Die Ausgabe erfolgt mittels den Funktionen puts, printf und in C++ zusätzlich noch mit cout. Während die Funktionen puts und cout keine Formatierung zulassen, kann man bei printf Formatierungen angeben. puts (Text); printf ("%-20s",Text); // Hier werden 20 Zeichen des Strings rechtsbündig ausgegeben cout << Text; Die Eingabe erfolgt mittels Steuerelementen (Textfeld, Listbox,...) oder mittels System.in... // etwas kompliziert während die Ausgabe zusätzlich noch mit der Methode drawstring erfolgen kann. System.out.println(Text); Die Eingabe erfolgt mittels: ACCEPT Text FROM TERMINAL. Die Ausgabe erfolgt mittels: DISPLAY Text UPON TERMINAL. 6. Vergleichen von Zeichenketten In Visual Basic ist ein direkter Vergleich möglich, die zugelassenen Operatoren sind: <, <=, =, >=, >, <>

In C ist kein direkter Vergleich möglich, daher muss man eine der Funktionen strcmp, stricmp oder strncmp nehmen. In C wird der ASCII-Code der einzelnen Zeichen verglichen. Strcmp liefert 0 zurück falls die beiden Strings gleich sind, einen Wert kleiner 0 falls der erste Parameter kleiner als der zweite, und einen Wert größer 0 falls der erste Parameter größer als der zweite ist. strcmp ("Haus", "haus"); // Ergebnis: -1, da der 1. Parameter kleiner als der 2. Ist Stricmp vergleicht zwei Strings miteinander, wobei es die Groß- und Kleinschreibung ignoriert. Der Rückgabewert ist genauso wie bei strcmp. stricmp ("Haus", "haus"); // Ergebnis: 0, da stricmp Groß- und Kleinschreibung nicht unterscheidet! Strncmp vergleicht die ersten n-zeichen von zwei Strings. Der Rückgabewert ist wieder gleich wie bei den beiden vorhergehenden. Strncmp unterscheidet zwischen Groß- und Kleinschreibung! strncmp ("Jagd", "Jagdhaus", 4); // Ergebnis: 0, da ersten 4 Zeichen gleich sind. Wird in C++ eine Variable vom Typ CString vereinbart, ist auch hier ein direkter Vergleich möglich, die zugelassenen Operatoren sind: <, <=, ==, >=, >,!= In JAVA ist, kein direkter Vergleich möglich, statt dessen gibt es die Methoden der String-Klasse, equals oder compareto. Text.equals(Text2); // liefert true wenn Text gleich Text2 ist Text.compareTo(Text2); // funktioniert wie strcmp in C In Cobol ist ebenso ein direkter Vergleich möglich, wobei in Cobol 74 die Vergleichswörter: not, greater, less, equal verwendet werden. In Cobol 85 kommen noch die Vergleichswörter: greater or equal, less or equal dazu. 7. Ermitteln der aktuellen Stringlänge In Visual Basic wird die aktuelle Stringlänge mit der Funktion Len ermittelt. Die Funktion liefert als Return-Wert einen Integer-Wert.

Laenge = Len (Text) In C/C++ wird die aktuelle Stringlänge mit der Funktion strlen ermittelt. Die Funktion liefert als Return-Wert einen Integer-Wert. Laenge = strlen (Text); In JAVA wird die aktuelle Stringlänge mit der Methode length ermittelt. Die Funktion liefert als Return-Wert einen Integer-Wert. Laenge = Text.length(); In Cobol hat der String immer die vereinbarte Länge, deshalb gibt es keine Funktion die die aktuelle Länge ermittelt. 8. Bearbeiten von Zeichenketten 8.1. Zeichenweiser Zugriff In Visual Basic kann man jedes Zeichen mit der Funktion Mid ansprechen. Zeichen = Mid (text,position,1) Mid (text,position,1) = 'a' In C kann man die einzelnen Zeichen über den Index von 0 bis Länge des Strings - 1 ansprechen. In JAVA kann man die einzelnen Zeichen über den Index von 0 bis Länge des Strings ansprechen. In Cobol erlauben nur einige Compiler den Zugriff auf einzelne Stringkomponenten, eine andere Alternative ist daher die Vereinbarung eines Strings als Tabelle: 01 Text. 05 Element PIC X OCCURS 20 TIMES. 8.2. Teilstring suchen (Im String Text wird nach Suchstring gesucht!)

In Visual Basic gibt die Funktion Instr, welche die Position des ersten Zeichens des Suchkriteriums innerhalb von Text zurückliefert. Liefert die Funktion 0, wurde der Suchstring im Text nicht gefunden. Position = Instr(Suchstring, Text) In C/C++ steht meistens die Funktion strstr zur Verfügung, die einen Zeiger auf den gefundenen Suchstring im String Text oder NULL bei nicht gefunden, zurückliefert. Zeiger = strstr (Text,Suchstring); In JAVA gibt es keine Standardfunktion zum "Suchen eines Teilstrings". In Cobol gibt es keine Standardfunktion zum "Suchen eines Teilstrings". 8.3. Teilstring herauskopieren In Visual Basic gibt es Left$, Right$ und Mid$, wobei Left$ liefert die ersten Zeichen des String, Right$ liefert die letzten Zeichen des Strings und Mid$ liefert die Zeichen ab der Position vom String, die Zählung beginnt bei 1. Text = "12345678" Position = 4 Ziel = Mid$ (Text,Position,4) // Ziel = 4567 In C/C++ gibt es die Funktion strncpy, die einen Positionszeiger, nämlich Text übergeben bekommt, und von dieser Position an Anzahl Zeichen kopiert. Der Nachteil dieser Stringfunktion ist, dass sie keine anschließende '\0' anhängt, und daher muss sich der Programmierer selbst darum kümmern. strcpy (Text, "12345678"); strncpy (Ziel, Text +3, 4); // Ziel = 4567 Ziel[4] = '\0'; In JAVA gibt es keine Standardfunktion zum "Teilstring herauskopieren". In Cobol gibt es keine Standardfunktion zum "Teilstring herauskopieren". 8.4. Teilstring einfügen Es gibt in den beschriebenen Programmiersprachen keine Standardfunktion um ein

Teilstring einzufügen. In den angegebenen Programmiersprachen muss diese Funktion vom Programmierer selbst implementiert werden. 8.5. Teilstring löschen (Text: Hello Miss America! Ergebnis: Hello America!) Auch hierzu muss meistens der Programmierer selbst Hand anlegen. In C kann man mit der Funktion strcpy arbeiten um einen Teilstring zu löschen. 8.6. Teilstring ersetzen Strcpy (Text+6, Text +11); Hierfür gibt es in keiner der beschriebenen Programmiersprachen eine Standardfunktion. In Visual Basic kann man mit der Funktion Mid die Zeichen im String überschreiben, aber nicht ersetzen. In den anderen Programmiersprachen muss man diese Funktion ausprogrammieren. 8.7. Teilstring anhängen In Visual Basic steht zum zusammenhängen zweier Strings einfach das + oder & zur Verfügung. Ergebnis = Text1 + Text2 oder Ergebnis = Text1 & Text2 In C/C++ steht zum zusammenhängen zweier Strings die Standardfunktion strcat zur Verfügung. strcpy (Ergebnis,Text1); // Text1 in Ergebnisstring kopieren strcat (Ergebnis,Text2); // Text2 an Ergebnissstring anhängen Zwei in C++/MFC mit CString angelegte Zeichenkette, kann man auch mit + oder & zusammenhängen. Ergebnis = Text1 + Text2; oder Ergebnis = Text1 & Text2; In JAVA werden zwei Strings wie in Visual Basic mittels + und & zusammengehängt. In Cobol steht zum zusammenhängen zweier Strings die Standardfunktion STRING zur Verfügung. STRING Text1 Text2 DELIMITED BY SPACE INTO Ergebnis.

9. Tabellarische Übersicht Visual Basic C/C++ JAVA Cobol Vereinbarung Dim Text As String Char Text[anz+1]; String Text; 77 Text PIC X (anz). Zuweisung Text$ = "Hallo" Strcpy (Text, "Hallo"); Text = "Hallo"; MOVE "Hallo" TO text. Vergleich Text = "Hallo" Strcmp(Text,"Hallo"); Text.equals("Hallo"); Text.compareTo(".."); Text = "Hallo" Länge ermitteln Len (Text) Strlen (Text); Text.Length(); Keine Standardfunktion Teilstring suchen Pos = Instr(Text, "al") Zeiger = strstr(text, "al"); Keine Standardfunktion Keine Standardfunktion Teilstring herauskopieren Text2 = Left$(Text,2) Text2 = Right$(Text,2) Text2 = Mid$(Text,3,2) Strncpy(Text2,Text,2); Keine Standardfunktion Keine Standardfunktion Teilstring einfügen Keine Standardfunktion Keine Standardfunktion Keine Standardfunktion Keine Standardfunktion Teilstring löschen Keine Standardfunktion Keine Standardfunktion Keine Standardfunktion Keine Standardfunktion Teilstring anhängen Text = Text + Text2 Text = Text & Text2 Strcat(Text,Text2); Ergebnis=Text+Text2; Ergebnis=Text&Text2; STRING Text Text2 DELIMITED BY SPACE INTO Text.