pascal
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| pascal [2016-03-08 21:53:14] – manfred | pascal [2019-09-08 21:14:42] (aktuell) – [Programme ausführen] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Pascal ====== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | |||
| + | ==== Linux Mint 17.2 ==== | ||
| + | |||
| + | wichtig: | ||
| + | > aptitude install fpc lazarus fpc-source fp-units-fcl lcl | ||
| + | |||
| + | optional: | ||
| + | > aptitude install lazarus-ide lazarus-ide-gtk2 lcl-gtk2 lcl-units lcl-utils | ||
| + | |||
| + | |||
| + | ===== FreePascal-Beispiel-Kode ===== | ||
| + | |||
| + | * **[[David' | ||
| + | |||
| + | * **[[https:// | ||
| + | * **[[http:// | ||
| + | * **[[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | * [[http:// | ||
| + | * **[[ftp:// | ||
| + | * [[http:// | ||
| + | * **[[http:// | ||
| + | * // | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * **[[http:// | ||
| + | * **[[http:// | ||
| + | * **[[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * **'' | ||
| + | * **''<''''>'' | ||
| + | * **''<'' | ||
| + | * **''>'' | ||
| + | * **''<'''' | ||
| + | * **''>'''' | ||
| + | * **'' | ||
| + | |||
| + | ==== Programmierkurs: | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | === Texttypen === | ||
| + | |||
| + | **Char**\\ | ||
| + | __**String**__ | ||
| + | |||
| + | Der Typ Char dient dazu, ein einzelnes ASCII-Zeichen zu speichern. | ||
| + | |||
| + | Der Typ String bezeichnet eine Zeichenkette mit variabler Länge. Das heißt, er kann keine Zeichen, ein Zeichen oder auch mehrere beinhalten. | ||
| + | Strings müssen im Quelltext immer von Apostrophen umschlossen werden. | ||
| + | Mehrere Strings lassen sich miteinander mit Hilfe des +-Operators zu einem größeren Text verknüpfen (konkatenieren). | ||
| + | |||
| + | Man kann mit Zahlen in einem String nicht rechnen, obwohl sie im String gespeichert werden können. | ||
| + | Um ein einzelnes Zeichen eines Strings anzusprechen, | ||
| + | |||
| + | Die Datentypen Char und String sind in gewisser Weise kompatibel. Man kann z.B. ein Char an einen String anhängen oder ein Zeichen aus einem String in einem Char speichern. | ||
| + | |||
| + | |||
| + | === ganzzahlige Datentypen === | ||
| + | |||
| + | ^ Name ^ Wertbereich | ||
| + | ^ Shortint | ||
| + | ^ Smallint | ||
| + | ^ Longint (entspricht Integer) | ||
| + | ^ __Int64__ | ||
| + | ^ Byte | '' | ||
| + | ^ Word | '' | ||
| + | ^ Cardinal/ | ||
| + | |||
| + | Für die Division muss hier **''" | ||
| + | |||
| + | |||
| + | === Gleitkommazahlen === | ||
| + | |||
| + | ^ Name ^ Wertbereich | ||
| + | ^ Single | ||
| + | ^ __Double__ | ||
| + | ^ Extended | ||
| + | |||
| + | Für die Division muss hier **''"/"'' | ||
| + | |||
| + | **Extended** bietet zwar die höchste Genauigkeit, | ||
| + | __Wenn Daten in diesem Format gespeichert werden und auf anderen Rechnern verwendet werden sollen, kann dies zu Problemen führen.__ | ||
| + | |||
| + | |||
| + | === Wahrheitswerte === | ||
| + | |||
| + | __**Boolean**__ | ||
| + | |||
| + | |||
| + | ==== Hallo Welt ==== | ||
| + | |||
| + | < | ||
| + | program HalloWelt; | ||
| + | |||
| + | begin | ||
| + | Writeln(' | ||
| + | Readln; {Wartet auf Eingabe des Benutzers, ansonsten würde das Programm sofort wieder beendet} | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Abfrage ==== | ||
| + | |||
| + | < | ||
| + | program Abfrage; | ||
| + | |||
| + | var | ||
| + | Name: string; | ||
| + | |||
| + | begin | ||
| + | Writeln(' | ||
| + | Readln(Name); | ||
| + | Writeln(' | ||
| + | Readln; {Wartet auf Eingabe des Benutzers, ansonsten würde das Programm sofort wieder beendet} | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Program Taschenrechner1; | ||
| + | |||
| + | var | ||
| + | a : Int64; | ||
| + | b : Int64; | ||
| + | c : Int64; | ||
| + | |||
| + | begin | ||
| + | WriteLn(' | ||
| + | readln(a); | ||
| + | WriteLn(' | ||
| + | readln(b); | ||
| + | |||
| + | c := a + b; | ||
| + | |||
| + | WriteLn(a , ' + ' , b , ' = ' , c); | ||
| + | readln(); | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Program Taschenrechner4; | ||
| + | |||
| + | Uses sysutils; | ||
| + | |||
| + | var | ||
| + | a : Int64; | ||
| + | b : String; | ||
| + | c : Int64; | ||
| + | d : Int64; | ||
| + | |||
| + | begin | ||
| + | WriteLn(' | ||
| + | ReadLn (a); | ||
| + | WriteLn(' | ||
| + | ReadLn (b); | ||
| + | WriteLn(' | ||
| + | ReadLn (c); | ||
| + | |||
| + | if b = ' | ||
| + | WriteLn(a , ' + ' , c , ' = ' , a + c); | ||
| + | if b = ' | ||
| + | begin | ||
| + | d := a - c; | ||
| + | | ||
| + | end; | ||
| + | if b = ' | ||
| + | begin | ||
| + | d := a * c; | ||
| + | | ||
| + | end; | ||
| + | if b = '/' | ||
| + | begin | ||
| + | d := a DIV c; | ||
| + | | ||
| + | end; | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | ==== Kommandozeilenparameter ==== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | < | ||
| + | program Parameter1; | ||
| + | |||
| + | begin | ||
| + | WriteLn(' | ||
| + | WriteLn(' | ||
| + | WriteLn(' | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | program Parameterliste; | ||
| + | |||
| + | var | ||
| + | I: Int64; | ||
| + | |||
| + | begin | ||
| + | WriteLn(' | ||
| + | for I := 1 to ParamCount do | ||
| + | WriteLn(' | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Program Taschenrechner3; | ||
| + | |||
| + | Uses sysutils; | ||
| + | |||
| + | var | ||
| + | s1 : String; | ||
| + | s2 : String; | ||
| + | a : Int64; | ||
| + | b : String; | ||
| + | c : Int64; | ||
| + | d : Int64; | ||
| + | e : String; | ||
| + | |||
| + | begin | ||
| + | s1 := ParamStr(1); | ||
| + | a := StrToInt(s1); | ||
| + | b := ParamStr(2); | ||
| + | s2 := ParamStr(3); | ||
| + | c := StrToInt(s2); | ||
| + | |||
| + | if b = ' | ||
| + | begin | ||
| + | d := a + c; | ||
| + | e := ' | ||
| + | end; | ||
| + | if b = ' | ||
| + | begin | ||
| + | d := a - c; | ||
| + | e := ' | ||
| + | end; | ||
| + | if b = ' | ||
| + | begin | ||
| + | d := a * c; | ||
| + | e := ' | ||
| + | end; | ||
| + | if b = '/' | ||
| + | begin | ||
| + | d := a DIV c; | ||
| + | e := ' | ||
| + | end; | ||
| + | if e = ' | ||
| + | | ||
| + | // vor ELSE darf kein ";" | ||
| + | else | ||
| + | | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | ==== String-Integer-Umwandlung ==== | ||
| + | |||
| + | < | ||
| + | Program Taschenrechner2; | ||
| + | |||
| + | Uses sysutils; | ||
| + | |||
| + | var | ||
| + | a : String; | ||
| + | b : String; | ||
| + | c : Int64; | ||
| + | d : Int64; | ||
| + | e : Int64; | ||
| + | |||
| + | begin | ||
| + | a := ParamStr(1); | ||
| + | b := ParamStr(2); | ||
| + | c := StrToInt(a); | ||
| + | d := StrToInt(b); | ||
| + | |||
| + | e := c + d; | ||
| + | |||
| + | WriteLn(c , ' + ' , d , ' = ' , e); | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | ==== Schleifen ==== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | < | ||
| + | Program Fibonacci1; | ||
| + | |||
| + | |||
| + | var | ||
| + | i : int64; | ||
| + | a, b, c : int64; | ||
| + | d : Double; | ||
| + | |||
| + | begin | ||
| + | b := 1; | ||
| + | c := 1; | ||
| + | |||
| + | for i := 1 to 40 do | ||
| + | begin | ||
| + | a := b; | ||
| + | b := c; | ||
| + | c := a + b; | ||
| + | d := c / b; | ||
| + | Writeln(i, ': ', c, ' / ', b, ' = ', d); | ||
| + | end; | ||
| + | end. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Datei-Operationen ==== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | === Datei lesen === | ||
| + | |||
| + | erst die Datei anlegen und einen kurzen Text reinschreiben: | ||
| + | > vi / | ||
| + | < | ||
| + | program Datei_lesen; | ||
| + | |||
| + | |||
| + | USES crt; | ||
| + | |||
| + | VAR Dateizeiger: | ||
| + | Gelesen, Pfad: String; | ||
| + | |||
| + | BEGIN | ||
| + | Assign (Dateizeiger, | ||
| + | Reset (Dateizeiger); | ||
| + | |||
| + | REPEAT | ||
| + | ReadLn (Dateizeiger, | ||
| + | WriteLn (Gelesen); | ||
| + | UNTIL EOF (Dateizeiger); | ||
| + | |||
| + | Close (Dateizeiger); | ||
| + | END. | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Datei schreiben === | ||
| + | |||
| + | < | ||
| + | PROGRAM Datei_schreiben; | ||
| + | |||
| + | USES Crt; | ||
| + | |||
| + | VAR Dateizeiger: | ||
| + | Dateiinhalt, | ||
| + | |||
| + | BEGIN | ||
| + | Assign (Dateizeiger, | ||
| + | ReWrite (Dateizeiger); | ||
| + | |||
| + | WriteLn (' | ||
| + | WriteLn (' | ||
| + | |||
| + | REPEAT | ||
| + | ReadLn (Dateiinhalt); | ||
| + | IF Dateiinhalt <> ' | ||
| + | WriteLn (Dateizeiger, | ||
| + | UNTIL Dateiinhalt = ' | ||
| + | |||
| + | Close (Dateizeiger); | ||
| + | END. | ||
| + | </ | ||
| + | |||
| + | > cat / | ||
| + | |||
| + | |||
| + | === Programme ausführen === | ||
| + | |||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | RunCommand('/ | ||
| + | | ||
| + | ShellExecute(' | ||
| + | ShellExecute(' | ||
| + | | ||
| + | // Simple one-liner (ignoring error returns) : | ||
| + | if ShellExecute(0, | ||
| + | | ||
| + | // Execute a Batch File : | ||
| + | if ShellExecute(0, | ||
| + | | ||
| + | // Open a command window in a given folder : | ||
| + | if ShellExecute(0, | ||
| + | | ||
| + | // Open a webpage URL in the default browser using ' | ||
| + | if ShellExecute(0, | ||
| + | | ||
| + | ShellExecute(0, | ||
| + | |||
| + | var olddir: String; | ||
| + | olddir := GetCurrentDir; | ||
| + | SetCurrentDir('/ | ||
| + | ExecuteProcess(' | ||
| + | SetCurrentDir(olddir); | ||
| + | |||
| + | program Test01; | ||
| + | | ||
| + | USES | ||
| + | Crt, | ||
| + | ShellApi; | ||
| + | | ||
| + | var | ||
| + | Laufwerk: char; | ||
| + | Kommando: string; | ||
| + | | ||
| + | begin | ||
| + | Writeln(' | ||
| + | Readln(Laufwerk); | ||
| + | | ||
| + | If (Laufwerk = '' | ||
| + | | ||
| + | Writeln; | ||
| + | Writeln(' | ||
| + | Readln; {Wartet auf Eingabe des Benutzers, ansonsten würde das Programm sofort wieder beendet} | ||
| + | Writeln; | ||
| + | | ||
| + | Kommando := ('"' | ||
| + | Writeln(' | ||
| + | Result := ShellExecute(0, | ||
| + | Writeln(Result); | ||
| + | Writeln; | ||
| + | | ||
| + | Writeln(' | ||
| + | Readln; {Wartet auf Eingabe des Benutzers, ansonsten würde das Programm sofort wieder beendet} | ||
| + | end. | ||
| + | |||
| + | |||
| + | ==== sonstiges ==== | ||
| + | |||
| + | * [[http:// | ||
