Deutsch
Beispiele

Kreisfläche

 
- Seite 1 -



HofK
Wichtiger Hinweis!
Die folgenden Beiträge beziehen sich auf ursprüngliche Versionen von AndroidProfan/Infinity-Profan aus dem Jahr 2015 und sind damit inhaltlich/syntaktisch veraltet und somit nicht lauffähig. (15.01.2016)


_____________________________________________________________

Musste einfach mal trocken testen, wie AndroidProfan - neuer Name Infinity-Profan - sich so coded.
In meiner Programmiersteinzeit durfte ich in sauberen großen Druckbuchstaben ein Programmformular beschreiben. Und dann nach persönlicher Abgabe ein, zwei Tage auf die lange gedruckte Fehlerliste warten.
Die Steinzeitheimwerker mussten ja auch mit 'nem Faustkeil zurechtkommen.

Jetzt ganz soft getippt und per Netz in alle Welt verbreitet. Mal sehen, was heutzutage so zurückkommt.

Erster Eindruck: ordentlich tabuliert (kommt in der Codebox nicht voll rüber) ist das übersichtlich.
Könnte mich glatt damit anfreunden und notfalls auf die Anfänger api verzichten.

Update:
Siehe IF-Fehlerfindung unten, aber wohl doch bestanden? Damit sich Fehler nicht verbreiten, habe ich sie markiert und verbessert. Das Pi sooo lang ist - darauf falle ich garantiert nochmal rein.

Die Farben hatte ich bewußt mal rgb() und mal als Konstanten in Internetfarben #hexhexhex angegeben. Dazu hatte ich noch nichts näheres entdeckt oder übersehen ($ Notation).
Wäre aber praktisch, die HTML- Notation optional nutzen zu können.

Update: Code ungültig
Da die Syntax für gui geändert wurde ist der Code ungültig. Wird demnächst auf den aktuellen Stand gebracht.
Ist erfolgt, siehe weiter unten.
 

Kreisfläche

// Programm Kreisfläche
var  headl = "Das erste AndroidA Programm"
var  stat  = "Status: Kreis"
var  kfl   = 0.0
var  grg   = gui( gui.add, gui.grid, gui.hwnd, [3,4] )// GrundRasterGrid
var  h_txt = gui( gui.add, gui.text, grg[2,1], headl )// Textcontrol für Überschrift setzen
var  m_txt = gui( gui.add, gui.text, grg[2,2], kfl )// Textcontrol Hauptzelle
var  s_txt = gui( gui.add, gui.text, grg[2,3], stat )// Textcontrol für internen Status
//----------------------------------------------------
gui  gui.mod, gui.bgcolor,   gui.hwnd, rgb(192,192,192)// Grundfarbe silver (dezent grau)
gui  gui.mod, gui.width,     grg, [8,84,8]// Spaltenbreiten prozentual
gui  gui.mod, gui.height,    grg, [12,70,10,8]// Zeilenhöhen prozentual
gui  gui.mod, gui.textcolor, h_txt, rgb(150,191,61)// Überschrift in androidem Grün #96bf3d
gui  gui.mod, gui.bgcolor,   grg[2,2], rgb(255,255,155)// Hauptzelle gelblich
gui  gui.mod, gui.bgcolor,   grg[2,3], $e7e7e7// Statuszelle hellgrau
gui  gui.mod, gui.textcolor, s_txt, rgb(255,0,0)// roter Statustext
msgbox 0,"Radius","Kreisberechnung","OK","1.0",kflaeche// Interaktion Eingabe
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

proc kflaeche(txt)

    // falsch:    kfl = math.pi*(float(txt))^2
    kfl = math(math.pi)*float(txt)^2// Korrekturen IF
    // falsch:  gui  gui.text, m_txt, "Die Kreisfläche beträgt\nA = " + str(kfl)
    gui  gui.mod, gui.text, m_txt, "Die Kreisfläche beträgt\nA = " + str(kfl)// ... Ausgabe

endproc

 
04.02.2015  
 



 
- Seite 3 -



HofK


Fehler bei width/height - siehe unten bei 08.03.2015

Nachtrag:
Die Zeilen 15 bis 20 dürfen in der aktuellen Fassung von InfinityProfan am Ende kein \ enthalten!
 

Mode AutoHotKey (  [...]  ) ist sicher der beste Ausgangspunkt bei einer neuen Sprache, wenn sie nicht einer vorhandenen sehr ähnlich ist. Das Theme ist eine andere Sache. Fummelt man ein wenig in den Teilen rum, aus denen die endgültigen Regulären Ausdrücke gebildet werden und letztendlich über Javascript HTML, CSS span, class manipuliert werden (überaus komplexes System) kann man Feinheiten anpassen.

Bei AutoHotKey war ; für Kommentarzeile voreingestellt, habe z.B. // daraus gemacht. /// funktioniert auch, wäre aber sehr unüblich.

this.$rules = { start:
[ { token: 'comment.line.ahk', regex: '(?:^| )//.*$' },
{ token: 'comment.block.ahk',
regex: '/\\*', push:
[ { token: 'comment.block.ahk', regex: '\\*/', next: 'pop' },
{ defaultToken: 'comment.block.ahk' } ] }, ...

Für den Kommentarblock habe ich auch mal
/#
...abcdefg ...
.... hijklmnop
#/
probiert - sieht nett aus, aber möchte man das wirklich?

Auch ein wenig Codefaltung /* <--> ~~ geht schon. Dazu muss man
foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))',
foldingStopMarker: '^\\s*\\*/|^\\s*\\}' }
bearbeiten.
Die aktuellen Änderungen sind jeweils momentan online.
 
17.02.2015  
 



Klaus Hoffmeister (16.02.15)
Die identische Variante, aus autohotkey erzeugt wie oben nur statt Theme monokai nun solarized_light.
Irgendwie nicht so bunt aber dezent und augenschonend. Man erkennt, dass die konkreten Farben vom Theme abhängen.
Da muss erstmal eine Grundsatzentscheidung zum Theme her.


Ich würde die tolle Mgl., dass man das Thema onthefly ändern kann,
durchaus beibelassen und machen oben ins Popupmenü dafür eine
Themen-Auswahl. Soll der Nutzer entscheiden welches Thema er gerne
nutzen möchte. So müssten wir auch keine konkreten Farben festlegen
und könnten uns erst einmal rein darauf beschränken, dass der Parser
die korrekte Syntax erkennt mit welchen Farben auch immer das Theme
ausgestattet ist.

Was hältst Du davon? Das Popup-Menü kann ich leicht erweitern, würde
ich php Funktion glob für das Themensuchen verwenden.

Klasse finde ich das die aktuellen Änderungen auch gleich Online sind
sodass man auch gleich herumprobieren kann.

Bekommst Du es hin, dass auch if end procs gefaltet werden? Bei den
/* rems */ funktioniert das schon sehr lecker. Ich freue mich richtig dass
es mit AndroidProfan voran geht.
 
18.02.2015  
 




HofK
iF (18.02.15)
Bekommst Du es hin, dass auch if end procs gefaltet werden? Bei den
/* rems */ funktioniert das schon sehr lecker. Ich freue mich richtig dass
es mit AndroidProfan voran geht.


Hat sich gerade überschnitten. Soeben festgestellt, dass die Bearbeitung der foldingmarker alleine nicht ausreicht! Muss tiefer im System graben.

Das Theme wählbar zu machen ist die beste Lösung!
 
18.02.2015  
 



Dann bau ich mal das mit der Popupmenüthemenauswahloption ein.
 
18.02.2015  
 




HofK
If ... procs falten ... hab es prinzipiell gefunden  [...]  weiter unten: Adding new folding rules to your mode can be a little tricky. ...
Und dann kommt "harter Stoff" - da muss ich mich erstmal reinwühlen. Das dauert.
 
18.02.2015  
 



Ja, genau, davor versuche ich mich (bisher ganz erfolgreich!) zu drücken.
 
18.02.2015  
 



So, hab mal pauschal eine Theme-Auswahl eingebaut:  [...] 

Später wird die Einstellung (natürlich) auch noch mit dem Benutzeraccount
verknüpft statt wie jetzt "nur" in der Session.
 
18.02.2015  
 



 
- Seite 4 -



HofK
... folding rules can be a little tricky ...
also erstmal etwas die Farben sortieren.
Einfach die beiden Dateien in den Editor kopieren und sich per Ansicht /Theme an den Farben erfreuen.
Verschiedene Varianten probiert, es gibt ein Problem mit der "Doppelnutzung" von del und sensor. Beim Theme Monokai treten die Farben deutlich hervor.

 
19.02.2015  
 



Ah, auch sowas wei proc kreis(buttonHandle,event) da wird event
gefärbt weil er glaubt das dass die Proc ist. Oje das wird eine Katastrophe
dem das alles beizubringen.
 
20.02.2015  
 




HofK
iF (20.02.15)
Oje das wird eine Katastrophe dem das alles beizubringen.


Die eingebauten Funktionen und Konstanten der Sprache sind Sprachbestandteile. Damit sind die Bezeichner reservierte Bezeichner. Ich kann ja auch nicht die Variable var var = 0 definieren weil ich var so schön finde.

An der Struktur des Highligtings sieht man auch, dass im Wesentlichen reservierte Bezeichner in Gruppen notiert werden. Bei den "Sonderzeichen" wird es komplizierter.

Wenn es also event reserviert gibt, muss ich statt proc kreis(buttonHandle,event) wie auch üblich proc kreis(buttonHandle,e) oder proc kreis(btnHdl,e) schreiben.
proc kreis(button,e) ginge ja auch nicht weil es button schon gibt. Sollte es math.e geben, geht das e auch nicht, aber ev und evnt. Die Variable e ginge dann auch nicht.

Problematischer sehe ich die Überschneidung von del und sensor innerhalb der Sprache.
 
20.02.2015  
 




HofK
"Webfehler " im Grid der Kreisberechnung

ups - die Höhen- und Breitenanngaben passen nicht. Sie waren für ein einfaches Grid g_gr gemacht. Nach der Änderung mit Verschachtelung hatte ich sie nicht angepasst. g_gr hat ja nur noch drei Zeilen und eine Spalte! Das hätte sicher einen Fehler ausgeworfen.

Korrigierte Fassung:



Nachtrag:
Die Zeilen 15 bis 20 dürfen in der aktuellen Fassung von InfinityProfan am Ende kein \ enthalten!
 
08.03.2015  
 




HofK
Die App Kreisberechnung
wird in der jetzt verfügbaren Leseprobe  [...]  (kostenlos)

vom in Arbeit befindlichen Infinity-Profan Buch Kap. 1

genauer unter die Lupe genommen.

___________________________________________________________

Bitte Hinweis zur veralteten Syntax aus 2015 am Anfang des Themas beachten! (15.01.2016)
 
15.04.2015  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

28.797 Betrachtungen

Unbenanntvor 0 min.
DB HoKi28.02.2020
Thomas Freier21.07.2018
OliverJung11.03.2018
bloniTec30.08.2016
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

HofK (23x)
iF (18x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie