Zwei Bedingungen wie gleichzeitig prüfen?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 02 10 2024  04:38:56      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Zwei Bedingungen wie gleichzeitig prüfen?

    







BID = 636211

Kleinspannung

Urgestein



Beiträge: 13356
Wohnort: Tal der Ahnungslosen
 

  


Hallo liebe Forenkollegen!
Ich hoffe,ihr könnt einem alten minderbemittelten Mann mal auf die Sprünge helfen.
Mein Spatzenhirn läßt mich grad fürchterlich im Stich.
(alle Bascom-Gegner brauchen nicht weiterlesen,und benutzen bitte das Kreuz oben rechts)
Also:
Ich möchte in einer If >> Then >> Else Anweisung zwei Variable gleichzeitig auf "wahr" oder "falsch" prüfen.
So in der Art:
Wenn A > B und > C,dann mache dies ,wenn nicht mache jenes.
Ich hab schon alle möglichen mir in den Sinn gekommenen Varianten durchprobiert,aber jedesmal hat mich der Compiler vollgemeckert weil ihm die Syntax nicht passte.
So,lange Rede kurzer Sinn.
Wie geht das wohl,wenn man im Gegensatz zu mir weiß was man tut?
Danke.

_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)

BID = 636216

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

 

  

Möchtest du das konkret mit diesen Größenvergleichen machen oder allgemein, also z.B. sowas:

If Bedingung1 And Bedingung2 Then
'tu dies
Else
'tu das
End If

Dazu kannst du die logischen Operatoren And und Or benutzen.

In C wären das && und ||, wobei man in C bei if klammert, was ich übrigens allgemein empfehlen würde: Klammern zeigt die Priorität direkt auf, ist praktisch, wenn man die Prioritäten der verwendeten Operatoren nicht kennt.

Edit:

Zitat :

A > B und > C,


Das ergibt keinen Sinn, denn da wird ein boolscher Ausdruck (A > B) mit einer Zahl verglichen.
Du müsstest die mathematische Schreibweise

A > B > C (also A ist größer B ist größer C) ausklammern in

(A > B) And (B > C).

In C ist das ein wenig anders, da gibt zwar explizit den boolschen Datentyp bool (bzw. eigentlich _Bool), aber dort haben auch numerische Ausdrücke wie a + b einen boolschen Charakter, nämlich wenn das Ergebnis 0 (=false) oder ungleich 0 ist (=true). In C könnte man das mathematisch schreiben, würde dadurch aber nichts erreichen .





_________________


[ Diese Nachricht wurde geändert von: DonComi am 24 Sep 2009  1:57 ]

BID = 636219

Her Masters Voice

Inventar


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 5308
Wohnort: irgendwo südlich von Berlin

ich würde die Grundaussage etwas anders interpretieren und zwar dass A sowohl grösser B als auch grösser C sein soll um die Abfrage zu erfüllen.

wie man das ins BASIC kriegt hängt vom Compiler ab. Entweder kann man schreiben

IF (A > B) and (A > C) THEN

oder wenn das der BASIC Dialekt nicht versteht kann er vielleicht mehrere IF-Ebenen verkraften, dann sähe es so (oder ähnlich) aus:

IF (A > B) THEN

IF (A > C) THEN ...

ENDIF

ENDIF

_________________
Tschüüüüüüüs

Her Masters Voice
aka
Frank

***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************

BID = 636220

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Wenn ihr euch schon nicht einig seid, was der Ausdruck
Wenn A > B und > C,dann mache dies ,wenn nicht mache jenes
zu bedeuten hat, was soll dann erst der arme Compiler denken?

Kleinspannung möchte, wie er schreibt, zwei Variablen auf T|F prüfen, schreibt dann aber drei als arithmetischen Ausdruck hin.
Oder ist einer der drei Werte etwa eine Konstante ?

Imho geht das deshalb schief, weil zunächst der arithmetische Ausdruck A > B entweder T oder F ergibt,
und darauf folgt dann eine Subtraktion der Art: Wahr-5 = ?? .
Das hat DonComi schon völlig richtig gesehen.
Das Ergebnis wäre dann vom Typ "Nachts ist es kälter als draussen" und dank der Voraussicht der Compilerbauer weigert sich die Maschine solch unsinnige Befehle auszuführen.

P.S.:
Im Übrigen werden solche Berechnungen immer nacheinander durchgeführt.
Wenn die drei Werte tatsächlich gleichzeitig verarbeitet werden müssen, weil z.B. die Gefahr besteht, dass sich einer während der Berechnung ändert, muss man anders vorgehen und dabei auch die Hardware berücksichtigen.



[ Diese Nachricht wurde geändert von: perl am 24 Sep 2009  3:38 ]

BID = 636221

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Moin,

Stimmt, den Ausdruck kann man unterschiedlich interpretieren, aber ich glaube, darum geht es hier gar nicht.

Ich glaube eher, dass dies
>> "Anweisung zwei Variable gleichzeitig auf "wahr" oder "falsch" prüfen."
hier die Schlüsselfrage ist.
Und die Antwort darauf steht oben; dazu benutzt man logische Operatoren, in Basic halt And, Or und Not.

Das passiert übrigens in den meisten Fällen nicht gleichzeitig in Form einer atomaren Instruktion, schon gar nicht in AVRs.
Also, sollten Variablen von außen veränderbar sein (durch ISRs oder durch gemappte Speicherbereiche/IOs) muss man dafür sorgen, dass sich Parameter nicht während der Auswertung ändern können oder das Programm fehlertolerant schreiben, zumindest für diese.

Edit: Aber das kann man auch in perls Edit nachlesen

_________________


[ Diese Nachricht wurde geändert von: DonComi am 24 Sep 2009  3:46 ]

BID = 636295

Kleinspannung

Urgestein



Beiträge: 13356
Wohnort: Tal der Ahnungslosen


Zitat :
Her Masters Voice hat am 24 Sep 2009 02:32 geschrieben :

ich würde die Grundaussage etwas anders interpretieren und zwar dass A sowohl grösser B als auch grösser C sein soll um die Abfrage zu erfüllen.

Genau so war es gemeint.
Sorry,hab ich mich wohl nicht ganz klar und richtig ausgedrückt.
(sah dann wohl auch der Compiler so...)

Zitat :

Entweder

IF (A > B) and (A > C) THEN

oder wenn das der BASIC Dialekt nicht versteht, dann
IF (A > B) THEN

IF (A > C) THEN ...

ENDIF

ENDIF

Danke,probiere ich heut abend mal.

_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)

BID = 637484

Kleinspannung

Urgestein



Beiträge: 13356
Wohnort: Tal der Ahnungslosen

Also das mit den Klammern rafft Bascom irgendwie nicht.
Aber das mit zweimal If >> Then + end if funktioniert.
Danke!

_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182109575   Heute : 644    Gestern : 5426    Online : 861        2.10.2024    4:38
0 Besucher in den letzten 60 Sekunden         ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.051262140274