B Notizen zu Fortran 90/95
|
|
|
- Jan Becker
- vor 9 Jahren
- Abrufe
Transkript
1 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 93 B Notizen zu Fortran 90/95 B.1 Numerische Datentypen Für numerische Rechnungen bevorzugt man integer alias integer(4) real(8) alias double precision complex(8) (d.h. real(8) für Real und Imaginärteil) Die (alte) implizite Typdeklaration von Fortran nimmt automatisch an: real alias real(4) für Namen, die mit a-h, o-z beginnen, integer für Namen, die mit i-n beginnen. Diese Automatik kann man mit implicit none (ganz oben in jedem Programmteil) abschalten, es gibt dafür aber auch Compilerschalter: gfortran -fimplicit-none.. ifort -implicitnone.. pgf90 -Mdclchk.. Wer schreibfaul und/oder ganz mutig ist, kann die implizite Typdeklaration aber auch auf real(8) umschalten mit implicit real(8) (a-h,o-z) Schließlich kann man die Standardgröße von real und complex auch von der Kommandozeile aus auf 8 Bytes umstellen: gfortran -fdefault-real-8.. ifort -r8.. pgf90 -r8.. Das betrifft Variablen, numerische und symbolische Konstanten und die Resultatwerte der Funktionen real(), float(), cmplx(). B.2 Komplexe Größen Beispiele für Deklaration und Anweisungen: real(8) :: a, b, r complex(8) :: z, w z = (2., 3.) z = cmplx(a, b, kind(a))! z = 2 + 3i (Konstante)! z = a + b i, als complex(8) a = real(z) b = aimag(z)! Realteil, als real(8)! Imaginaerteil, als real(8)
2 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 94 r = abs(z) w = conjg(z) w = 2 * z**2 w = sqrt(z)! Betrag, als real(8)! konjugiert komplex, als complex(8)! komplexe Arithmetik! Wurzel, als complex(8) Die arithmetischen Operationen werden, wenn komplexe Größen beteiligt sind, automatisch komplex ausgeführt. Dasselbe gilt für die Fortran eigenen Funktionen (z.b. sqrt, log, exp), wenn sie mit komplexen Argumenten aufgerufen werden. Dabei bleibt auch die Genauigkeit erhalten. Ausnahme ist der Zusammenbau von reellen Variablen zu einer komplexen Zahl mit cmplx: dort muss man die doppelte Genauigkeit mit dem dritten (optionalen) kind Argument erzwingen, sonst verliert man durch complex alias complex(4) im Zwischenschritt an Genauigkeit. B.3 Felder Beispiele für die Deklaration von Feldern: integer, dimension(6) real(8), dimension(0:3,3) :: v :: M v bezeichnet also ein einfach indiziertes Feld (Liste, Vektor) mit (Integer )Komponenten v(1)..v(6). M ist ein real(8) Feld mit zwei Indizes (Tabelle, Matrix) und Elementen M(i,j), i=0..3, j=1..3. Mit der Doppelpunkt Notation kann man also Indizierungen vorgeben, die nicht bei 1 beginnen. Dieselbe Notation beim Zugriff auf Feldelemente spezifiziert Teilfelder, z.b. v(2:4) => v(2) v(3) v(4) Feld mit 3 Elementen M(1:2,1:2) => M(1,1) M(1,2) M(2,1) M(2,2) 2x2 Untermatrix M(1,:) => M(1,1) M(1,2) M(1,3) Zeile aus M Wie man am letzten Beispiel sieht, bezeichnet : den gesamten Indexbereich (laut Deklaration), hier also alle Spalten, so dass eine vollständige Zeile angesprochen ist. Da man diese Teilfelder auch wieder passend zuweisen kann, ist der Umgang mit Untermatrizen denkbar einfach. Die arithmetischen Operationen (+ - * / **) wirken elementweise (bei passenden Feldern). Wenn ein Operand ein Skalar ist, wird er auf alle Feldelemente angewandt. Viele Fortran Funktionen wirken ebenfalls elementweise, z.b. abs, sqrt, exp, sin. Es gibt auch eine Reihe von Funktionen speziell für Felder, u.a. sum(array) prod(array)! Summe, Produkt der Elemente minval(array) maxval(array) minloc(array)! Wert, Position des Minimums maxloc(array)! Wert, Position des Maximums
3 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 95 dot_product(vec1,vec2)! Skalarprodukt matmul(mat1,mat2)! Matrixprodukte matmul(vec,mat) matmul(mat,vec) transpose(mat)! transponierte Matrix Die folgenden Beispiele zeigen, wie der Umgang mit Vektoren und Matrizen durch die kompakte Notation erleichtert wird (ähnlich wie in Matlab): real(8) :: s real(8), dimension(10) :: u, v, w real(8), dimension(10,10) :: mat, mat1, mat2 w = u + s*v s = sum(u**2)! Vektor + Skalar x Vektor! Norm-Quadrat (Summe der Quadrate) s = dot_product(u,v)! Skalarprodukt v = matmul(mat,u)! Matrix x Vektor mat = matmul(mat1,mat2)! Matrix x Matrix Mit komplexwertigen Feldern geht alles analog. Zu beachten ist, dass die Funktion dot product(u,v) bei komplexen Vektoren u,v tatsächlich (u v) berechnet. B.4 Dynamischer Speicher B.4.1 Allocate Allgemein kann man ein Feld mit dem Attribut allocatable deklarieren und dann zur Laufzeit mit allocate den Speicher anfordern. So legt man z.b. eine Matrix dynamisch an: real(8), dimension(:,:), allocatable :: mat m = 5 n = 7 if (allocated(mat)) deallocate(mat)! vorsichtshalber allocate(mat(m,n)) B.4.2 Automatische Arrays In Unterprogrammen (subroutine oder function) gibt es eine einfachere Möglichkeit, Arbeitsvektoren dynamisch anzulegen: man deklariert sie mit variabler Größe, die zur Zeit des Aufrufs bekannt sein muss, z.b. subroutine sub(n, ) real(8), dimension(n) :: work Hier stammt die Variable n aus der Aufrufliste (und muss als Input gesetzt sein), sie kann aber auch als globale Variable definiert sein. Einen automatischen Array kann man bei der Deklaration nicht auch noch initialisieren!
4 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 96 B.5 Globale Variablen Prinzipiell sind Programmteile (program, subroutine, function, module) vollkommen unabhängig voneinander, auch wenn sie in derselben Datei stehen. Wenn verschiedene Programmteile auf gemeinsame Daten zugreifen sollen, deklariert man sie in einem Modul, z.b. module common integer, parameter :: maxdim = 3, maxvol = integer ndim, lsize(maxdim), nvol integer nn(maxvol,-maxdim:maxdim) real(8) mass end module common und macht sie mit use common in verschiedenen Programmteilen bekannt. Wenn das Hauptprogramm diesen Modul benutzt, dann ist die Lebensdauer der Daten für die gesamte Laufzeit gesichert, andernfalls kann man das durch das Attribut save in der Deklaration erzwingen. Eine Initialisierung in der Deklaration impliziert übrigens das save Attribut. B.6 Funktionsname als Argument Der tatsächlich im Aufruf stehende Programmname muss als external deklariert werden: external laplace call cg(nvol, phi, b, laplace, relerr, maxiter, 0) Bei der Definition des Unterprogramms erkennt der Compiler die Routine an ihrem Aufruf: subroutine cg(n, x, b, matvec, relerr, maxiter, istart) call matvec(n, x, s) B.7 Compilieren und Linken Im PC Pool sind folgende Compiler für Fortran 90/95 installiert: gfortran - GNU Fortran (seit gcc-4.0) ifort - Intel Fortran 77/90/95 pgf90 - Portland Group Fortran 90/95 Im einfachsten Fall compiliert man eine Quelldatei prog.f90 mit gfortran prog.f90 und erzeugt so (wenn alles gut geht) ein lauffähiges Binärfile a.out Tatsächlich besteht die Erzeugung des Binärfiles aus mehreren Schritten, die man auch einzeln aufrufen kann:
5 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 97 gfortran -c prog.f90 gfortran -o prog.x prog.o # compile prog.f90 -> prog.o # link prog.o -> prog.x Das wird deutlicher, wenn man den Quellcode in mehreren Dateien prog1.f90 prog2.f90.. vorliegen hat: gfortran -o prog.x *.f90 erzeugt wiederum ein lauffähiges Binärfile prog.x in einem Schritt, während gfortran -c *.f90 gfortran -o prog.x *.o erstmal jedes Quellfile progn.f90 zu einem Objectfile progn.o compiliert und diese dann im zweiten Schritt zum Binärfile prog.x verlinkt. Wenn in einem Quellfile (z.b. prog.f90) Module definiert werden (z.b. global, data), dann entsteht beim Compilieren neben prog.o zu jedem Modul eine vorkompilierte Datei mit Endung mod, z.b. global.mod, data.mod. Der Compiler braucht diese Moduldatei, wenn ein Modul in einem anderen Programmteil mit use eingebunden wird. Falls das in derselben Datei geschieht, muss die Definition des Moduls vor dem ersten use stehen. Die Optionen sind jeweils entweder dem Compilier- der dem Linkschritt zuzuordnen. Compileroptionen sind u.a. -O Optimierung einschalten (GNU!) -Wall alle Warnungen anzeigen (Fehlersuche!) -c nur compilieren, nicht linken Einige Linkeroptionen: -o <name> Binaerfile umbenennen (statt a.out) Die bedingte Compilierung eines über mehrere Quelldateien *.f90 verteilten Projekts kann man mit Hilfe eines Makefiles organisieren, wie unten beschrieben. Hier entfallen die Header Dateien (*.h in C), man hat aber auf Abhängigkeiten zu achten, die durch Bezug auf Module (use..) entstehen. So begründet ein use common_data eine Abhängigkeit von common.o, wenn der module common data in der Quelldatei common.f90 definiert ist. B.8 Fehlersuche Fortran Compiler unterstützen die Fehlersuche durch einige nützliche Optionen. B.8.1 Undeklarierte Variablen Wenn man implicit none nicht gesetzt hat, werden undeklarierte Variablen je nach Name als real oder integer interpretiert. Um Tippfehler aufzudecken, könnte man überall implicit none eintragen und sehen, was passiert. Der Compiler hat eine Option, um das global einzuschalten (ohne das Programm zu editieren.) B.8.2 Nicht initialisierte Variablen Der Zugriff auf nicht gesetzte Variablen führt zu obskurem Verhalten, denn es wird der zufällig vorgefundene Speicherinhalt als Wert genommen. Der Compiler kann eine entsprechende Warnung geben.
6 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 98 B.8.3 Überschreiten der Feldgrenzen Wenn ein Index die deklarierten Feldgrenzen überschreitet, wird auf einen willkürlichen benachbarten Speicherplatz zugegriffen(oder es gibt einen segmentation fault). Der Compiler kann Kode erzeugen, der die Einhaltung der deklarierten Feldgrenzen zur Laufzeit überwacht. B.8.4 Übersicht gfortran ifort pgf90 undeklarierte -fimplicit-none -implicitnone -Mdclchk Variablen uninitialisierte -Wuninitialized -check uninit Variablen -Wall -check all Feldgrenzen -fbounds-check -check bounds -Mbounds -check all B.9 Einhalten des Standards Der Compiler kann warnen, wenn das Quellprogramm nicht standardkonforme Elemente enthält: gfortran -std=f95 -pedantic.. ifort -stand f95.. pgf90 -Mstandard.. B.10 Einige spezielle Aufrufe B.10.1 Uhrzeit Fortran 90 definiert einen Zugang zur Uhrzeit: integer(8) :: count, count_rate, count_max real :: clocktime call system_clock(count, count_rate, count_max) clocktime = real(count)/count_rate! in sec Die Argumente von system clock sind optional, das Resultat clocktime ist die (Uhr )Zeit in Sekunden, mit willkürlichem Nullpunkt (z.b. Sekunden seit :00 UTC) und einer typischen Genauigkeit im Bereich von Mikrosekunden oder darunter. B.10.2 CPU-Zeit Fortran 95 erlaubt das Auslesen der CPU-Zeit (in Sekunden, mit willkürlichem Nullpunkt), ggf. summiert über alle threads des Prozesses: real :: cputime call cpu_time(cputime) Typische Auflösung: microsec.
7 Computational Physics III, SS 2014, c Burkhard Bunk, HU Berlin 99 B.10.3 Kommandozeile Seit Fortran 2003 unterstützt der Standard das Einlesen von Argumenten aus der Kommandozeile: integer :: num_args, i character(50) :: arg num_args = command_argument_count() call get_command_argument(i, arg)! i = 0..num_args Für i=0 bekommt man den Namen des aufgerufenen Programms, mit i=1..num args die Argumente als Zeichenketten. Wenn dort tatsächlich Zahlen eingeben wurden, kann man sie daraus formatiert lesen, z.b. eine integer n: read(arg,*) n
Programmieren in Fortran
Programmieren in Fortran Burkhard Bunk 6.3.2013 1 Fortran Fortran ist die älteste höhere Programmiersprache für numerische Anwendungen: die erste Version entstand 1954 bei IBM. Schon frühzeitig wurde ein
Wertebereich und Genauigkeit der Zahlendarstellung
Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden
Compiler Aufruf. Fortran 95 unter UNIX (z.b. Linux): Der Programmtext stehe in den Dateien (files):
L3 Fortran 95 - Compiler Compiler Aufruf Fortran 95 unter UNIX (z.b. Linux): Der Programmtext stehe in den Dateien (files): meinfixed.f MeinFree.f90 (MeinFree.f95) Die Endung.f steht für das veraltete
Programmentwicklung. 4. allgemein (modularer Aufbau, Unterprogramme universell einsetzbar)
Programmentwicklung Ziele: 1. effizient (wenig Rechenzeit und Kernspeicher) 2. lesbar (Kommentare, sinnvolle Namen) 3. transportabel (Standard FORTRAN, rechnerunabhängig) 4. allgemein (modularer Aufbau,
Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
Tag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
Ausgabe:
Aufgabe 2.10: Schreiben Sie ein Programm, das zunächst die Quadratzahlen zu den Zahlen 1-10 mit Hilfe einer While- Schleife und danach die Quadratzahlen zu den Zahlen 3, 6, 9,.., 30 mit Hilfe einer For-Schleife
Programmieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
6. Zeiger Allgemeines Definition eines Zeigers
6. Zeiger www.c-programme.de Stefan Thiemert Kapitel 6 - Seite 1 von 6 6. 1. Allgemeines Zeiger spielen in der Programmierung eine wichtige Rolle. Sie sind wichtig, bei der Arbeit mit Arrays und Funktionen.
Debugging mit ddd (Data Display Debugger)
Debugging mit ddd (Data Display Debugger) 1 Testprogramm installieren und ausführen Laden Sie sich das Fortran Programm sample.f90 und das Makefile herunter und speichern Sie sie in einem Verzeichnis.
Tag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Felder in C. Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays.
Felder in C Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays. Durch die Reihung (hintereinander speichern) kann ein Element über seine Nummer (Index)
PROGRAMMIERKURS FORTRAN
Literaturempfehlung: Vorlesungsskript von Heidrun Kolinsky zu FORTRAN 90/95: http://www.rz.uni-bayreuth.de/lehre/fortran90/vorlesung/index.html Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert,
Fortran 90. Lehr- und Handbuch von Dr. Thomas Michel Sietec Consulting GmbH & Co. OHG, München. Wissenschaftsverlag Mannheim Leipzig Wien Zürich
Fortran 90 Lehr- und Handbuch von Dr. Thomas Michel Sietec Consulting GmbH & Co. OHG, München Wissenschaftsverlag Mannheim Leipzig Wien Zürich VII Vorwort.V ERSTER TEIL INFORMATIK FÜR PROGRAMMIERER 1 1
Einstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.
R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung. Carsten Szardenings [email protected] 7. Mai 2015 A 2 B 3 C 4 D 5 F 6 R 16 S 17 V 18 W 19 Z 20 H 7 I 8 K 9
Inhalt. Peter Sobe 63. Felder in C
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Streuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden
Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Dim arrayname (dim1,dim2, ) As Typ Bei eindimensionalen Feldern
Einige Grundlagen zu OpenMP
Einige Grundlagen zu OpenMP Stephanie Friedhoff, Martin Lanser Mathematisches Institut Universität zu Köln 22. Juni 2016 Überblick Was ist OpenMP? Basics Das OpenMP fork-join-modell Kompilieren und Ausführen
Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung
Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Felder (Arrays) Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder
Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15
Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
Arrays. Einleitung. Deklarieren einer Array Variablen
Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt
Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach [email protected] http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
ATIK ORMAT SINFO HAFTS WIRT. Swetlana Konovalov Seminar Programmiersprachen Westfälische Wilhelms-Universität Münster
Westfälische Wilhelms-Universität Münster WIRTSCHAFTS ATIK ORMAT SINFO TSCH HAFTS WIRT FORTRAN Swetlana Konovalov Seminar Programmiersprachen 04.06.200906 Inhalt Einführung Historische Entwicklung Charakteristika
Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }
Konstruktor spezielle Methode zum Initialisieren bei Erzeugen eines Objekts mit new trägt Namen der Klasse hat keinen Rückgabetyp keiner angegeben: Compiler erzeugt Standard-Konstruktor (analog: Attribute
Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik
Programmieren I Arrays Heusch 7.2 Ratz 5.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arrays: Definition Arrays (dt. Felder) dienen zum Speichern mehrerer gleichartiger Daten
7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München
MANUEL KALLWEIT & FABIAN KINDERMANN Literaturempfehlung: Vorlesungsskript von Heidrun Kolinsky zu FORTRAN 90/95: http://www.rz.uni-bayreuth.de/lehre/fortran90/vorlesung/index.html Schmitt, Günter (1996):
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe [email protected] OpenMP Einführung I: Allgemeine Einführung Prozesse
+ C - Array (Vektoren, Felder)
+ C - Array (Vektoren, Felder) Eindimensionale Arrays Beim Programmieren steht man oft vor dem Problem, ähnliche, zusammengehörige Daten (vom gleichen Datentyp) zu speichern. Wenn man zum Beispiel ein
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Wilhelm Haager. Computeralgebra. mit Maxima. Grundlagen der Anwendung und Programmierung. Fachbuchverlag Leipzig. im Carl Hanser Verlag
Wilhelm Haager Computeralgebra mit Maxima Grundlagen der Anwendung und Programmierung Fachbuchverlag Leipzig im Carl Hanser Verlag Inhalt Q Einführung 13 1.1 Grundlegendes 13 1.1.1 Motivation 14 1.1.2
Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende
MATLAB-Tutorium WS18 Nathalie Marion Frieß
MATLAB-Tutorium WS18 Nathalie Marion Frieß [email protected] Zugang UNI-IT Arbeitsplätzen lokal vorinstalliert Von zu Hause: Zugriff über Terminalserver Installation des Citrix Receiver Clients:
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
Inhaltsverzeichnis. Wilhelm Haager. Computeralgebra mit Maxima. Grundlagen der Anwendung und Programmierung. ISBN (Buch):
Inhaltsverzeichnis Wilhelm Haager Computeralgebra mit Maxima Grundlagen der Anwendung und Programmierung ISBN (Buch): 978-3-446-44203-0 ISBN (E-Book): 978-3-446-43730-2 Weitere Informationen oder Bestellungen
Viel Erfolg bei der Bearbeitung der Aufgaben!
Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen
Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE
Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach
Teil 5: Zeiger, Felder, Zeichenketten Gliederung
Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
Programmieren in C. Burkhard Bunk 6.3.2013
Programmieren in C Burkhard Bunk 6.3.2013 1 C Die Programmiersprache C wurde Anfang der 70er Jahre von Brian Kernighan und Dennis Ritchie bei Bell Labs (später AT&T) entwickelt und 1989 (in etwas weiter
WiMa-Praktikum 1. Woche 8
WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und
MATLAB Sommersemester 2018 Dr. Ulf Mäder
MATLAB Sommersemester 2018 Dr. Ulf Mäder Dr. Ulf Mäder - IMPS Folie 1 MATLAB - Befehle Allgemeine Form Zuweisungen Zwei Arten von Befehlen Anweisungen >> = Einfache Spezialform
3.2 Datentypen und Methoden
Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte
Grundlagen der Fortran Sprache
Kapitel 1 Grundlagen der Fortran Sprache Programmieren bezeichnet das Verfahren, in einer bestimmten Sprache (Syntax) Anweisungen (sog. Quellcode) für den Computer zu schreiben. Dieser Programmcode wird
int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben
Datenfelder (Array) Seite 1 von 7 Bei den bisherigen Programmen wurde für jede verwendete Variable (oder für jedes Objekt) ein eigener Typ und Name vergeben. Die Initialisierung, d.h. die Belegung mit
Programmsteuerung. Mittel zur Programmverzweigung:
Programmsteuerung Mittel zur Programmverzweigung: GOTO Anweisung: Unbedingtes GOTO: GOTO L (L=Labelnummer) Bedingtes GOTO (Finger weg!): GOTO(L1,L2, ) I (L1,L2, =Labelnummer, I: Integervariable, die angibt,
Programmiersprachen Einführung in C
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
Übungspaket 14 Eindimensionale Arrays
Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 9.5.07 Übersicht 1 Was sind? 2 Vereinbarung von n 3 Erzeugen von n 4 Zugriff auf Feldkomponenten 5 Mehrdimensionale 6 als Objekte, Referenzen Kopieren
Einführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Programmierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16
C++ Teil 5 Sven Groß 16. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 16. Nov 2015 1 / 16 Themen der letzten Vorlesung Namensräume Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
Einführung in Matlab Was ist MATLAB? Hilfe Variablen
Einführung in Matlab Was ist MATLAB? MATLAB (Matrix Laboratory) ist eine interaktive Interpreter-Sprache, die einen einfachen Zugang zu grundlegenden numerischen Verfahren - wie beispielsweise der Lösung
Grundlagen der Informatik Vorlesungsskript
Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1
Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik
Programmieren I Arrays Heusch 7.2 Ratz 5.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arrays: Definition Arrays (dt. Felder) dienen zum Speichern mehrerer gleichartiger Daten
C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16
C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
Teil II. Datentypen. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/
Teil II Datentypen T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/2018 25 Konzept von Teil II: Datentypen Hinweis: Die Erklärung des Konzepts im Sinne des Constructive
Herzlich willkommen!
Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: [email protected] Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in
Physische Datenstrukturen
Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128
U1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar
U1 3. Übung U1 3. Übung Besprechung Aufgabe 0 Make und Makefiles Aufgabe 2 U1-1 Hinweise Die Kommandos auf den folgenden Folien dienen der Veranschaulichung Sind nicht direkt auf die Übungsaufgabe übertragbar
MATLAB Eine Einführung
MATLAB Eine Einführung Samuel Ferraz-Leite Institut für Analysis und Scientific Computing Technische Universität Wien 1 MATLAB-Buch Christoph Überhuber Stefan Katzenbeisser Dirk Praetorius MATLAB 7 Eine
Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
Grundlagen der Programmierung
Grundlagen der Programmierung Einführung in die strukturierte Programmierung Teil 5 Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile
Übung 01 Harmonischer Oszillator
Übung 01 Harmonischer Oszillator 1 1 Dokumentation des harmonischen Oszillator 1.1 Physikalischer Hintergrund Das vorliegende Programm löst die diskrete Bewegungsgleichung eines Teilchens in einem harmonischen
Martin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen
Beispiele elementarer Datentypen Ganze Zahlen (integer) - Werte sind ganze Zahlen in vorgegebenen Bereich (z. B. -2 31 bis 2 31-1) - Übliche Operationen: Arithmetik (z. B. +,-,*, Division mit Rest, Rest
INHALTSVERZEICHNIS. 1 Strukturierte Datentypen. 1.1 String. 1.2 Array (Feld) 1.3 Record. 1.4 Set. 2. Erweiterungen in Pascal
INHALTSVERZEICHNIS 1 Strukturierte Datentypen 1.1 String 1.2 Array (Feld) 1.3 Record 1.4 Set 2. Erweiterungen in Pascal 2.1 Prozeduren und Funktionen 2.1.1 Prozeduren 2.1.2. Funktionen 2.2. File 2.3. Pointer
m-files sind Folgen von MATLAB-Anweisungen oder Daten-Files.
MATLAB m-files m-files sind Folgen von MATLAB- oder Daten-Files. Erstellen von m-files Über File New M-file wird ein Texteditor geöffnet. Dort wird das m-file als ASCII-File erzeugt und unter name.m im
C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13
C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)
PPS "Bits on Air" 1. Teil, Matlab-Tutorial Vorbereitungsaufgaben (Lösungsvorschläge)
Institut für Kommunikationstechnik Prof. Dr. H. Bölcskei Sternwartstrasse 7 CH-8092 Zürich PPS "Bits on Air" 1. Teil, Matlab-Tutorial Vorbereitungsaufgaben (Lösungsvorschläge) Markus Gärtner, Samuel Brändle
Strings. Daten aus Dateien einlesen und in Dateien speichern.
Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings Ein String ist eine Zeichenkette, welche von MATLAB nicht als Programmcode interpretiert wird. Der Ausdruck 'a' ist ein String bestehend
Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
Grundlagen der Objektorientierten Programmierung - Statische Arrays
Statische Arrays Ein Array ist ein Behälter für Datenelemente desselben Typs. Arrays können beliebig viele Dimensionen haben. Die Standardform ist das eindimensionale Array, das man sich in Zeilenform
Mehrdimensionale Arrays
Mehrdimensionale Arrays Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Eindimensionale Arrays haben wir bereits kennen gelernt. Es gibt aber auch mehrdimensionale Arrays. Die sind auch sehr notwendig, denken
