FreeBASIC Einsteigerhandbuch
Inhaltsverzeichnis
- Einleitung
- 1 Über das Buch
- 2 In diesem Buch verwendete Konventionen
- 3 Rechtliches
- 4 Weitere Informationen
- 5 Danksagung
TEIL 1: Einführung
- 1. Eine kurze Einführung in FreeBASIC
- 1.1 Was ist eine Programmiersprache?
- 1.2 Was ist FreeBASIC?
- 1.3 Unterschiede zu QuickBASIC
- 1.4 Vor- und Nachteile von FreeBASIC
- 2. Installation und Inbetriebnahme
- 2.1 Installation
- 2.1.1 Installation unter Windows
- 2.1.1.1 Komplettpaket
- 2.1.1.2 Getrennte Installation
- 2.1.2 Installation unter Linux
- 2.2 Erstes Programm
- 2.3 Problembehebung
- 2.3.1 Probleme beim Start
- 2.3.2 Probleme beim Compilieren
- 2.4 Wie wird aus meinem Quelltext ein Programm?
TEIL 2: Grundkonzepte
- 3. Aufbau eines FreeBASIC-Programmes
- 3.1 Grundaufbau und Ablauf
- 3.2 Kommentare
- 3.3 Zeilenfortsetzungszeichen
- 3.4 Trennung von Befehlen mit Doppelpunkt
- 4. Bildschirmausgabe
- 4.1 Der PRINT-Befehl
- 4.2 Ausgabe von Variablen
- 4.2.1 Deklaration von Variablen
- 4.2.2 Wertzuweisung
- 4.2.3 Wertvertauschung
- 4.2.4 Ausgabe des Variablenwertes
- 4.3 Formatierung der Ausgabe
- 4.3.1 Direkte Positionierung mit LOCATE
- 4.3.2 Positionierung mit TAB und SPC
- 4.3.3 Cursor-Position ermitteln: POS und CSRLIN
- 4.3.4 Farbige Ausgabe
- 4.3.5 Bildschirm löschen mit CLS
- 4.4 Fragen zum Kapitel
- 5. Tastatureingabe
- 5.1 Der INPUT-Befehl
- 5.2 Eingabe einzelner Zeichen
- 5.2.1 INPUT() als Funktion
- 5.2.2 INKEY()
- 5.3 Fragen zum Kapitel
- 6. Variablen und Konstanten
- 6.1 Ganzzahlen
- 6.1.1 Verfügbare Ganzzahl-Datentypen
- 6.1.2 Alternative Schreibweise: INTEGER
- 6.1.3 Rechnen mit Ganzzahlen
- 6.1.4 Kurzschreibweisen
- 6.2 Gleitkommazahlen
- 6.2.1 Darstellungsbereich von Gleitkommazahlen
- 6.2.2 Rechengenauigkeit bei Gleitkommazahlen
- 6.3 Zeichenketten
- 6.3.1 Arten von Zeichenketten
- 6.3.2 Aneinanderhängen zweier Zeichenketten
- 6.4 Wahrheitswerte
- 6.5 Konstanten
- 6.6 Nummerierungen (Enumerations)
- 6.7 Weitere Speicherstrukturen
- 6.8 Fragen zum Kapitel
- 7. Benutzerdefinierte Datentypen (UDTs)
- 7.1 Deklaration
- 7.2 Mitgliederzugriff mit WITH
- 7.3 Speicherverwaltung
- 7.4 Bitfelder
- 7.5 UNIONs
- 7.6 Fragen zum Kapitel
- 8. Datenfelder (Arrays)
- 8.1 Deklaration und Zugriff
- 8.2 Mehrdimensionale Arrays
- 8.3 Dynamische Arrays
- 8.3.1 Deklaration und Redimensionierung
- 8.3.2 Werte-Erhalt beim Redimensionieren
- 8.4 Weitere Befehle
- 8.4.1 Grenzen ermitteln: LBOUND() und UBOUND()
- 8.4.2 Nur die Dimensionenzahl festlegen: ANY
- 8.4.3 Implizite Grenzen
- 8.4.4 Löschen mit ERASE
- 8.5 Fragen zum Kapitel
- 9. Pointer (Zeiger)
- 9.1 Speicheradresse ermitteln
- 9.2 Pointer deklarieren
- 9.3 Speicherverwaltung bei Arrays
- 9.4 Fragen zum Kapitel
- 10. Bedingungen
- 10.1 Einfache Auswahl: IF ... THEN
- 10.1.1 Einzeilige Bedingungen
- 10.1.2 Mehrzeilige Bedingungen (IF-Block)
- 10.1.3 Alternativauswahl
- 10.2 Bedingungsstrukturen
- 10.2.1 Vergleiche
- 10.2.2 Logische Operatoren
- 10.2.3 Das Binärsystem
- 10.2.4 AND und OR als Bit-Operatoren
- 10.2.5 ANDALSO und ORELSE
- 10.2.6 Weitere Bit-Operatoren: XOR, EQV, IMP und NOT
- 10.3 Mehrfachauswahl: SELECT CASE
- 10.3.1 Grundaufbau
- 10.3.2 Erweiterte Möglichkeiten
- 10.3.3 SELECT CASE AS CONST
- 10.4 Bedingungsfunktion: IIF()
- 10.5 Welche Möglichkeit ist die beste?
- 10.6 Fragen zum Kapitel
- 11. Schleifen und Kontrollanweisungen
- 11.1 Sprunganweisungen
- 11.2 DO ... LOOP
- 11.3 WHILE ... WEND
- 11.4 FOR ... NEXT
- 11.4.1 Einfache FOR-Schleife
- 11.4.2 FOR-Schleife mit angegebener Schrittweite
- 11.4.3 FOR i AS datentyp
- 11.4.4 Übersprungene Schleifen
- 11.4.5 Fallstricke
- 11.4.5.1 Gleitkomma-Schrittweite
- 11.4.5.2 Überschreitung des Wertebereichs
- 11.5 Kontrollanweisungen
- 11.5.1 Fortfahren mit CONTINUE
- 11.5.2 Vorzeitiges Verlassen mit EXIT
- 11.5.3 Kontrollstrukturen in verschachtelten Blöcken
- 11.6 Systemauslastung in Dauerschleifen
- 11.7 Fragen zum Kapitel
- 12. Prozeduren und Funktionen
- 12.1 Einfache Prozeduren
- 12.2 Verwaltung von Variablen
- 12.2.1 Parameterübergabe
- 12.2.2 Globale Variablen
- 12.2.3 Statische Variablen
- 12.3 Unterprogramme bekannt machen
- 12.3.1 Die Deklarationszeile
- 12.3.2 Optionale Parameter
- 12.3.3 OVERLOAD
- 12.4 Funktionen
- 12.5 Weitere Eigenschaften der Parameter
- 12.5.1 Übergabe von Arrays
- 12.5.2 BYREF und BYVAL
- 12.5.3 Parameterübergabe AS CONST
- 12.5.4 Aufrufkonvention für die Parameter
- 12.5.5 Variable Parameterlisten
- 12.5.5.1 Abfrage variabler Parameterlisten
- 12.5.5.2 Kopie erstellen
- 12.5.5.3 Frühere Methoden
- 12.6 Fragen zum Kapitel
TEIL 3: Datenverarbeitung
- 13. Datentypen umwandeln
- 13.1 Allgemeine Umwandlung: CAST()
- 13.2 Umwandlung in einen String
- 13.3 Implizite Umwandlung
- 13.4 ASCII-Code
- 13.4.1 Ursprung und Bedeutung des ASCII-Codes
- 13.4.2 ASC() und CHR()
- 13.4.3 Binäre Kopie erstellen
- 13.5 Fragen zum Kapitel
- 14. Verarbeitung von Zahlen
- 14.1 Mathematische Funktionen
- 14.1.1 Quadratwurzel, Absolutbetrag und Vorzeichen
- 14.1.2 Winkelfunktionen
- 14.1.3 Exponentialfunktion und Logarithmus
- 14.1.4 Rundung
- 14.1.5 Modulo-Berechnung
- 14.1.6 Zufallszahlen
- 14.2 Zahlensysteme
- 14.2.1 Darstellung in Nicht-Dezimalsystemen
- 14.2.2 BIN(), OCT() und HEX()
- 14.3 Bit-Manipulationen
- 14.3.1 Manipulation über Bitoperatoren
- 14.3.2 Einzelne Bit lesen und setzen
- 14.3.3 Vergleich
- 14.3.4 LOBYTE() und seine Freunde
- 14.3.5 Bit-Verschiebung
- 14.4 Fragen zum Kapitel
- 15. Stringmanipulation
- 15.1 Speicherverwaltung
- 15.1.1 Verwaltung eines ZSTRING
- 15.1.2 Verwaltung eines WSTRING
- 15.1.3 Verwaltung eines STRING
- 15.2 Stringfunktionen
- 15.2.1 LEN(): Länge eines Strings ermitteln
- 15.2.2 Die Funktionen SPACE() und STRING()
- 15.2.3 LEFT(), RIGHT() und MID()
- 15.2.4 Zeichenketten modifizieren
- 15.2.4.1 MID als Anweisung
- 15.2.4.2 LSET und RSET
- 15.2.5 Führende/angehängte Zeichen entfernen: LTRIM(), RTRIM() und TRIM()
- 15.2.6 Umwandlung in Groß- bzw. Kleinbuchstaben: UCASE() und LCASE()
- 15.2.7 Teilstring suchen: INSTR() und INSTRREV()
- 15.3 Umlaute und andere Sonderbuchstaben
- 15.3.1 Problemstellung: Darstellung von Sonderzeichen
- 15.3.2 Erster Lösungsversuch: Speicherformat anpassen
- 15.3.3 Zweiter Lösungsversuch: Sonderzeichen als Konstanten
- 15.4 Escape-Sequenzen
- 15.5 Fragen zum Kapitel
- 16. Datei-Zugriff
- 16.1 Datei öffnen und schließen
- 16.1.1 Dateinummer festlegen
- 16.1.2 Der Dateimodus
- 16.1.2.1 Sequentieller Zugriff
- 16.1.2.2 Random-Access und BINARY
- 16.1.2.3 Vergleich der Dateimodi
- 16.1.3 Zugriffsart beschränken
- 16.1.4 Datei für andere Programme sperren
- 16.1.5 Text-Encoding
- 16.1.6 Datei(en) schließen
- 16.2 Lesen und Schreiben sequentieller Daten
- 16.2.1 PRINT# und WRITE#
- 16.2.2 INPUT#, LINE INPUT#
- 16.2.3 INPUT() und WINPUT() für Dateien
- 16.3 Zugriff auf binäre Daten
- 16.3.1 Binäre Daten speichern
- 16.3.2 Binäre Daten einlesen
- 16.3.3 Binäre Speicherung von Strings variabler Länge
- 16.3.4 Position des Dateizeigers
- 16.4 Dateiende ermitteln
- 16.4.1 End Of File (EOF)
- 16.4.2 Length Of File (LOF)
- 16.5 Datei löschen
- 16.6 Standard-Datenströme
- 16.6.1 Eine kurze Einführung
- 16.6.2 Öffnen und Schließen eines Standard-Datenstroms
- 16.6.3 OPEN PIPE
- 16.7 Hardware-Zugriffe: OPEN COM und OPEN LPT
- 16.8 Fragen zum Kapitel
- 17. Betriebssystem-Anweisungen
- 17.1 Ordnerfunktionen
- 17.1.1 Kurze Einführung in das Ordnersystem
- 17.1.1.1 Absolute Pfadangaben
- 17.1.1.2 Relative Pfadangaben
- 17.1.2 Arbeitsverzeichnis anzeigen und wechseln: CURDIR() und CHDIR()
- 17.1.3 Programmpfad anzeigen: EXEPATH()
- 17.1.4 Ordner anlegen und löschen: MKDIR() und RMDIR()
- 17.2 Dateifunktionen
- 17.2.1 Dateien umbenennen und verschieben: NAME()
- 17.2.2 Dateien kopieren: FILECOPY()
- 17.2.3 Dateiinformationen abrufen: FILEATTR(), FILELEN() und FILEDATETIME()
- 17.2.4 Auf Existenz prüfen: FILEEXISTS()
- 17.2.5 Dateien suchen: DIR()
- 17.3 Externe Programme starten
- 17.3.1 CHAIN(), EXEC() und RUN()
- 17.3.2 SHELL()
- 17.4 Kommandozeilenparameter auswerten
- 17.5 Umgebungsvariablen abfragen und setzen
- 17.6 Fragen zum Kapitel
- 18. Datum und Zeit
- 18.1 Zeitmessung
- 18.1.1 SLEEP
- 18.1.2 TIMER()
- 18.2 Abruf und Änderung der Systemzeit
- 18.3 Serial Numbers
- 18.3.1 Aktuelles Datum mit NOW() und FORMAT
- 18.3.2 Setzen einer _Serial Number_
- 18.3.3 Teilinformationen einer _Serial Number_
- 18.3.4 Namen des Wochentage und Monate
- 18.3.5 Rechnen mit Datum und Zeit
- 18.4 Fragen zum Kapitel
ANHANG
- Anhang A: Antworten zu den Fragen
- Anhang B: Compiler-Optionen
- B.1 Grundlegende Compileroptionen
- B.2 Dialekt wählen
- B.3 Fehlerbehandlung einstellen
- B.4 Unterdrüchung des Konsolenfensters
- B.5 Weitere Optionsschalter
- B.5.1 Erzeugung von Bibliotheken (Libraries) mit privaten/öffentlichen Prozeduren
- B.5.2 Behandlung von Programmdateien (*.bas und *.bi)
- B.5.3 Bedingtes Compilieren und Präprozessor
- B.5.4 Fehlerbehandlung
- B.5.5 Programmerstellung
- B.5.6 Informationen
- Anhang C: ASCII-Zeichentabelle
- Anhang D: MULTIKEY-Scancodes
- Anhang E: Konstanten und Funktionen der _vbcompat.bi_
- E.1 Datum und Zeit
- E.1.1 Verfügbare Funktionen
- E.1.2 Definierte Konstanten
- E.2 Formatierungsmöglichkeiten durch FORMAT()
- E.3 Konstanten für die Attribute von DIR
- E.4 Dateifunktionen
- E.4.1 Verfügbare Funktionen
- E.4.2 Definierte Konstanten
- Anhang F: Vorrangregeln (Hierarchie der Operatoren)
- Anhang G: FreeBASIC-Schlüsselwörter
- G.1 Schlüsselwörter
- G.2 Metabefehle
- G.3 Vordefinierte Symbole
- Index
- Liste der Quelltexte