theCed
Anmeldungsdatum: 21. Oktober 2011
Beiträge: 226
|
hi, ich hab gestern mal angefangen zu programmieren. Und dies nach einer Empfehlung in Basic 256. Diese Anleitung hab ich komplett durchgemacht, ist ja nicht wirklich anspruchsvoll ;D Dann hab ich selbst noch zwei kleinere Programme gecodet: Einmal ein hüpfender Ball 🙄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | x = 10
runter:
x = x + 1
clg
circle 80,x,8
if x > 290 then goto hoch
goto runter
hoch:
x = x - 1
clg
circle 80,x,8
if x < 2 then goto runter
goto hoch
|
und dann einmal eine Auflistung aller Zweierpotenzen bis 32768 mit einem Ladebalken ^^ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | b = 0
Fortschritt:
b = b + 1
clg
rect 2,2,b,20
if b > 290 then goto Zweierpotenz
goto Fortschritt
Zweierpotenz:
a = 2
Schleife:
a = a * 2
print a
if a > 16384 then end
goto Schleife
|
Gibt es da was zu beanstanden/verbessern? So wie könnte ich denn jetzt weiter machen? Flummis und Zweierpotenzen sind ja nicht wirklich nützlich^^.
|
stfischr
Anmeldungsdatum: 1. März 2007
Beiträge: 19197
|
Peace. Da ist noch viel zu wenig goto im Quelltext. 😈 Nein im Ernst, meine Herausforderung an dich. Schreibe die Programme neu und nutze dabei kein goto. Nutze statt dessen for, while und do. Und du solltest dir überlegen, ob du vielleicht gleich mit einer "richtigen" Programmiersprache anfangen möchtest. Python, C++, Java es gibt tausende.
|
theCed
(Themenstarter)
Anmeldungsdatum: 21. Oktober 2011
Beiträge: 226
|
stfischr schrieb: Peace. Da ist noch viel zu wenig goto im Quelltext. 😈 Nein im Ernst, meine Herausforderung an dich. Schreibe die Programme neu und nutze dabei kein goto. Nutze statt dessen for, while und do.
Ich werds versuchen 😀
Und du solltest dir überlegen, ob du vielleicht gleich mit einer "richtigen" Programmiersprache anfangen möchtest. Python, C++, Java es gibt tausende.
Das war mein Ziel 😉
|
theCed
(Themenstarter)
Anmeldungsdatum: 21. Oktober 2011
Beiträge: 226
|
Bei den Portenzen war es recht einfach, beim Flummi musste ich grübeln, aber es ist immer noch nicht ganz perfekt, da ich keine Endlosschleife hinbekomme... Flummi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | i = 10
runter:
do
i = i + 1
clg
circle 80,i,8
until i > 290
b = 290
hoch:
do
b = b - 1
clg
circle 80,b,8
until b < 10
|
Potenzen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | b = 0
do
clg
b = b + 1
rect 0,0,b,20
until b > 290
a = 2
do
a = a * 2
print a
until a > 16384
|
So besser? 😀 Und was ist denn überhaupt so schlecht an goto 😬? Die Übersichtlichkeit?
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17621
Wohnort: Berlin
|
|
stfischr
Anmeldungsdatum: 1. März 2007
Beiträge: 19197
|
theCed schrieb: da ich keine Endlosschleife hinbekomme...
UNTIL spring so lange zurück, bis die Gleichung stimmt, sie also TRUE zurück gibt. Solange in deinem Fall i kleiner oder gleich 290 ist, bekommt das UNTIL immer ein FALSE. Und so einfach ist eine Endlosschleife: DO
something
UNTIL FALSE Das schlechte an GOTO ist tatsächlich die Übersichtlichkeit. Bei einem kleinen Programm weiß man immer, wann man wohin springt. Bei größeren Programmen, die man nachträglich ändert oder mit anderen zusammen programmiert ist es dann die Fehlerquelle Nummer 1.
|
theCed
(Themenstarter)
Anmeldungsdatum: 21. Oktober 2011
Beiträge: 226
|
Also meinste so? 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | DO
i = 10
runter:
do
i = i + 1
clg
circle 80,i,8
until i > 290
b = 290
hoch:
do
b = b - 1
clg
circle 80,b,8
until b < 10
Until False
|
Und wie könnte ich jetzt weiter machen? Du hast von einer "richtigen" Programmiersprache gesprochen. Was wäre denn da empfehlenswert für den Anfang?
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: Zähle...
Wohnort: Hamburg
|
So wie ich das sehe hast Du nicht wirklich programmiert, sondern einfach vorhandene Code-Schnipsel genommen und leicht angepasst bzw. kombiniert. Ok, nach einem Tag kann man sicherlich auch noch nicht alles kapieren - aber genau da sehe ich immer wieder das Problem bei zu hohem Anspruch. Was ist denn Deine Motivation? Normalerweise hat man ja irgend einen Antrieb, wieso man sich mit dem Programmieren befassen will. Such doch mal die unzähligen Threads zum Thema "Einstieg ins Programmieren" hier im Board. Da solltest DU alle denkbaren Sprachen mit Pros und Contras finden, sowie Diskussionen über die richtige Herangehensweisen (Shell-Programme vs. direkter GUI Einstieg, usw).
|
theCed
(Themenstarter)
Anmeldungsdatum: 21. Oktober 2011
Beiträge: 226
|
Lysander schrieb: So wie ich das sehe hast Du nicht wirklich programmiert, sondern einfach vorhandene Code-Schnipsel genommen und leicht angepasst bzw. kombiniert. Ok, nach einem Tag kann man sicherlich auch noch nicht alles kapieren
Die Potenzen und den Ladebalken hab ich mehr oder weniger selbst gemacht, aber beim Ball haste schon recht, da hab ich den Code nur etwas angepasst. Such doch mal die unzähligen Threads zum Thema "Einstieg ins Programmieren" hier im Board. Da solltest DU alle denkbaren Sprachen mit Pros und Contras finden, sowie Diskussionen über die richtige Herangehensweisen (Shell-Programme vs. direkter GUI Einstieg, usw).
Werd ich mal machen. Ich dachte nur, es gäbe eventuell eine Sprache mit der man im allgemeinen anfängt.
|
herbstkaelte
Anmeldungsdatum: 19. Oktober 2011
Beiträge: 217
|
stfischr schrieb: Peace. Da ist noch viel zu wenig goto im Quelltext. 😈 Nein im Ernst, meine Herausforderung an dich. Schreibe die Programme neu und nutze dabei kein goto. Nutze statt dessen for, while und do. Und du solltest dir überlegen, ob du vielleicht gleich mit einer "richtigen" Programmiersprache anfangen möchtest. Python, C++, Java es gibt tausende.
"Richtig" kann man erst programmieren, wenn man beim Überfliegen dieses Quellcodes #include <stdio.h>
#include <stdlib.h>
int v,i,j,k,l,s,a[99];
main() {
for(scanf("%d",&s);*a-s;v=a[j*=v]-a[i],k=i<s,
j+=(v=j<s&&(!k&&!!printf(2+"\n\n%c"-(!l<<!j),
" #Q"[l^v?(l^j)&1:2])&&++l||a[i]<s&&v&&v-i+j&&v+i-j))
&&!(l%=s),v||(i==j?a[i+=k]=0:++a[i])>=s*k&&++a[--i]);
return 0;
} sofort sagen kann, was das Programm tut. *duck und weg*^^
|
Kinch
Anmeldungsdatum: 6. Oktober 2007
Beiträge: 1261
|
theCed Werd ich mal machen. Ich dachte nur, es gäbe eventuell eine Sprache mit der man im allgemeinen anfängt.
Programmieren kann man mit nahezu jeder Sprache lernen. Will man schnellen Erfolg um einfache bis mittlere Sachen zu hacken: Nimm eine gut unterstützte populäre Skript-Sprache, wie Python, Ruby oder Perl. Willst du ein gutes Fundament, lern möglichst viele unterschiedliche Sprachen, befass' dich auch mit Compilerbau und theoretischer Informatik. Als Sprachen-Typen die man guten gewisses Lernen kann, würde ich eine gute Skriptsprache, C vielleicht auch C++, eine strikt funktionale Sprache (Haskell, bsp), ein Lisp-Dialekt (Common Lisp, Closure, bsp) vielleicht auch eine logische Sprache (Prolog), empfehlen. Mit Base256 kann man bestimmt auch Programmieren lernen, aber das ist keine Sprache in der man produktiven Code schreiben wird. Das ist eine Lehrsprache für Kinder, damit die Sequenz, Iteration und Verzweigung kennen lernen. Ein Großteil der Leute die Programmieren lernen wollen, geben das übrigens schnell wieder auf oder bleiben auf einem „Code-Schnipsel kopieren”-Niveau. Um solide Fähigkeiten zu haben, braucht man Frustrationstoleranz und die Fähigkeit auf die Ratschläge von anderen zu hören; beides traditionell sehr seltene Fähigkeiten.
|
stfischr
Anmeldungsdatum: 1. März 2007
Beiträge: 19197
|
Kinch schrieb: Python, Ruby oder Perl.
Das sind auf jeden Fall schöne Sprache für den Anfang. Das Problem bei Basic ist halt, das keiner es verwendet, wenn du es beherrschst und dir sagst "Juchu jetzt beteilige ich mich bei einem OpenSourceProjekt", Pustekuchen die Projekte die mit Basic arbeiten kann an an einer Hand abzählen. Populäre Sprachen bei OpenSource sind C, C++, Java, Python, PHP und Perl. Wenn man eine dieser Sprachen kann, findet man eigentlich immer etwas, das einem zusagt.
|
theCed
(Themenstarter)
Anmeldungsdatum: 21. Oktober 2011
Beiträge: 226
|
Kinch schrieb: theCed Werd ich mal machen. Ich dachte nur, es gäbe eventuell eine Sprache mit der man im allgemeinen anfängt.
Programmieren kann man mit nahezu jeder Sprache lernen. Will man schnellen Erfolg um einfache bis mittlere Sachen zu hacken: Nimm eine gut unterstützte populäre Skript-Sprache, wie Python, Ruby oder Perl.
Da so ziemlich jegliche Ausbildung noch vor mir liegt, und ich mir alles, (mit Hilfe aus Foren & evt. Büchern) selbst beibringen will/muss, hört sich dies ja nicht schlecht an, von Python hab ich auch schon einiges gehört. Wäre ja schon mal eine gute Vorbereitung auf ein späteres Informatik-Studium? Was kann man denn so theoretisch mit diesen Sprachen coden? Ein paar Beispiele wären nett 😉
Willst du ein gutes Fundament, lern möglichst viele unterschiedliche Sprachen, befass' dich auch mit Compilerbau und theoretischer Informatik. Als Sprachen-Typen die man guten gewisses Lernen kann, würde ich eine gute Skriptsprache, C vielleicht auch C++, eine strikt funktionale Sprache (Haskell, bsp), ein Lisp-Dialekt (Common Lisp, Closure, bsp) vielleicht auch eine logische Sprache (Prolog), empfehlen.
Wäre ja dann was für "später".. ^^
Mit Base256 kann man bestimmt auch Programmieren lernen, aber das ist keine Sprache in der man produktiven Code schreiben wird. Das ist eine Lehrsprache für Kinder, damit die Sequenz, Iteration und Verzweigung kennen lernen.
Klar, aber genau das produktive mag ich. Hüpfende Bälle sind ja ganz nett, und es war auch echt cool zu sehen, wie der PC das macht, was man ihm sagt, aber verwenden kann ich das höchstens als Bildschirmschoner 😬
Ein Großteil der Leute die Programmieren lernen wollen, geben das übrigens schnell wieder auf oder bleiben auf einem „Code-Schnipsel kopieren”-Niveau. Um solide Fähigkeiten zu haben, braucht man Frustrationstoleranz und die Fähigkeit auf die Ratschläge von anderen zu hören; beides traditionell sehr seltene Fähigkeiten.
Kann ich mir gut vorstellen... Aber ich werd' mal positiv an die Sache rangehen, ich hab ja Zeit... Auf C&P will ich allerdings, längerfristig gesehen, nicht zurückgreifen.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
theCed schrieb: Da so ziemlich jegliche Ausbildung noch vor mir liegt, und ich mir alles, (mit Hilfe aus Foren & evt. Büchern) selbst beibringen will/muss, hört sich dies ja nicht schlecht an, von Python hab ich auch schon einiges gehört. Wäre ja schon mal eine gute Vorbereitung auf ein späteres Informatik-Studium?
Ja, unbedingt. Was kann man denn so theoretisch mit diesen Sprachen coden?
Alles. Wirklich. Ein paar Beispiele wären nett 😉
Guckstu: http://wiki.python.org/moin/SimplePrograms oder: http://pytest.org/latest/projects.html und schließlich lässt sich das mit Bibliotheken in ungeahnte Weiten ausbauen: http://pypi.python.org/pypi/ Nein, Basic ist nur veraltetes Spielzeug. Damit habe ich auch mal angefangen (zu DOS-Zeiten), aber es verleitet zu "wieso-es-geht-doch"- Code. Ja, die Sache mit den Gotos - man kann von sonstwo nach sonstwo springen, aber in vernünftigen Datenstrukturen denken lernt man da ausdrücklich nicht. Von wilden Nebeneffekten ganz abgesehen (wenn Du z.B. in eine Schleife hineinspringst ...). Und z.B. Arrays lernst Du auch völlig murksig. Die sind da ja sowas von vorsintflutlich ... Wenn Du es wirklich auf Kinderniveau haben willst, dann nimm den Robot Carol, der wird wenigstens sauber programmiert. Für praktische Anwendungen im *nix- Umfeld sind Shell/Bash, sed und awk sehr nützlich, sonst: nimm Python. Das ist pädagogisch am sinnvollsten. LG, track
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17621
Wohnort: Berlin
|
Wenn man viel mit Linux arbeitet empfiehlt es sich die Bash kennenzulernen, weil man damit andere Programme kombinieren kann, bzw. wiederkehrende Aufrufe automatisieren usw. Leider ist die Bash sehr viel weniger eine Hochsprache als andere Skriptsprachen - dafür ist sie prächtig ins Betriebssystem integriert wie sonst nichts. Die meisten Programmiersprachen sind turing-vollständig, was bedeutet, dass man in ihnen alles programmieren kann, was man mit allen anderen auch kann. Allerdings geht es hier eleganter als da, hier schneller als da, und manche Sprache ist für spezielle Aufgaben klar besser geeignet. C und C++ sind in die Jahre gekommen, und m.E. auf der einen Seiten fehleranfällig, und für wirklich gefährliche Fehler. Andererseits ist es aufwendig in ihnen zu entwickeln. Im Embeddedumfeld und für den Linuxkernel ist C jedoch kaum verzichtbar. Von C und C++ würde ich direkt abraten. Etwas exotisch und für spielerische und experimentelle Projekte gut geeignet ist Squeak/Smalltalk. Das benutzen nur wenige, aber ist die Mutter der objektorientierten Programmierung. Sehr viel populärer ist Java, welches heute aber langsam überholt erscheint. Gegenüber den Skriptsprachen Python, Ruby usw. zeichnet Java aus, dass es statische Typen verwendet. Es ist aber viel mehr zu tippen, als in jenen, sog. dynamischen Sprachen. Eine Abhilfe bietet da Scala, welches nicht nur objektorientiert ist wie Smalltalk, sondern auch funktional wie Haskell (wenn auch nicht ganz). Man kann damit auch interaktiv Skripten, was sehr anfängerfreundlich ist, aber auch Profifreundlich - ja, es ist überhaupt sehr freundlich. Auf ganz anderen Gebieten stark sind SQL und sed. Sed oder AWK oder Perl - eines davon zu kennen zahlt sich ungemein aus, um mit regulären Ausdrücken rasch Daten manipulieren zu können. Was man da an Zeit spart ist immens. Und SQL ist kaum verzichtbar um Daten zu speichern, zu aktualisieren, abzufragen und zu verknüpfen, also zur Handhabung von Datenbanken. Aber beides kann später kommen - ist etwas trocken zu lernen, und nicht so erheiternd wie hüpfende Bälle.
|