Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

K (Autor)
(Strings)
 
(18 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 30: Zeile 30:
 
Wie oben angesprochen setzt sich alles in der Digitaltechnik aus Bytes zusammen. Wie das funktioniert soll diese Tabelle erläutern:
 
Wie oben angesprochen setzt sich alles in der Digitaltechnik aus Bytes zusammen. Wie das funktioniert soll diese Tabelle erläutern:
 
{| {{Blauetabelle}}
 
{| {{Blauetabelle}}
  |'''Bit'''
+
  |'''Bit-Nummer'''
 +
|7
 +
|6
 +
|5
 +
|4
 +
|3
 +
|2
 +
|1
 +
|0
 +
|-
 +
|'''Bit-Wert'''
 
  |128
 
  |128
 
  |64
 
  |64
Zeile 40: Zeile 50:
 
  |1
 
  |1
 
  |-
 
  |-
  |'''Wert'''
+
  |'''Bitmuster'''
 
  |0
 
  |0
 
  |1
 
  |1
Zeile 50: Zeile 60:
 
  |0
 
  |0
 
  |}
 
  |}
Diese Bitfolge stellt die Zahl 100 dar. Ist das Bit unter der entsprechenden Zahl gleich 1, wird die Zahl addiert, ist das Bit 0 dann nicht. So kann man aus einsen und nullen ganze Zahlen machen. Die Menge der Bits bestimmt den Wertebereich der Variablen, z.B. hat die oben gezeigte Tabelle 8 Bits (also ein 8-Bit Byte). Würde man jetzt jedes Bit auf eins setzen, hätte man den maximalen Wertebereich, in unserem Fall 255.
+
 
 +
 
 +
 
 +
Diese Bitfolge (Bitmuster) stellt die Zahl 100 dar. Ist das Bit unter der entsprechenden Zahl gleich 1, wird die Zahl addiert, ist das Bit 0 dann nicht. So kann man aus einsen und nullen ganze Zahlen machen. Die Menge der Bits bestimmt den Wertebereich der Variablen, z.B. hat die oben gezeigte Tabelle 8 Bits (also ein 8-Bit Byte). Würde man jetzt jedes Bit auf eins setzen, hätte man den maximalen Wertebereich, in unserem Fall 255.
 
In Bascom werden passenderweise auch 8-Bit Bytes verwendet.
 
In Bascom werden passenderweise auch 8-Bit Bytes verwendet.
 +
 +
Da hier ein Binärsystem vorliegt (Basis 2) könnte man auch die folgende Schreibweise anwenden:
 +
{{Registertabelle8Bit|NEIN|JA|JA|NEIN|NEIN|JA|NEIN|NEIN}}
 +
(2^2) + (2^5) + (2^6) = 100 Dez. (nur die gesetzten Bits bzw, deren Nummer als Hochzahl addieren) {2^0 = 1}.
 +
  
  
Zeile 68: Zeile 86:
 
  Name = "a" 'speichert den Buchstaben a in der Variable
 
  Name = "a" 'speichert den Buchstaben a in der Variable
 
  Name = Name + 2 'addiert 2 zur Variablen, funktioniert logischerweise nur korrekt, wenn die Variable eine Zahl als Wert hat
 
  Name = Name + 2 'addiert 2 zur Variablen, funktioniert logischerweise nur korrekt, wenn die Variable eine Zahl als Wert hat
 +
Name = Name + &B00000010 (auch wieder 2 Addieren allerdings in binärer (&B) Schreibweise)
 
   
 
   
 
|}
 
|}
Zeile 78: Zeile 97:
  
 
{|{{Blauetabelle}}
 
{|{{Blauetabelle}}
|'''Wertebereich:''' -32767 bis +32768
+
|'''Wertebereich:''' '''-32768''' bis '''+32767'''
  
 
'''Erzeugung in Bascom:'''
 
'''Erzeugung in Bascom:'''
 
  Dim Name As Integer
 
  Dim Name As Integer
  
'''Wertzweisung in Bascom
+
'''Wertzweisung in Bascom:'''
 
  Name = 2500 'setzt die Variable auf 2500
 
  Name = 2500 'setzt die Variable auf 2500
 
  Name = Name + 5000 'addiert 5000 zur Variablen
 
  Name = Name + 5000 'addiert 5000 zur Variablen
 
|}
 
|}
  
 +
Darstellung von Integerzahlen als Binärwert
 +
      1 = &B0000000000000001
 +
    -1 = &B1111111111111111
 +
      2 = &B0000000000000010
 +
    -2 = &B1111111111111110
 +
    255 = &B0000000011111111
 +
  -255 = &B1111111100000001
 +
  32767 = &B0111111111111111
 +
-32768 = &B1000000000000000
 +
 +
Bascom Code: ''print bin (Name)''
  
 
== Long-Variablen ==
 
== Long-Variablen ==
Zeile 111: Zeile 141:
 
Steckbrief:
 
Steckbrief:
  
{|{{Blauetabelle}}
+
'''Wertebereich:''' 0 bis 65535
|'''Wertebereich:''' 0 bis 65535
+
 
 +
{| {{Blauetabelle}}
 +
|'''Bit-Nummer'''
 +
|15
 +
|14
 +
|13
 +
|12
 +
|11
 +
|10
 +
|9
 +
|8
 +
|7
 +
|6
 +
|5
 +
|4
 +
|3
 +
|2
 +
|1
 +
|0
 +
|-
 +
|'''Bit-Wert'''
 +
|32768
 +
|16384
 +
|8192
 +
|4096
 +
|2048
 +
|1024
 +
|512
 +
|256
 +
|128
 +
|64
 +
|32
 +
|16
 +
|8
 +
|4
 +
|2
 +
|1
 +
|-
 +
|'''Bitmuster'''
 +
|1
 +
|1
 +
|0
 +
|0
 +
|1
 +
|1
 +
|0
 +
|0
 +
|1
 +
|1
 +
|0
 +
|0
 +
|1
 +
|1
 +
|0
 +
|0
 +
|}
 +
Dieses Bitmuster (&B1100110011001100) stellt den Wert 52428 (dez.) dar.
 +
 
  
 
'''Erzeugung in Bascom:'''
 
'''Erzeugung in Bascom:'''
Zeile 120: Zeile 207:
 
  Name = 3333 'setzt die Variable auf 3333
 
  Name = 3333 'setzt die Variable auf 3333
 
  Name = Name + 20 'addiert 20 zur Variablen
 
  Name = Name + 20 'addiert 20 zur Variablen
|}
+
Name = Name + &B00010100 'addiert auch 20 (Binär 00010100)zur Variablen
 
+
 
+
  
 
== Strings ==
 
== Strings ==
Zeile 131: Zeile 216:
  
 
{|{{Blauetabelle}}
 
{|{{Blauetabelle}}
|'''Wertebereich:''' max. 70 Zeichen
+
|'''Wertebereich:''' max. 254 Zeichen
  
 
'''Erzeugung in Bascom:'''
 
'''Erzeugung in Bascom:'''
 
  Dim Name As String * 50 'Die Zahl am Ende gibt an, wie viele Zeichen die Variable maximal enthalten kann
 
  Dim Name As String * 50 'Die Zahl am Ende gibt an, wie viele Zeichen die Variable maximal enthalten kann
                         'Hier kann man 0 bis 70 auswählen
+
                         'Hier kann man 1 bis 254 auswählen
  
 
'''Wertzuweisung in Bascom:'''
 
'''Wertzuweisung in Bascom:'''
Zeile 141: Zeile 226:
 
|}
 
|}
  
 
+
Bei der Zuweisung von Text zu Stringvariablen muss man als Programmierer selbst darauf achten, dass die Stringlänge, die man mit z.B. "Dim Name As String * 50" definiert hat,  nicht überschritten wird. Sonst sind unvorhersehbare Effekte und Absturz möglich.
  
 
== Konstanten ==
 
== Konstanten ==
Zeile 154: Zeile 239:
 
|'''Wertebereich:'''Von mir noch nicht erprobt, sollte ihn jemand kennen bitte hier eintragen.
 
|'''Wertebereich:'''Von mir noch nicht erprobt, sollte ihn jemand kennen bitte hier eintragen.
  
'''Erzeugung in Bascom + Wertzuweisung'''
+
'''Erzeugung in Bascom + Wertzuweisung:'''
  Const Name = "test"
+
  Const Name = "test" 'Weist der Konstante "Name" den Text in Anführungszeichen zu
 +
mit Zahlen funktioniert das auch:
 +
Const Name = 1234 'Weist der Konstante "Name" den Wert 1234 zu
 
|}
 
|}
  
 
Wie man sieht muss man den Wert direkt bei der Erzeugung angeben.
 
Wie man sieht muss man den Wert direkt bei der Erzeugung angeben.
 
  
 
== Und was soll das ganze? ==
 
== Und was soll das ganze? ==
Zeile 168: Zeile 254:
  
 
== Autor ==
 
== Autor ==
*[[Benutzer:Shahri|Shahri]] 17:45, 17. Mai 2006 (CEST)
+
*[[Benutzer:Shahri|Shahri]] 17:45, 17. Mai 2006 (CEST)
  
 
[[Kategorie:Microcontroller]]
 
[[Kategorie:Microcontroller]]

Aktuelle Version vom 19. Januar 2012, 15:30 Uhr

Variablen werden benutzt, um Daten zu speichern. Dieser Artikel soll eine Übersicht über die Variablen in Bascom bieten.

Zur Erklärung

In den Quelltexten zur Erzeugung der Variablen steht "Name" immer für den Namen, der der Variablen zugewiesen werden soll (ist ja auch logisch ;-)

Bits

Alle Zahlen und Buchstaben in der Digitaltechnik bestehen letztendlich aus mehreren Bits, doch dazu mehr im Abschnitt Bytes. Ein Bit kann entweder 0 oder 1 sein und ist somit die Variable mit dem kleinsten Wertebereich.

Hier der Steckbrief:

Wertbereich: 0 bis 1

Erzeugung in Bascom:

Dim Name As Bit

Wertzuweisung in Bascom:

Name = 1 'setzt die Variable auf 1
Name = 0 'setzt die Variable auf 0

oder

Set Name 'setzt die Variable auf 1
Reset Name 'setzt die Variable auf 0


Bytes

Wie oben angesprochen setzt sich alles in der Digitaltechnik aus Bytes zusammen. Wie das funktioniert soll diese Tabelle erläutern:

Bit-Nummer 7 6 5 4 3 2 1 0
Bit-Wert 128 64 32 16 8 4 2 1
Bitmuster 0 1 1 0 0 1 0 0


Diese Bitfolge (Bitmuster) stellt die Zahl 100 dar. Ist das Bit unter der entsprechenden Zahl gleich 1, wird die Zahl addiert, ist das Bit 0 dann nicht. So kann man aus einsen und nullen ganze Zahlen machen. Die Menge der Bits bestimmt den Wertebereich der Variablen, z.B. hat die oben gezeigte Tabelle 8 Bits (also ein 8-Bit Byte). Würde man jetzt jedes Bit auf eins setzen, hätte man den maximalen Wertebereich, in unserem Fall 255. In Bascom werden passenderweise auch 8-Bit Bytes verwendet.

Da hier ein Binärsystem vorliegt (Basis 2) könnte man auch die folgende Schreibweise anwenden:

Bit: 7 6 5 4 3 2 1 0
Name: NEIN JA JA NEIN NEIN JA NEIN NEIN

(2^2) + (2^5) + (2^6) = 100 Dez. (nur die gesetzten Bits bzw, deren Nummer als Hochzahl addieren) {2^0 = 1}.


So viel zur Theorie, kommen wir zur Praxis.

Dazu wieder ein kleiner Steckbrief:

Wertebereich: 0 bis 255 und alle Buchstaben des Alphabets (ausgenommen Umlaute + das ß)

Erzeugung in Bascom:

Dim Name As Byte

Wertzuweisung in Bascom:

Name = 100 'setzt die Variable auf 100
Name = "a" 'speichert den Buchstaben a in der Variable
Name = Name + 2 'addiert 2 zur Variablen, funktioniert logischerweise nur korrekt, wenn die Variable eine Zahl als Wert hat
Name = Name + &B00000010 (auch wieder 2 Addieren allerdings in binärer (&B) Schreibweise)

Integer

Im Gegensatz zu Bytes können Integer (Integralzahlen) nur Zahlen und keine Buchstaben speichern. Außerdem können sie auch Zahlen im negativen Bereich speichern.

Mehr ist dazu nicht zu sagen, also gleich der Steckbrief:

Wertebereich: -32768 bis +32767

Erzeugung in Bascom:

Dim Name As Integer

Wertzweisung in Bascom:

Name = 2500 'setzt die Variable auf 2500
Name = Name + 5000 'addiert 5000 zur Variablen

Darstellung von Integerzahlen als Binärwert

     1 = &B0000000000000001
    -1 = &B1111111111111111
     2 = &B0000000000000010
    -2 = &B1111111111111110
   255 = &B0000000011111111
  -255 = &B1111111100000001
 32767 = &B0111111111111111
-32768 = &B1000000000000000

Bascom Code: print bin (Name)

Long-Variablen

Long-Variablen haben den größten Wertebereich.

Hier wieder ein Steckbrief:

Wertebereich: -2147483648 bis 2147483647

Erzeugung in Bascom:

Dim Name As Long

Wertzuweisung in Bascom:

Name = 10000000 'setzt die Variable auf 1000000
Name = Name + 30234 'addiert 30234 zur Variablen


Word-Variablen

Words können ebenfalls nur Zahlen speichern, aber sind nur im positivem Bereich gültig. Steckbrief:

Wertebereich: 0 bis 65535

Bit-Nummer 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bit-Wert 32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
Bitmuster 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0

Dieses Bitmuster (&B1100110011001100) stellt den Wert 52428 (dez.) dar.


Erzeugung in Bascom:

Dim Name As Word

Wertzuweisung in Bascom:

Name = 3333 'setzt die Variable auf 3333
Name = Name + 20 'addiert 20 zur Variablen
Name = Name + &B00010100 'addiert auch 20 (Binär 00010100)zur Variablen

Strings

Strings können sowohl Zahlen als auch Buchstaben speichern, allerdings kann man mit den Zahlen in Strings nicht rechnen. Sie sind besonders für längere Textabschnitte wie Namen, etc. geeignet.

Aber ein Steckbrief sagt mehr als tausend Worte:

Wertebereich: max. 254 Zeichen

Erzeugung in Bascom:

Dim Name As String * 50 'Die Zahl am Ende gibt an, wie viele Zeichen die Variable maximal enthalten kann
                        'Hier kann man 1 bis 254 auswählen

Wertzuweisung in Bascom:

Name = "Hallo! 123456" 'Weist der Variablen den Text in Anführungszeichen zu

Bei der Zuweisung von Text zu Stringvariablen muss man als Programmierer selbst darauf achten, dass die Stringlänge, die man mit z.B. "Dim Name As String * 50" definiert hat, nicht überschritten wird. Sonst sind unvorhersehbare Effekte und Absturz möglich.

Konstanten

Wie dem Namen zu entnehmen ist, handelt es sich hier nicht wirklich um Variablen. Aber es wäre unnötig extra dafür einen Artikel anzulegen, also wird dieses Thema hier mit behandelt. Konstanten kann man nur einmal einen Wert zuweisen, danach ist dieser unveränderlich. Auch sie können sowohl Zahlen als auch Buchstaben speichern.

Der Steckbrief:

Wertebereich:Von mir noch nicht erprobt, sollte ihn jemand kennen bitte hier eintragen.

Erzeugung in Bascom + Wertzuweisung:

Const Name = "test" 'Weist der Konstante "Name" den Text in Anführungszeichen zu

mit Zahlen funktioniert das auch:

Const Name = 1234 'Weist der Konstante "Name" den Wert 1234 zu

Wie man sieht muss man den Wert direkt bei der Erzeugung angeben.

Und was soll das ganze?

Für alle die sich jetzt fragen, was genau dieser Artikel bewirken soll:

Ich weiß, dass viel erklärt wird, was die meisten sowieso schon wissen (z.B. dass die Zahlen aus Bits bestehen), aber keiner wusste es von Anfang an, jeder muss es irgendwann gelernt haben. Dennoch dient dieser Artikel nicht nur Anfängern als Tutorial, sondern auch Fortgeschrittenen als Nachschlagewerk (Ich wette es gibt nicht viele Leute, die den Wertebereich der Long-Variablen auswendig können ;-)


Autor

  • Shahri 17:45, 17. Mai 2006 (CEST)

LiFePO4 Speicher Test