Pure BAsic für die Schule

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Hallo!
Ein Lehrer, der eine imperative Sprache unterrichtet: Wo gibts denn sowas noch?

Ich bin freudig überrascht ;)

Auf meinen ehemaligen Schulen habe ich HTML, WOrd und Powerpoint in Informatik 'beigebracht' bekommen. Wow. Jetzt in der Berufsschule lernen wir Java :roll:

Ich empfinde Purebasic als gutes Einsteigermittel um die Programmierung näher zu bringen. Schleifen, ABfragen, Zuweisungen und auch Pointer sind damit möglich. Dass man ab und zu Querverweise zu einer anderen Sprache machen sollte (zum Beispiel C) ist klar, sodass wirklich das Programmieren an sich beigebracht wird.

Wenn in irgendeiner Weise Interesse besteht, kann ich als garnicht-mal-solange-her-Schüler Ihnen gerne helfen...
Ich kenne ja die Anfangsschwierigkeiten ;)

In dem Sinne
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
zwackelmann
Beiträge: 21
Registriert: 05.01.2007 17:54

Beitrag von zwackelmann »

Wenn ich nur die Sprachen verwenden darf, die der Schüler in der "Proggerwelt" ( die er wahrscheinlich nie betreten wird ) wiederfindet, dann bleibt nur C++, VB und vielleicht noch Delphi übrig. ( HTML und Co. verfolgen einen anderen Ansatz. ) Das ist in einem Schuljahr zwar zur Not auch zu leisten, aber der Spaß bleibt da doch auf der Strecke, weil man ja nur zu diesen Minianwendungen kommt und die spielen sich doch alle im Bereich Büroanwendungen ab.

Außerdem wäre das ja Geldverschwendung, da man die üblichen Sprachen ja teuer bezahlen muss und schon gar nicht als Freeware bekommt. :mrgreen:
Viele meiner Schüler sind leidenschaftliche Spieler und hätten bestimmt Spaß daran, mal in die Programmierung von Spielen reinzuschnuppern, auch wenn das als Anfänger in PureBasic nur sehr vereinfacht möglich ist. Aber der Spaß und die Motivation, ein kleines Snake-Spiel selbst zu machen, ist doch nicht zu verkennen.

Aber eigentlich geht es nicht um eine Sprachendiskussion. Ich kann entweder Delphi oder PureBasic machen, da wir diese Sprachen an der Schule haben und ich selbstverständlich nicht irgendeine Nischensprache lehren will.

Ich hatte um Hilfe zu PureBasic gebeten. Zu Delphi gibt es für die Schule reichlich Material, Kurse, Unterlagen usw.
Auweia!
Grüße
Zwackelmann
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@wasser
>> Declare Function somefunc() As sometype ptr
Ich finde das davorschreiben von "*" einfacher. Codetags haste immer noch
nicht gefunden :freak:
Freebasic gibts noch garnicht, lediglich eine Entwicklungsversion, 0.27, die
fast wöchentlich die Syntax ändert.

Wenn Du nur das MS-Like Basic, welches nicht unbedingt Basic-Like ist,
akzeptierst, dann mach das, aber Deine Kommentare sind Inkompetent.

Ich programmiere in XProfan, Delphi, FreeBasic, D und PureBasic, wobei mir
PureBasic am liebsten ist, weil die Syntax, welche überwiegend aus dem
Aufruf von Funktionen besteht, einfacher ist. Diese HickHack Basic mit Befehl
und Funktionsform, mit Sub usw. ist unnötiger Ballast, überbleibsel von vor 20 Jahren
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
wasser
Beiträge: 125
Registriert: 27.11.2006 21:16

Beitrag von wasser »

.....Viele meiner Schüler sind leidenschaftliche Spieler und hätten bestimmt Spaß daran, mal in die Programmierung von Spielen reinzuschnuppern, auch wenn das als Anfänger in PureBasic nur sehr vereinfacht möglich ist....

das kannste mit purebasic z.z. nur als 2d machen, für 3d wird an der irrlichtproduktion ala purebasic gearbeitet, dauert noch eine weile, oder aber man wendet sich opengl zu. das ogre-format in pure hat sich tot gelaufen, weil die version in pure nicht mehr kompatibel zu der neuen ogre-version ist.
es gibt dazu keinerlei hilfen für die ogre-mesh usw.

und mit 2d reißt du keinen schüler vom hocker.
Zuletzt geändert von wasser am 09.01.2007 15:26, insgesamt 2-mal geändert.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ok wir können jetz hier nen flame lostreten (bzw weiterführen) doch das fidne ich ein bisschen niveaulos
Wenn man bedenkt, das man bei einer frage nach material für den unterricht schon 5 seiten relativ offtopic verbracht hat :freak:
Ich woltle hierbei mal dazu aufrufen, sich etwas mehr on topic zu halten

//edit:
Hab bis jetz nru ein Problem mit der Stabilität eines meiner Programme, udn das liegt an schlechter ThreadProgrammierung mit ApiAufrufen meienrseits :freak:
Alle anderen Programme tuen genau das, was sie sollen, und wenn etwas nicht klappt, wird mir spätestens hier im Forum von anderen gezeigt, das es ein Programmierfehler ist
(wobei das bei kleinen Programmen in einer Klasse kein Problem sein wird)
Zuletzt geändert von a14xerus am 09.01.2007 15:33, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Aus den Examples von Freebasic:

Code: Alles auswählen

''
'' calendar demo, code by zydon (...@...)
''

#include once "windows.bi"
#include once "win/commctrl.bi"
	
	dim shared hInstance as HINSTANCE
	dim shared calClass as string 
	dim shared hCal as HWND
	
    hInstance = GetModuleHandle( NULL )
    calClass = MONTHCAL_CLASS 

	dim iccx as INITCOMMONCONTROLSEX 
	iccx.dwSize = len( iccx ) 
	iccx.dwICC  = ICC_DATE_CLASSES 
	InitCommonControlsEx( @iccx )



'' 
'' Window Procedure Handler 
'' 
function WndProc ( byval hWnd as HWND, _ 
                   byval uMsg as UINT, _ 
                   byval wParam as WPARAM, _ 
                   byval lParam as LPARAM ) as integer 

    function = 0 
    
    select case ( uMsg ) 
    case WM_CREATE 
		hCal = CreateWindowEx( 0, _ 
                               calClass, "", _ 
                               WS_CHILD or WS_VISIBLE, _ 
                               2, 2, 200, 160, _ 
                               hWnd, null, _ 
                               hInstance, null ) 
	
	case WM_KEYDOWN 
		if( lobyte( wParam ) = 27 ) then 
			PostMessage( hWnd, WM_CLOSE, 0, 0 )
        end if 
	
	case WM_DESTROY 
    	PostQuitMessage( 0 )
        exit function 
    end select 
    
    function = DefWindowProc( hWnd, uMsg, wParam, lParam )
        
end function 


	'' 
	'' Program entry 
	'' 
	dim wMsg as MSG 
	dim wcls as WNDCLASS      
	dim hWnd as HWND	

	dim appName as string 
    appName = "WinCal32" 

	with wcls
		.style         = CS_HREDRAW or CS_VREDRAW 
		.lpfnWndProc   = @WndProc
		.cbClsExtra    = 0 
		.cbWndExtra    = 0 
		.hInstance     = hInstance 
		.hIcon         = LoadIcon( null, IDI_APPLICATION ) 
		.hCursor       = LoadCursor( null, IDC_ARROW ) 
		.hbrBackground = cast( HGDIOBJ, 6 )  ' default color 
		.lpszMenuName  = null 
		.lpszClassName = strptr( appName ) 
	end with
      
	if( RegisterClass( @wcls ) = FALSE ) then 
   		MessageBox( null, "Failed to register wcls!", appName, MB_ICONERROR )
   		end 1
	end if 
    
	hWnd = CreateWindowEx( 0, _ 
        				   appName, "Calendar Demo [ESC to Quit]", _ 
         				   WS_CLIPCHILDREN or WS_DLGFRAME or WS_BORDER or WS_VISIBLE, _ 
         				   200, 200, 210, 190, _ 
         				   null, null, hInstance, null ) 
                          

	'' 
	'' messages loop 
	'' 
	do until( GetMessage( @wMsg, null, 0, 0 ) = FALSE )
		TranslateMessage( @wMsg )
		DispatchMessage( @wMsg )
	loop
   
	end 0
Übertragen nach PureBasic by me:

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, 0, 210, 160, "Calendar Demo [ESC to Quit]", #PB_Window_TitleBar)
  AddKeyboardShortcut(0, #PB_Shortcut_Escape, 0)
  CreateGadgetList(WindowID(0))
  CalendarGadget(0, 0, 0, 210, 160)
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow : Break
    Case #PB_Event_Menu
      If EventMenu() = 0
        Break
      EndIf
  EndSelect
ForEver
Preisfrage: Welche Sprache ist Einsteigerfreundlicher :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hallo Herr "zwackelmann",

Ich ( 18 ) bin derzeit Schüler der Klasse 11 des Ratsgymnasiumsin Rheda-Wiedenbrück. Ich finde, ich kann eine gute Meinung zu Ihrer Frage "Delphi oder PureBasic" abgeben, da ich beide Sprachen kenne.

Zunächst einmal: Ich finde es wirklich klasse, dass Sie PureBasic an Ihrer Schule anbieten wollen. Ich unterstütze Ihre Idee 100%ig und würde am liebsten sofort zu Ihrer Schule wechseln. :D

———————————————————————————————————————

Bis einschließlich Klasse 10 lernten wir im Unterricht "Informatik" nur Dinge wie Logo, Locad und Word/PowerPoint/Excel. Das Thema HTML war für mich dabei am interessantesten und (ich hätte fast gesagt "natürlich) war ich der Beste (ohne jetzt angeben zu wollen, aber... :roll: ).
Wie gesagt, ich kenne die Sprache Delphi gut. Wir haben vor Delphi mit TurboPascal angefangen, da mein Lehrer mich darauf hinwies, dass TurboPascal der Vorgänger von Delphi ist.

Da ich die 11. Klasse wiederhole, weiß ich also nur zu gut, was noch auf mich zukommen wird. Sicherlich ist Delphi bekannter als PureBasic, was vielleicht auch in der Bewerbung eine kleine Rolle spielt. Ich finde es jedoch schade, dass wir in Delphi keine Events abfragen und die fenster/Buttons immer nur mit dem Designer erstellen (der meiner Meinung nach zweifellos besser als der von PureBasic ist).

Nun zu PureBasic: Ich habe PureBasic auf der Suche nach einer Programmiersprache gefunden. Zunächst ohne Ansprüche wollte ich "ganz normal" Fenster-Applikationen erstellen, zuächst mal etwas ganz einfaches wie einen DM/EUR Umrechner.
Ich programmiere in PureBasic seit dem 1. Okt. 2005 und finde es bei weitem besser als Delphi. In Delphi, wie Sie ja sicher wissen, haben Sie allein 2 Operatoren, einen Zuweisungsoprator ":=" und einen Vergleichsoperator "=". In PureBasic gibt es nur das "=", welches beide Funktionen gleichzeitig erfüllt. Wie gesagt, da ich (wirklich ohne prahlen zu wollen) der beste Schüler des Informatikkurses bin, kann ich meine Mitschüler auch mal aus der Perpektive des Lehrers sehen. Ich helfe meinen Mitschülern sehr oft, sowohl bei Syntaxfragen als auch beim Auffinden logischer Fehler. Zurück zu den Operatoren: Sie glauben nicht, wie oft hier und da mal ein Operator vertauscht wird! Vielleicht nervt es Sie ja auch, in Delphi jede Zeile mit ";" beenden müssen. In PureBasic ist das nicht der Fall und ich lüge nicht, wenn ich sage, dass meine Mitschüler öfter mal ein Semikolon vergessen, und sei es nur aufgrund eines schilchten "Tipfellers".

PureBasic schlägt Delphi hinsichtlich der Einfachheit der Syntax ganz klar, ich könnte die Liste (fast) ewig fortsetzen, möchte jedoch nur noch 2 kurze Beispiele liefern: Das "BEGIN" und "END" ist bei Prozeduren als auch bei mehrzeiligen "IF"-Anweisungen in Delphi leider unabdingbar, in JavaScript wird stattdessen "{" und "}" benutzt. Dies ist äußerst ärgerlich, führt das vergessen des "END"s doch häufig zu Fehlern. Wir werden werden zwar angewiesen, dieser Fehlerursache durch Code-Einrückungen durch Tabulatoren entgegenzuwirken um gleich auch einen lesbareren Code zu haben, doch wird dies von wenigen Schülern manchmal nicht getan. Sogar in der Informatikklausur hat der Leher einen Fehler gemacht. Er hat sehr viele IF/ELSE-Anweisungen in eine Zeile geschrieben, die wiederrum viele BEGIN/END enthielten. Unsere Aufgabe war, diesen Code durch Einrücken lesbar zu machen und herauszufinden, was der Code tut. Mein Lehrer vergaß an einer Stelle ein solches BEGIN/END-Paar schon beim Erstellen der Aufgabe. Wir bekommen diese Informatik-Arbeit morgen zurück, jedoch hat er mir gestern schon mitgeteilt, dass ich der Einzige bin, dem dieser Irrtum aufgefallen ist (tatsächlich habe ich dies als Anmerkung in die Klausur geschrieben). Er hat mir auch schon meine Note verraten, es ist eine 1 (sehr gut).

Das 2. Beispiel, welches ich kurz erläutern möchte, wobei man deutlich die Überlegenheit PureBasics erkennen kann ist z. B: die Erstellung von Strukturen (in Delphi heißen sie "RECORD"). In Delphi wird dies umständlich mit Hilfe von "TYPE RECORD" (glaube ich) gemacht. In PureBasic benutzt man dazu einfach nur "Structure/EndStructure" und schreibt alles dazwischen.
Wie gesagt, ich lüge nicht, wenn ich Ihnen sage, dass viele die Strukturen in Delphi nicht verstehen, ja sie können sich sogar die Syntax nur mit Mühe merken.

———————————————————————————————————————

Wie gesagt, ich finde Ihre Idee, PureBasic anzubieten, super! Ich verstehe auch nicht, warum einigen anderen hier die Bildung Ihrer Schüler so am Herzen liegt. Immerhin ist es ja nicht Ihre Absicht, Delphi durch PureBasic zu ersetzen (korrigieren Sie mich, wenn ich mich irre). Dies wird ja durch die Richtlinien, an die sich ein Lehrer zu halten hat, verhindert. Ich möchte Sie nocheinmal zitieren, um einige Diskutanten wie "wasser" darauf hinzuweisen, dass Sie einen freiwilligen Kurs anbieten möchten und keinen festen Unterricht:
zwackelmann hat geschrieben:Ich wollte einen freiwilligen Kurs anbeiten, um mal in Programmierung reinzuschnuppern. Dabei soll es nicht so sehr um "ernsthafte" Programmierung gehen, sondern im Kennenlernen.
Es werden also nur diese Ihren Kurs besuchen, die auch wirklich programmieren möchten, weil diese vielleicht später mal Informatiker werden wollen. Sie können sicher sein, dass auch nur die kommen, die sich das zutrauen. Wenn ich da an letztes Jahr denke, da gab es zwei oder drei Schüler, die selbst nach zwei maliger Erklärung nicht wussten, was ein Array ist. Ich lernte Arrays kennen, als ich mich vor Jahren mit JavaScript beschäftigte, und ich gebe ganz offen und ehrlich zu, dass es mir genauso ging: Ich begriff einfach nicht, was Arrays sind, sooft ich das Kapitel in dem Buch, das ich mir kaufte, auch las.

Damit komme ich zu einem weiteren Punkt: Ich möchte Sie (ohne Hintergedanken) nur mal fragen, warum Sie diese doch schon recht "professionelle" Art des Programmierens schon in Klasse 9 anbieten? So gern ich auch programmiere, leider ist nicht jeder so begabt wie ich, dass er sich das schon zutraut. Ich finde, man muss schon etwas älter sein, mindestens Klasse 10 bzw. 11 besuchen, weil man dann eine gewisse Intelligenz erreicht hat, um die Programmiersprache (sei es Delphi oder PureBasic) zu verstehen. Ein Zweijähriger, der laufen kann, wird auch nicht versuchen, Auto zu fahren, weil ihm dazu einfach die Fähigkeit fehlt so komplex zu denken. Genau diese Art von komplexes denken ist aber zum Programmieren erforderlich (zum Beispiel eben für Arrays oder auch für lokale/globale Variablen). Das merke ich ja an mir selbst: Ich habe im zarten Alter von 12/13 angefangen, mit HTML, dann JavaScript. Ich verstand einfach nichts von lokalen und globalen Variablen. Mittlerweile bin ich älter und kann mir dies gut vorstellen. Ich hoffe, Sie verstehen, was ich meine, wenn ich Sie frage, warum Sie so jungen Sprösslingen das Programmieren beibringen wollen.

Bevor ich nun meine "Rede" beende, möchte ich noch ganz kurz auf die in dieser Diskussion angesprochenen Stabilität von PureBasic eingehen. Ich kann nur sagen, dass weder die IDE noch ein von mir erstelltes Kompilat abgestürzt ist oder instabil läuft. Ich habe genug Wissen, damit ich einer 100%igen Auslastung der CPU durch pausenloses Verwenden von "WaitWindow()" vorbeugen kann - das werden Ihre Schüler aber auch haben. Zu den Bugs: Leider muss ich sagen, dass mir einige Bugs auch auf den Keks gehen, man darf aber wirklich nicht vergessen, wie groß der Sprung ist, den PureBasic von Version 3.94 nach 4.00 vollzogen hat. es gibt sooooo viele neue Funktionen, die alle auf den ersten Blick beim Testen funktionieren, bei einer Veröffentlichung hinterher jedoch Fehler auftreten. Deshlab erschienen doch extra zwei weitere "Bug-fix" Versionen, weshalb wir derzeit schon bei Version 4.02 sind. Und vergessen Sie nicht ihr lebenslanges Update-Recht! Sie brauchen also nie wieder etwas für Updates zu bezahlen, selbst wenn morgen schon die Version 5.00 rauskäme.

———————————————————————————————————————

Ich hoffe, Sie haben meinen Beitrag gelesen. Wie ich bereits sagte, finde ich Ihre Idee, PureBasic in der Schule anzubieten, sehr gut! Ich wünsche Ihnen viel Erfolg bei Ihrem weiteren Vorhaben; vielleicht schreiben Sie ja mal, was Sie erreicht haben und ob auch Ihre Schüler nun Delphi oder PureBasic besser finden. :allright:

Gruß, AND51
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
wasser
Beiträge: 125
Registriert: 27.11.2006 21:16

Beitrag von wasser »

ich finde die von freebasic einfacher, weil ich die gleichen aufrufe auch in c und delphi und xblite verwenden kann, ich brauche nur einmal zu lernen.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ohne mich von TS-Softs Preisfrage beeinflussen zu lassen, finde ich das PB-beispiel bei weitem einfacher, als das FreeBasic-Beispiel, was er liefert.

Ich bin überglücklich, bei PureBasic zu landen, um ein Haar hätte ich vermutlich FreeBasic: Ich arbeitete eine Zeit lang mit QBasic und suchte dessen Nachfolger um auch endlich GUI-Applikationen erstellen zu können. Dabei stieß ich auf ... Wie hießt das? R-basic, RS-Basic oder RapidQ oder so? Diese Sprache ist auf jeden Fall ausgestorben, was für mich ein Grund war, weiter zu suchen. Dann stieß ich auf PureBasic.



Anyway, nach meinem vorigen Beitrag (über 8.650 Zeichen) fühle ich mich wie nach einer Klausur: Fix und alle... :coderselixir:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

wasser hat geschrieben:ich finde die von freebasic einfacher, weil ich die gleichen aufrufe auch in c und delphi und xblite verwenden kann, ich brauche nur einmal zu lernen.
Die API Variante kannste in PureBasic ja auch schreiben. Beispiele findeste
im CodeArchiv. Du hast also die freie Auswahl. Der Vorteil ist, Du mußt es
nicht so umständlich machen, aber Du darfst
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten