Vorlesung 2: Programmieren mit C



Ähnliche Dokumente
Einführung in die C-Programmierung

1 Vom Problem zum Programm

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Programmierung in C. Grundlagen. Stefan Kallerhoff

Informatik Repetitorium SS Volker Jaedicke

Übersicht Programmablaufsteuerung

Kapitel 1: Einführung

Die Programmiersprache C

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Klausur in Programmieren

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg Universitätsstraße 31, Regensburg

Einführung in die Programmierung

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

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

Fallunterscheidung: if-statement

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung

Klausur in Programmieren

Angewandte Mathematik und Programmierung

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

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

C/C++ Programmierung

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Tutorium Rechnerorganisation

Klausur in Programmieren

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

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

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

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

Programmieren was ist das genau?

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Programmierkurs Java

Einführung in die Java- Programmierung

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

Computeranwendung und Programmierung (CuP)

Die Programmiersprache C99: Zusammenfassung

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

1. Übung zu "Numerik partieller Differentialgleichungen"

Grundlagen. Kapitel 1

Dr. Monika Meiler. Inhalt

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Programmieren in Haskell Einführung

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Deklarationen in C. Prof. Dr. Margarita Esponda

E-PRIME TUTORIUM Die Programmiersprache BASIC

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Praktikum Ingenieurinformatik. Termin 2. Mein erstes C-Programm

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

Zählen von Objekten einer bestimmten Klasse

5. Tutorium zu Programmieren

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

Einführung in die Programmierung (EPR)

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

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

Programmierung für Mathematik (HS13)

Vorkurs Informatik WiSe 15/16

Objektorientierte Programmierung

Kapitel 1. Grundlagen

Installation und Inbetriebnahme von Microsoft Visual C Express

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Datentypen: Enum, Array, Struct, Union

2 Einfache Rechnungen

Java Einführung Programmcode

Hochschule München, FK 03 FA SS Ingenieurinformatik

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

Programmiersprachen und Programmierkonzepte

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

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Kontrollstrukturen, Strukturierte Programmierung

Grundlagen von C. Ausarbeitung von Jonas Gresens

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen.

Ingenieurinformatik Diplom-FA (C-Programmierung)

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

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

Graphic Coding. Klausur. 9. Februar Kurs A

Algorithmen und Programmieren II Einführung in Python

2D22 Prinzipien der Softwareentwicklung. Prinzipien der Softwareentwicklung S. Strahringer 1

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

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

Objektorientiertes Programmieren mit Suse Linux

Objektbasierte Entwicklung

Propädeutikum. Dipl.-Inf. Frank Güttler

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

1. Der Einstieg in Java. Was heißt Programmieren?

Einführung in wxwidgets & wxdev-c++

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Klausur in Programmieren

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

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

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Programmieren I. Administratives / Java Installation. Thomas Vetter, Brian Amberg, Andreas Forster. 21. September 2010 UNIVERSITÄT BASEL

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

Delegatesund Ereignisse

Grundlagen der Programmiersprache C++

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Zusammenfassung des Handzettels für Programmieren in C

Moderne C-Programmierung

Transkript:

Vorlesung 2: Programmieren mit C URL zur Lehrveranstaltung http://www.fbmnd.fh-frankfurt.de/~raimann Folien zur Vorlesung, Übungsaufgaben,... Dr. J. Raimann 1

Dev C++ Kostenlose C/C++-Entwicklungsumgebung Download der aktuellen Version unter folgender URL http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe -> anschließend muss ein Mirror-Server für den Download ausgewählt werden (z.b. Düsseldorf) siehe auch Website des Herstellers: http://www.bloodshed.net Es können auch andere Entwicklungsumgebungen verwendet werden, wie z.b. MS Visual C++ (Express Edition) http://www.microsoft.com/germany/express/product/visualcplusplusexpress.aspx Literatur Die Programmiersprache C, hrsg. von RRZN, Universität Hannover, KFA (erhältlich bei H. Ünsal (Geb. 1, Raum 348), Kosten: 4,00 ) Siehe dazu auch: http://www.fh-frankfurt.de/de/fh_ffm/verwaltung_einrichtungen / abteilungen/ rechenzentrum/arbeitsbereiche/it_service_centre/rrzn_handbuecher.html Brian W. Kernighan/ Dennis M. Ritchie: "Programmieren in C", Hanser/Prentice Hall, 1990 J. Goll/U. Bröckl/M. Dausmann: C als erste Programmiersprache, Vom Einsteiger zum Profi, 4. Aufl., Teubner, 2003 H. Erlenkötter/V. Reher: Programmiersprache C: eine strukturierte Einführung, rororo Taschenbuch Im Internet J. Wolf: C von A bis Z, - Das umfassende Handbuch für Linux, Unix und Windows; 2. aktualisierte und erweiterte Auflage 2006, zu finden unter http://www.galileocomputing.de/openbook/c_von_a_bis_z/ Diverse C-Einführungen im WWW Dr. J. Raimann 2

"The only way to learna new programming language is by writing programs in it" Brian W. Kernighan/Dennis M. Ritchie: The C Programming Language, 1978 Unterscheidung der Programmiersprachen Maschinensprache (binäre Zeichenfolgen) Maschinennahe Sprache (Assembler, mit mnemotechnischen Abkürzungen für die Binärfolgen) n, z.b. Fortran, 1957 Cobol, 1960 Algol, 1960 Basic, 1965 PL/1, 1967 Pascal, 1974 C, ab 1972 Ada, 1979 Java, 1995 Dr. J. Raimann 3

Schematischer Ablauf der Problemlösung mit dem Computer Problem/ Aufgabenstellung Nachdenken Algorithmus Programmieren Programm in höherer Progr.sprache Übersetzen Programm in Maschinensprache Programmlauf Problemlösung Von der Idee zum Programm Summe zweier natürlicher Zahlen a und b Computer lateinisch computare, soviel wie rechnen Festlegung Algorithmus: c = a + b Quelldatei (Source-File) erstellt mit Editor Übersetzerprogramm (Compiler) IDE = Integrated Development Environment Assembler / Maschinensprache LOAD a,%r0 LOAD b,%r1 Linker (Verbindung von fertigen Objekten) ADD %r0,%r1 STORE %r1,c Software Dr. J. Raimann 4

Editieren Kompilieren Linken Programmieren bedeutet einen Algorithmus in einer definierten Sprache zu beschreiben -> Editieren Geschriebene Programme müssen vor der Ausführung kompiliert, d.h. in Maschinensprache übersetzt werden (Compiler). Zusätzlich werden häufig schon vorhandene Funktionen aus Funktionsbibliotheken in das Programm eingebunden (Linker). Das Ergebnis des Linkens und Kompilierens ist eine.exe-datei in Maschinensprache, die vom Prozessor abgearbeitet werden kann Hilfsmittel zur Beschreibung von Algorithmen Umgangssprache Pseudocode Programmablaufplan Datenflußplan Struktogramm Einlesen X Einlesen Y Wenn X > Y Dann Z = X Sonst Z = Y Ausgabe Z Der Motor M läuft solange die Tasten A und B gedrückt werden. Dr. J. Raimann 5

Geschichte der Programmiersprache C (1) 1972 bis 1978: D. M. Ritchie, K.Thompson und B. W. Kernighan (Bell Laboratories der Fa. AT & T) entwickeln die Programmiersprache C parallel zu dem Betriebssystem Unix, dessen wesentliche Teile in C geschrieben sind Zielsetzung: eine höhere Programmiersprache zu entwickeln, mit der das Betriebssystem UNIX neu geschrieben und auf andere Rechnertypen portiert werden konnte C sollte die strukturierte Programmierung unterstützen und dennoch so schnell wie Assembler sein Geschichte der Programmiersprache C (2) Von ALGOL wurde die Möglichkeit der strukturierten Programmierung für C übernommen. Hinsichtlich des Zeigerkonzepts besteht eine gewisse Ähnlichkeit mit der von N. Wirth entwickelten Programmiersprache Pascal. 1989: Standardisierung durch ANSI ab 1980: C++ als objektorientierte Erweiterung von C (B. Stroustrup) Dr. J. Raimann 6

Vorteile von C universell einsetzbar maschinennäher als die meisten anderen höheren Programmiersprachen -> kompakte und schnelle Codes Nachteile von ASSEMBLER-Sprachen wurden vermieden Gute, schnelle und auch kostenfreie Compiler erhältlich Klar definierter Sprachstandard, weitgehend unabhängig von speziellen Hardware-Konfigurationen und Betriebssystemen. C-Programme sind daher in hohem Maße portabel. Große Anzahl von Operatoren ermöglicht eine effiziente und kompakte Programmierung C erzwingt eine strukturierte Programmierung C enthält verhältnismäßig wenig Sprachelemente Umfangreiche Bibliotheken mit Standard-Funktionen verfügbar Nachteile von C C-Programme sind oft schwer lesbar C verführt zu trickreichem und undurchsichtigem Programmieren Es gibt in C viele Fallen (insbesondere im Zusammenhang mit Zeigern), die zu unvorhergesehenen Nebenwirkungen und Fehlem führen können, ohne dass der Compiler durch eine Fehlermeldung oder Warnung darauf aufmerksam machen würde. Viele Fehler, z.b. Bereichsüberschreitungen bei der Indizierung von Arrays, werden nicht vom Compiler abgefangen Fehlende strenge Typisierung von C ist nachteilig (strenge Typisierung heißt: für einen definierten Datentyp sind nur definierte Operationen zulässig) Dr. J. Raimann 7

Erstes C-Programm: Hello, World #include <stdio.h> /* Erstes C-Programm */ #include <stdlib.h> int main (void) { printf ("HELLO, WORLD\n") ; system("pause"); return 0 ; } Grundlegende Eigenschaften und Elemente von C Programmtext wird formatfrei eingegeben Programmzeilen werden mit Semikolon ; abgeschlossen Kommentare werden in /*... */ eingeschlossen mit # beginnende Anweisungen sind sogenannte Präprozessor- Anweisungen der Funktionskörper wird durch geschweifte Klammern { } begrenzt Die Funktion main, die jedes C-Programm besitzen muss, stellt das Hauptprogramm dar Mit return kann ein Wert an das aufrufende Programm zurückgegeben werden \n ist eine sogenannte ESC-Sequenz, die einen Zeilenvorschub erzeugt Dr. J. Raimann 8

Grundlegende Eigenschaften und Elemente von C keine Unterscheidung von Funktionen und Prozeduren Unterscheidung von Groß-/Kleinschreibung Namen (Bezeichner) können Ziffern, Buchstaben und den Unterstrich _ enthalten, wobei jedoch das erste Zeichen keine Ziffer sein darf. Zwischen Klein- und Großbuchstaben wird unterschieden. Namen dürfen keine Schlüsselwörter enthalten, da diese als Sprachbestandteile von C eine vordefinierte Bedeutung haben. C-Schlüsselwörter werden klein geschrieben der Befehl system ("PAUSE"); bewirkt, dass das Ausgabefenster bis zum Drücken einer Taste stehen bleibt. Um system verwenden zu können muss die Library stdlib.h in das Programm eingebunden werden Die Ausgabe-Funktion printf (formatierte Ausgabe) #include <stdio.h> #include <stdlib.h> main() { printf("der Befehl printf kann "); printf("nicht nur Texte ausgeben \n"); printf("sondern auch rechnen:\n\n"); printf("das Produkt von 13 * 7 ist %i \n", 13 * 7); system("pause"); } %i = Formatangabe, fungiert als Platzhalter; der Wert von 13*7 wird hier eingesetzt und als Zahl formatiert ausgegeben \n = Escape-Sequenz -> Zeilenendezeichen (newline) Dr. J. Raimann 9

Ausgabe mit printf Prototyp/Funktion ist definiert in stdio.h Wichtige Formatanweisungen in Zeichenketten (Escape-Sequenzen): C Schlüsselwörter (1) auto break case char const continue Speicherklassenbezeichner Zum Herausspringen aus Schleifen oder der switch-anweisung Auswahl-Fall in switch-anweisung Typ-Bezeichner Attribut für Typangabe Fortsetzungsanweisung default Standardeinsprungmarke in switch- Anweisung do double else Teil einer Schleifen-Anweisung Typ-Bezeichner Teil einer Einfach- oder Mehrfachalternative Dr. J. Raimann 10

C Schlüsselwörter (2) enum extern float for goto if int long Aufzählungstyp-Bezeichner Speicherklassenbezeichner Typ-Bezeichner Schleifenanweisung Sprunganweisung Teil einer Alternative oder bedingten Anweisung Typ-Bezeichner Typ-Modifizierer bzw. Typ-Bezeichner register Speicherklassen-Bezeichner return short Rücksprung-Anweisung Typ-Modifizierer bzw. Typ-Bezeichner C Schlüsselwörter (3) signed Typ-Modifizierer bzw. Typ-Bezeichner sizeof Operator zur Bestimmung der Größe von Variablen static Speicherklassenbezeichner struct Strukturvereinbarung switch Auswahlanweisung typedef Typnamenvereinbarung union Datenstruktur mit Alternativen unsigned Typ-Modifizierer bzw. Typ-Bezeichner void Typ-Bezeichner volatile Attribut für Typangabe while Schleifenanweisung Dr. J. Raimann 11