Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

SORTIEREN: AUF/AB EINGABEMASKE

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> Pool
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 13.08.2005 - 20:53    Titel: SORTIEREN: AUF/AB EINGABEMASKE Antworten mit Zitat

Pool-ZIEL: eine Sortiermaschine mit möglichst weitreichendem System.

1) Einheitliche Sortiermuster liefern:
wenn es in irgendeinem Skript wieder aufgefunden wird, mit nachvollziehbaren Variablen-Namen die das Funktionsverständnis ermöglichen

2) ZWEI Sortiermuster werden geboten:
AUF-oder AB- und damit auch nach beiden Kriterien sortierbar

3) Die Nutzung von propertys,-globals und -handlern:
sollte das Sortier-handler-Starten und die Sortier-handler-Ergebnis-Verarbeitung auch aus irgendeinem handler heraus oder aus dem laufenden Gesamt-Skript problemlos machen.

4) Als Beilage 2 Supplemente:
A kleiner Beispiel-handler, der die Desktop-Gegenstände auflistet
B Textwandler mit dem Element "return" als Listenelement-Abtrenner(dies ermöglicht eine Text-Tabelle mit der "Unterienander"-Anordnung der sortierten Elemente.

(C noch in Vorbereitung:)
anhand von ganz unscheinbar wirkenden Aenderungen der Reihenfolge der Skript-Zeilen versuche ich mit diesem Beispiel des Sortierhandlers zu zeigen, dass man beim Verwenden von propertys bei Unwissen ihrer Wirkungsweise ziemlich unerwartete Ergebnisse erzeugen könnte.

Das Sortier Skript:
Es kann in einem, hintereindander:
• AUF-sortieren
• AB-sortieren
hat Folgendes geschrieben:
property ZuSoListe : {"4", "5", "2", 3} --eine Trainingsliste 3 ist pickantes Detail!
--
set ZuSoListe to my SchreitischInhalt() --Altenative zu {"4", "5", "2", 3}

--
------------------------AUF-Sortieren -----------------------
set QuickSortiertListe to my QuickSortAUF(ZuSoListe, 1, count ZuSoListe) --oooo
set QuickSortierterTEXT to my QuickSortTexter(QuickSortiertListe) --oooo
display dialog QuickSortierterTEXT
--
------------------------AB-Sortieren -------------------------
set QuickSortiertListe to my QuickSortAB(ZuSoListe, 1, count ZuSoListe) --oooo
set QuickSortierterTEXT to my QuickSortTexter(QuickSortiertListe) --oooo
display dialog QuickSortierterTEXT

--
------------------------AUF-Sortieren-HANDLER-----------------------
on QuickSortAUF(ZuSoListe, QuickSortAdapt1, ZuSoListeLANG) --oooo
   
local NrI, AdaptListLANG, MittelItem --> SD debugging ¿¿¬
   --
local ähnlich wie global? jedenfalls keine property
   --
property ist nämlich global lehrt einem die Error-Meldung)
   
script ScrO
      
property PropScrO : ZuSoListe --repeat-abzuarbeitende,durch items erzeugte Liste
   
end script
   
set NrI to QuickSortAdapt1
   
set AdaptListLANG to ZuSoListeLANG
   
set MittelItem to ScrO's PropScrO's item ((QuickSortAdapt1 + ZuSoListeLANG) div 2) --Mittel-Item ermitteln
   
   
repeat while (AdaptListLANG > NrI)
      
repeat while (ScrO's PropScrO's item NrI < MittelItem) -- < =AUF-Sort > =AB-Sort
         
set NrI to NrI + 1
      
end repeat
      
repeat while (ScrO's PropScrO's item AdaptListLANG > MittelItem) -- > =AUF-Sort < =AB-Sort
         
set AdaptListLANG to AdaptListLANG - 1
      
end repeat
      
if (not NrI > AdaptListLANG) then
         
set ScrOsPropScrOsItemNrI to ScrO's PropScrO's item NrI
         
set ScrO's PropScrO's item NrI to ScrO's PropScrO's item AdaptListLANG
         
set ScrO's PropScrO's item AdaptListLANG to ScrOsPropScrOsItemNrI
         
set NrI to NrI + 1
         
set AdaptListLANG to AdaptListLANG - 1
      
end if
   
end repeat
   
if (QuickSortAdapt1 < AdaptListLANG) then ¬
      
QuickSortAUF(ScrO's PropScrO, QuickSortAdapt1, AdaptListLANG)
   
set QuickSortAdapt1 to NrI
   
if (ZuSoListeLANG > QuickSortAdapt1) then ¬
      
QuickSortAUF(ScrO's PropScrO, QuickSortAdapt1, ZuSoListeLANG) --ooooo
   --
repat QuickSortAUF(_,__,__) macht er solange bis ZuSoListeLANG = QuickSortAdapt1
   
set QuickSortiertListe to ZuSoListe
   
return QuickSortiertListe
end QuickSortAUF

--
------------------------AB-Sortieren-HANDLER -------------------------
on QuickSortAB(ZuSoListe, QuickSortAdapt1, ZuSoListeLANG) --oooo
   
local NrI, AdaptListLANG, MittelItem
   
script ScrO
      
property PropScrO : ZuSoListe
   
end script
   
set NrI to QuickSortAdapt1
   
set AdaptListLANG to ZuSoListeLANG
   
set MittelItem to ScrO's PropScrO's item ((QuickSortAdapt1 + ZuSoListeLANG) div 2)
   
repeat while (AdaptListLANG > NrI)
      
repeat while (ScrO's PropScrO's item NrI > MittelItem) -- < =AUF-Sort > =AB-Sort
         
set NrI to NrI + 1
      
end repeat
      
repeat while (ScrO's PropScrO's item AdaptListLANG < MittelItem) -- > =AUF-Sort < =AB-Sort
         
set AdaptListLANG to AdaptListLANG - 1
      
end repeat
      
if (not NrI > AdaptListLANG) then
         
set ScrOsPropScrOsItemNrI to ScrO's PropScrO's item NrI
         
set ScrO's PropScrO's item NrI to ScrO's PropScrO's item AdaptListLANG
         
set ScrO's PropScrO's item AdaptListLANG to ScrOsPropScrOsItemNrI
         
set NrI to NrI + 1
         
set AdaptListLANG to AdaptListLANG - 1
      
end if
   
end repeat
   
if (QuickSortAdapt1 < AdaptListLANG) then QuickSortAB(ScrO's PropScrO, QuickSortAdapt1, AdaptListLANG)
   
set QuickSortAdapt1 to NrI
   
if (ZuSoListeLANG > QuickSortAdapt1) then QuickSortAB(ScrO's PropScrO, QuickSortAdapt1, ZuSoListeLANG) --ooooo
   
set QuickSortiertListe to ZuSoListe
   
return QuickSortiertListe
end QuickSortAB

--
--------------------
on QuickSortTexter(QuickSortiertListe) --oooo
   
set AppleScript's text item delimiters to return
   
set QuickSortierterTEXT to QuickSortiertListe as string
   
set AppleScript's text item delimiters to ""
   
return QuickSortierterTEXT
end QuickSortTexter
--
oooo BEISPIEL für Liste oooo
on SchreitischInhalt() --oooooooooooo
   
set listOfFiles to {}
   
tell application "Finder" to set listOfFiles ¬
      
to name of every file ¬
      
of folder (path to desktop as string)
end SchreitischInhalt



PS:
QuickSort-handler entstammt einem mathematischen Algorhythmus der aus Reihen "mittel-Reihen"= ein Text-item als Liste erzeugt(QuickSortAdapt1 + ZuSortierendeListeLANG) div 2) und diese wiederum dem ersten Item der Restreihe einsortiert nach Textkriterien (1) bis nur noch (1 Element übrig bleibt + Rest-Liste)=Ergebnis.
ad (1): Textkriterien gelten dann wenn ZuSortierendeListe Textelemente oder: Text und Zahlen enthält.
wenn aber: wenn ZuSortierendeListe nur Zahlen enthält ZB 3 (nicht "3" !) (beide werden leider nicht unbedingt als Zahlen gewertet) dann wird nach Zahlen sortiert.


Mathematiker sind gewohnt mit Vorteil Einzel-Buchstaben als Platzhalter(Variablen) einzusetzen:
Vorteil: Platzsparend, Uebersicht!
AppleSkripter anderer Berufsgattungen als der des Informatikers aber verlieren die Fähigkeit bedeutungslosen zufälligen Buchstaben(=Platzhalter für Buchstaben oder Zahlen)in abstrakter Weise Funktionen zuzuordnen und zwar ebenfalls nach einem medizinisch begründeten mathematischen Gesetz:
1 : [n hoch n] wobei n = [Anzahl Jahre zur letzmalig gehörten Schulklingel]

Damit hab ich mir erlaubt den Algorhytmus nicht einfach mit Buchstabenvariablen in den funktionsgleichen handler zu nehmen sondern die Einzelbuchstaben in deutscher Sprach-Analogie mit Funktions-wiederspiegelnden Variablen-Namen umzutaufen. Damit hab ich auch endlich das Geheimnis vom Quick-Sort-handler begriffen:
es heisst: teile durch 2 und nimm dir das Gesetz des AS auf Mac mit default-Einstellung:

Text-Vergleich (A_blabaraba>B_bluburebub) und wiederspiegelt eine Alphabetische Rangordnung.

Ich hoffe damit die erworbenen Kenntnisse zumindest mit mindest 2 anderen unbedarften teilen zu können die restlichen habens eh mit einem Blick kapiert was folgendes bedeutet hat: item i < v

PS PS:
was für mich völlig neu war sind 3 Dinge:
1) script ScrO--damit kann man ein Script-handler im handler drin machen der eine property neu definiert
2) local --muss ähnliche Fkt wie global haben das allerdings im Gegensatz dazu ausserhalb des handlers liegen muss
3) ScrO's PropScrO's item AktItemNr dass man damit einfach Skript-Start mit property verknüpfen kann und erst noch die property im handler drinnen lagern kann!!!!!!!!, paradiesisch!!!!!!!!!!

Das Original wurde hier im Forum erstmals von Snow zitiert:
http://www.fischer-bayern.de/phpBB2/viewtopic.php?p=4241#4241
Snow hat Folgendes geschrieben:
Skript von Arthur J. Knapp. Das ist die schnellste Quicksort-Funktion die ich bisher gesehen habe. - Auf jeden Fall was AppleScript anbelangt.

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> Pool Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter