So hier mal alles Wissenswertes über iMof:
iMof als name setzt sich aus: i und Mof zusammen. Der Name entstand als Sören und ich(Hannes) durch unsere Pausenhalle wanderten. Wir hatten beide unseren iPod Touch 1G zur Hand und suchten nach freien WLAN-netzten. Und wir kamen dann auf das Thema warum Apple in der Gebrauchsanweisung nicht davor warnen, dass man irgendwann aleine mit dem iPod durch die Gegend läuft und WLAN sucht. Und von davon kamen wir auf iMof (iMenschOhneFreunde).
Es kann aber auch in iM und of aufgespalten werden. was ja dann wieder sowas wie i'm off . Dies passt dann zu uns als unser Schülerdasein.
Zum Programmierstand:
Die erste Idee für unser erstes Programm ist schon fertig. Allerdings fehlt uns noch eine menge wissen von objective-c sodass wir noch eine Weile lernen müssen, bevor wir das Programm fertig stellen werden.
Wenn ihr noch irgendwass wissen wollt schreibt einfach ein kommentar;)
reckter(Hannes)
Sonntag, 6. Dezember 2009
Dienstag, 1. Dezember 2009
Programmieren - c++/Theorie // Sortier Algorythmen
So ich eröffne dann mal meine Rubrik von dem Programmieren anfangen.
Zum Titel: erst kommt die Rubrik (wenn keins ist kommt keins) danach kommen Unterthemen, wie in diesem fall c++ /Theorie. Soll heißen bei diesem Eintrag geht es um die Theorie und um c++. Die Überschrift ist: Sortier Alghorythmen.
Es gibt in der Informatik verschiedene Sortier Algorhytmen:
Erstmal erläutere ich die Variablen benutze benutze:
Zum erklären:
n = Anzahl der zu Sortierenden Elemente
Beim Code:
array=der array indem die Zahlen srinstehen[ist ein int]
TMP / tmp=eine temporäre Variable, die nur dazu dienst zwei Elemente zu tauschen.
i=Zählvariablej=Zählvariable
len=die länge von array
Quick Sort:
uleng=untere Grenze des zu sortierenden array's
oleng=obere Grenze des zu sortierenden array's
zeigerKlein=zeiger auf das erste Element des zusortierenden array's (wandert im laufe des Prozesses in die mitte des array's)
zeigerGross=zeiger auf das letzte Element des zusortierenden array's(wandert im laufe des Prozesses in die mitte des array's)
Ich zeige jetzt hier nicht alle Sortier Algorythmen, weil einige ziemlich ähnlich sind, und es einfach zu lang wäre, um dan noch etwas damit anfangen zu können.
Als einfachster gilt der Bubble Sort.
Er funktioniert, in dem er immer 2 aufeinanderfolgende Elemente vergleicht und sie nach der Größe sortiert. Er ist aber auch gleichzeitig der langsamste aller Algorythmen, weil er im schlechtestem Fall n-1 Durchläufe braucht.Warum? Na ganz einfach wir nehmen an das das kleinste Element nach vorne soll. Es aber ganz Hinten steht. Es wird bei jedem Durchgang um eins nach Vorne geschoben, also braucht es n-1 Durchläufe. Da jeder dieser Durchläufe eine komplette Durchsuchung aller Elemente beinhaltet. Braucht es damit n² Durchläufe.
Code:
Die "Erweiterung" von BubbleSort ist Shake Sort. ShakeSort funktiniert sehr ähnlich wie Bubble Sort der einzige Unterschied ist der, dass Shake Sort in beide richtungen Sortiert. Bubble Sort sortiert nur von klein nach groß, Shake Sort hingegen auch von groß nach klein.
Code:
Einer der einfachsten Algorythmen, die nicht ganz erneut sortieren müssen, wenn man ein Element dem array anhängt, ist Liniar Insertion. Dieser Algorythmus funktioniert, indem er die ersten beiden Elemente nach der Größe sortiert, und dann immer das nächste da hinein an den richtigen Platz legt. Dies funktioniert, indem er einfach das letzte des sortierten Teils mit dem gerade einzuordneten Elements vergleicht und wenn es größer ist einsortiert. Wenn das Element kleiner ist, wird das nächste des sortierten Teils genommen mit dem einzuordneten Element verglichen usw.
Diese Sortierung hat den schönen Teil, dass man nicht völlig neu sortieren muss, wenn ein Element anhängt und weiß das der Rest schon sortiert ist.Allerdings sind die Durchläufe von diesem Algorythmus ähnlich dem des Bubble Sort. Er braucht auch n² Durchläufe.
Code:
Es gibt auch hier wieder eine "Erweiterung". Diese Erweiterung nennt sich Binary Insertion. Bei Binary Insertion wird nicht das nächste Element genommen, um es zu vergleichen, sondern immer das Element das in der Mitte der möglichen Elemente steht. Dies ist zwar schneller als alle bis jetzt genannten doch es ist immer noch ziemlich lahm.
Code:
Der schnellste Algorythmus, den es bis jetzt gibt (!), ist Quick Sort. Dieser Algorythmus funktioniert völlig anders als die bis jetzt gennanten. Er teilt das array in 2 kleiner auf. Dies macht er indem er einen "Pivot" auswählt, eine zufällige Zahl aus dem array, und das array nach größeren und kleineren Elementen sortiert (auf Basis des Pivot). Es ensteht also ein array, welches eine sortierte zahl besitzt, nämlich den Pivot, und 2 "unterarray" ,welche knur kleinere bzw. größere array's als den Pivot enthalten.Diese "unterarray's" werden nun jeweils wieder mit Quick Sort sortiert. Wenn dieser unterarray nur noch 1 Element besitzt wird diese Rekursion abgebrochen. Man meint vieleicht nicht, das dies der schnellste Algorythmuss ist, jedoch braucht er nur n log(n) Durchgänge.
Code:(Im Prinzip richtig sind noch einige Bugs drin...)
Hier sind noch 3 extrem gute Videos zu den genannten Sortier Algorythmen:
(Es sind 3 Teile)
http://www.youtube.com/watch?v=YvTW7341kpA&feature=related
http://www.youtube.com/watch?v=plAi7kcqMNU&feature=related
http://www.youtube.com/watch?v=gtdfW3TbeYY&feature=related
Zum Titel: erst kommt die Rubrik (wenn keins ist kommt keins) danach kommen Unterthemen, wie in diesem fall c++ /Theorie. Soll heißen bei diesem Eintrag geht es um die Theorie und um c++. Die Überschrift ist: Sortier Alghorythmen.
Es gibt in der Informatik verschiedene Sortier Algorhytmen:
Erstmal erläutere ich die Variablen benutze benutze:
Zum erklären:
n = Anzahl der zu Sortierenden Elemente
Beim Code:
array=der array indem die Zahlen srinstehen[ist ein int]
TMP / tmp=eine temporäre Variable, die nur dazu dienst zwei Elemente zu tauschen.
i=Zählvariablej=Zählvariable
len=die länge von array
Quick Sort:
uleng=untere Grenze des zu sortierenden array's
oleng=obere Grenze des zu sortierenden array's
zeigerKlein=zeiger auf das erste Element des zusortierenden array's (wandert im laufe des Prozesses in die mitte des array's)
zeigerGross=zeiger auf das letzte Element des zusortierenden array's(wandert im laufe des Prozesses in die mitte des array's)
Ich zeige jetzt hier nicht alle Sortier Algorythmen, weil einige ziemlich ähnlich sind, und es einfach zu lang wäre, um dan noch etwas damit anfangen zu können.
Als einfachster gilt der Bubble Sort.
Er funktioniert, in dem er immer 2 aufeinanderfolgende Elemente vergleicht und sie nach der Größe sortiert. Er ist aber auch gleichzeitig der langsamste aller Algorythmen, weil er im schlechtestem Fall n-1 Durchläufe braucht.Warum? Na ganz einfach wir nehmen an das das kleinste Element nach vorne soll. Es aber ganz Hinten steht. Es wird bei jedem Durchgang um eins nach Vorne geschoben, also braucht es n-1 Durchläufe. Da jeder dieser Durchläufe eine komplette Durchsuchung aller Elemente beinhaltet. Braucht es damit n² Durchläufe.
Code:
void BubbleSort(int *array)
{
int i;
int TMP;
int j;
for (j=0; j<=len;j++)
{
for (i=0; i<=len-1; i++)
{
if (array[i]>array[i+1])
{
TMP=array[i+1];
array[i+1]=array[i];
array[i]=TMP;
}
}
}
}
Die "Erweiterung" von BubbleSort ist Shake Sort. ShakeSort funktiniert sehr ähnlich wie Bubble Sort der einzige Unterschied ist der, dass Shake Sort in beide richtungen Sortiert. Bubble Sort sortiert nur von klein nach groß, Shake Sort hingegen auch von groß nach klein.
Code:
void ShakeSort(int *array)
{
int i;
int TMP;
int j;
for (j=0; j<=len;j++)
{
for (i=0; i<=len-1; i++)
{
if (array[i]>array[i+1])
{
TMP=array[i+1];
array[i+1]=array[i];
array[i]=TMP;
}
}
for (i=len-1; i<=0; i--)
{
if (array[i]>array[i+1])
{
TMP=array[i+1];
array[i+1]=array[i];
array[i]=TMP;
}
}
}
}
Einer der einfachsten Algorythmen, die nicht ganz erneut sortieren müssen, wenn man ein Element dem array anhängt, ist Liniar Insertion. Dieser Algorythmus funktioniert, indem er die ersten beiden Elemente nach der Größe sortiert, und dann immer das nächste da hinein an den richtigen Platz legt. Dies funktioniert, indem er einfach das letzte des sortierten Teils mit dem gerade einzuordneten Elements vergleicht und wenn es größer ist einsortiert. Wenn das Element kleiner ist, wird das nächste des sortierten Teils genommen mit dem einzuordneten Element verglichen usw.
Diese Sortierung hat den schönen Teil, dass man nicht völlig neu sortieren muss, wenn ein Element anhängt und weiß das der Rest schon sortiert ist.Allerdings sind die Durchläufe von diesem Algorythmus ähnlich dem des Bubble Sort. Er braucht auch n² Durchläufe.
Code:
void LiniarInsertion(int *array)
{
int i;
int TMP;
int j;
for (j=0; j<=len;j++)
{
for (i=0; i<=len-1; i++)
{
if (array[i]>array[j])
{
TMP=array[j];
array[j]=array[i];
array[i]=TMP;
}
}
}
}
Es gibt auch hier wieder eine "Erweiterung". Diese Erweiterung nennt sich Binary Insertion. Bei Binary Insertion wird nicht das nächste Element genommen, um es zu vergleichen, sondern immer das Element das in der Mitte der möglichen Elemente steht. Dies ist zwar schneller als alle bis jetzt genannten doch es ist immer noch ziemlich lahm.
Code:
Kommt noch.
Der schnellste Algorythmus, den es bis jetzt gibt (!), ist Quick Sort. Dieser Algorythmus funktioniert völlig anders als die bis jetzt gennanten. Er teilt das array in 2 kleiner auf. Dies macht er indem er einen "Pivot" auswählt, eine zufällige Zahl aus dem array, und das array nach größeren und kleineren Elementen sortiert (auf Basis des Pivot). Es ensteht also ein array, welches eine sortierte zahl besitzt, nämlich den Pivot, und 2 "unterarray" ,welche knur kleinere bzw. größere array's als den Pivot enthalten.Diese "unterarray's" werden nun jeweils wieder mit Quick Sort sortiert. Wenn dieser unterarray nur noch 1 Element besitzt wird diese Rekursion abgebrochen. Man meint vieleicht nicht, das dies der schnellste Algorythmuss ist, jedoch braucht er nur n log(n) Durchgänge.
Code:(Im Prinzip richtig sind noch einige Bugs drin...)
void QuickSort(int *array,int uleng,int oleng)
{
if (uleng>=oleng)
{
return;
}else
{
int zeigerKlein=uleng;
int zeigerGross=oleng;
int Pivot=array[uleng];
int tmp;
//printf("%d --- %d - %d ,%d\n",schleife,uleng,oleng,Pivot);
while (zeigerGross!=zeigerKlein)
{
if (zeigerGross!=zeigerKlein)
{
do
{
zeigerKlein++;
}while (array[zeigerKlein]
do
{
zeigerGross--;
}while (array[zeigerGross]>Pivot&&zeigerGross!=zeigerKlein);
if (zeigerGross>zeigerKlein)
{
tmp=array[zeigerGross];
array[zeigerGross]=array[zeigerKlein];
array[zeigerKlein]=tmp;
}
}
}
sortieren4(array,uleng,zeigerGross-1);
sortieren4(array,zeigerGross+1,oleng);
}
}
Hier sind noch 3 extrem gute Videos zu den genannten Sortier Algorythmen:
(Es sind 3 Teile)
http://www.youtube.com/watch?v=YvTW7341kpA&feature=related
http://www.youtube.com/watch?v=plAi7kcqMNU&feature=related
http://www.youtube.com/watch?v=gtdfW3TbeYY&feature=related
Mittwoch, 25. November 2009
Twitterverrückt|Aktion von www.druckerei.de
Wie ihr sicherlich wisst (oder gerade erfahrt) sind wir beide Twitterverrückt!
Ich wüsste garnicht mehr weiter ohne Twitter!
Also hier mal ein paar nützliche Programme/sonstige Sachen für/über/um Twitter:
Al erstes sind da ja die Clients, die man benutzt um zu twittern (oder eben die Twitter.com Seite aber ehrlich wer benutzt die noch):
Tweetdeck - Ein Client der in mehreren Reihen aufgebaut ist. Man kann sich aussuchen, was in den jeweiligen Reihen angezeigt wird, und wie oft jeder Reihe refresht werden soll. [Windows,Mac,(Linux),iPhone/iPod Touch]
Tweetie - Ein Client dem man sehr leicht mehrere Accounts verwalten kann. Er ist sehr einfach aufgebaut und meldet sich bei einem Neuen Tweet über Growl und den Blauen Symbol oben in der Statusleiste. Ich benutze diesen Client, weil er simpel aufgebaut ist, und wie ich finde Grafisch ziemlich modern aussieht.[Mac,iPhone/iPod Touch]
Und viele mehr (erzählt uns von euren Clients und wir werden sie hier nachträglich einfügen. Bitte mit Link!)
Aktionen rund um Twitter:
Jetzt ganz Aktuell ist da die Aktion von druckerei.de .
Sie verlossen im Moment Twitter-Kalender fürs Jahr 2010.
Mitmachen kann jeder der Bei Twitter angemeldet ist in dem er folgendes tweetet:
Wenn man einen Blogeintrag mach, bekommt man sogar 3 und zwar sofoert! Man muss an keiner Verlosung mehr teilnehmen;)
Der Link zum Blogeintrag:
http://bit.ly/4vTob5
(Die Liste wird natürlich aktualisiert;))
Ich wüsste garnicht mehr weiter ohne Twitter!
Also hier mal ein paar nützliche Programme/sonstige Sachen für/über/um Twitter:
Al erstes sind da ja die Clients, die man benutzt um zu twittern (oder eben die Twitter.com Seite aber ehrlich wer benutzt die noch):
Tweetdeck - Ein Client der in mehreren Reihen aufgebaut ist. Man kann sich aussuchen, was in den jeweiligen Reihen angezeigt wird, und wie oft jeder Reihe refresht werden soll. [Windows,Mac,(Linux),iPhone/iPod Touch]
Tweetie - Ein Client dem man sehr leicht mehrere Accounts verwalten kann. Er ist sehr einfach aufgebaut und meldet sich bei einem Neuen Tweet über Growl und den Blauen Symbol oben in der Statusleiste. Ich benutze diesen Client, weil er simpel aufgebaut ist, und wie ich finde Grafisch ziemlich modern aussieht.[Mac,iPhone/iPod Touch]
Und viele mehr (erzählt uns von euren Clients und wir werden sie hier nachträglich einfügen. Bitte mit Link!)
Aktionen rund um Twitter:
Jetzt ganz Aktuell ist da die Aktion von druckerei.de .
Sie verlossen im Moment Twitter-Kalender fürs Jahr 2010.
Mitmachen kann jeder der Bei Twitter angemeldet ist in dem er folgendes tweetet:
Ich möchte einen Twitter-Wandkalender 2010 von @druckerei_de bekommen. Zur Aktion von www.druckerei.de -> http://bit.ly/4vTob5Oder in dem Man einen Blogeintrag über diese Aktion schreibt.
Wenn man einen Blogeintrag mach, bekommt man sogar 3 und zwar sofoert! Man muss an keiner Verlosung mehr teilnehmen;)
(Urheberrechte: www.druckerei.de)
Der Link zum Blogeintrag:
http://bit.ly/4vTob5
(Die Liste wird natürlich aktualisiert;))
Unser Blog
Wie der Name schon sagt eröffnen wir hiermit unseren Blog.
Wir werden hier Fortschritte von unseren Aktivitäten bloggen, aber auch alltägliches aus unserem Leben. Ich für meinen Teil werde versuchen hier regelmäßig was zu Posten.
Ich bin gespannt wie sich dieser Blog entwickelt und wie er sich weiterentwickelt. So ich sehe das es gleich Essen gibt also muss ich jetzt wohl mal Essen gehen;) Ich wünsche euch ein Freudiges lesen und Hinterlasse ich noch mal ein Klasse Parodie zu Windoof 7:
Abonnieren
Posts (Atom)
