Großer Anfänger Thread

Vertigo21 hat gesagt.:
Hallo zusammen. Da es einen entsprechenden Beitrag scheinbar noch nicht gibt, wollte ich mal einen aufmachen. Dieser Beitrag soll Anfängern den Einstieg erleichtern. Jeder ist herzlich eingeladen sich zu beteiligen.

Es wäre vielleicht praktisch, wenn du dies alles zusammenstellst und daraus ein Tutorial machst, wir sind ja hier schliesslich auf tutorials.de ;)

Vertigo21 hat gesagt.:
Unabhängig vom Inhalt der jeweiligen Funktionen, welche Methode würdet ihr vorziehen, bzw. welche hat sich im täglichen Gebrauch als sinnvoller erwiesen oder ist es gar völlig egal?

Das kannst du nicht so vergleichen. Eine Sub ist eine Prozedur d.h. eine Stapelung von diversen Anweisungen, welche nacheinander ausgeführt werden. Wurden alle Anweisungen in der Prozedur abgehandelt, geht das Programm weiter. Ein Beispiel aus dem täglichen Leben wäre z.B. "ApfelEssen". Wenn Dir dein Gehirn sagst du sollst den Apfel essen dann machst du es und danach machst du was anderes.

Eine Funktion jedoch hat einen Rückgabewert. In einer Funktion werden z.B. diverse Sachen berechnet und dann zurückgegeben. Wenn du zum Beispiel wissen willst, wieviele Äpfel du heute schon gegessen hast, rufst du die entsprechende Funktion auf, welcher Dir den Wert zurückgibt.

Es kommt also ganz darauf an was du gerade machst. In praktisch allen Projekten und Programmen verwendest du jedoch immer Prozeduren UND Funktionen.
 
Zuletzt bearbeitet:
Ach so. Bei Wikibooks stand der Begriff "sub" unter "Funktion". Dann wäre das ja geklärt. Ist offensichtlich nur ein Formulierungsfehler im Wiki-Book.
 
Siehe noch meine Änderung im oberen Post ;)

Ja da hast du recht. Grundsätzlich gibt es beim programmieren nur Methoden, enweder mit oder ohne Rückgabewert.

zum Beispiel mit Rückgabewert:

Code:
public string bla() {}

ohne Rückgabewert:

Code:
public void bla() {}

Aber ist ja bekannt dass die Microsoft immer anders machen muss ;)
 
aquasonic hat gesagt.:
Es wäre vielleicht praktisch, wenn du dies alles zusammenstellst und daraus ein Tutorial machst, wir sind ja hier schliesslich auf tutorials.de ;)

Früher oder später werde ich das sowieso. Nur wollte ich erstmal etwas sammeln.

Wenn man bei Wikibooks weiterliest kommt man gegen Ende tatsächlich auch zum Wörtchen "Function". Allerdings wird der Unterschied nicht so ganz klar. Ich werde das oben noch mit einarbeiten.

##### EDIT ##########
Noch eine allgemeine Frage zum Aufbau:

Beispiel:
Code:
Private Function Verdoppeln(ByVal Zahl As Integer) As Integer
  Dim Doppel As Integer = 2 * Zahl
  Return Doppel
End Function
Zur ersten Zeile: "ByVal Zahl As Integer" ist ja noch einleuchtend, aber warum wird hinter der Klammer nochmals "As Integer" benötigt?
 
Zuletzt bearbeitet:
Weil das der Rückgabetyp der Funktion ist. ;)

aquasonic hat gesagt.:
Eine Funktion jedoch hat einen Rückgabewert. In einer Funktion werden z.B. diverse Sachen berechnet und dann zurückgegeben. Wenn du zum Beispiel wissen willst, wieviele Äpfel du heute schon gegessen hast, rufst du die entsprechende Funktion auf, welcher Dir den Wert zurückgibt.
[edit]
Funktion sollte man nicht immer nur verwenden um Werte von irgend wo her zu beziehen.
[/edit]
Bevor ich weiter ausführe ein paar Basics für .NET:

Es gibt Wert-Typen ( Strukturen und alle primitiven Datentypen ), welche ansich ja auch nur Strukturen sind.
Und gibt es noch die Referenz-Typen ( Klassen ). Wenn Du Referenztypen zuweist,
hast immer eine Referenzkopie auf das selbe Objekt. Bei Werttypen eine Kopie,
was sich dann auch bei den Methodenaufrufen wieder spiegelt.

D.h. dass die Parameter einer Methode die Werttypen sind kopiert werden,
aber Referenztypen hingegen direkt verändern kannst. Damit meine ich aber nur deren den Inhalt.
Wenn Du Referenztypen neu instanzierst geht die Referenz verloren und Du hast 2 unterschiedliche Objekte.
Du kannst aber ich das Verhalten der Werttypen mittels Ref und Out Parameter
dahingehend beeinflussen, dass sie sich bei Methodenaufrufen wie Referenztypen verhalten.

Daher ist es nicht immer so das man Informationen nur durch einen Rückgabewert bekommen kann. ;)
Die Informationen können sich aber auch innerhalb eines Objekts/Klasse befinden,
welches sich um eine Bestimmte Aufagbe kümmert. Daher ist es nicht immer notwendig,
sich einen Wert durch eine Methode/Funktion zu holen, was zudem auch immer einen Overhead bedeutet.
Stichwörter (Sry, Links sind leider für c# *g*):

aquasonic hat gesagt.:
Es kommt also ganz darauf an was du gerade machst. In praktisch allen Projekten und Programmen verwendest du jedoch immer Prozeduren UND Funktionen.
Das ist zwar richtig aber man sollte das nicht so weit runter brechen.
In der Prozeduralen Welt mag das vielleicht so sein aber so formuliert man es nicht nicht
nach den Idiomen der heutigen Anwendungsentwicklung.
Was ich sagen will das man nicht nur in Methoden und Funktionen denke solllte,
Man muss jedes Problem dahingehend abstrahieren können das man die Aufgaben
in Teilaufgaben zerlegt (Methoden/Funktionen) und in einem Objekt/Klasse zusammengefasst.
Mehrere Klassen werden wiederum in Aufagenbereiche (Namespaces) zusammengefasst.
Das ganze nennt sich OOP (Object-Oriented Programming / Objekt Orientierte Programmierung).
Die OOP ist zZ das aktuelle Paradigma der Anwendungsentwicklung und ist aus der Notwendigkeit herraus entstanden,
die IT Branche aus der damaligen Softwarekriese herraus zu führen.
Würde man sie die heutzutage auch gekonnt einsetzen, hätte man nicht solch blamable Fälle
wie eine unwartbare Arbeitslosengeld 2 Software die Millionen verschlang (Initiator Peter Harz - Vorstand Harzkommision).
Lass Dir das eine Lehre sein Vertigo21.

Du solltest dich bevor Du dich überhaupt an das umsetzen irgend welcher Programme
erst mal mit den Grundlagen deiner Programmiersprache vertraut machen.
Lern wirklich alle Schlüsselworter und mach dich mit den Namespaces des Frameworks vertraut.
Dafür ist die MSDN da und probier alles akriebisch aus. Alles weitere kann man dann hier besprechen.

Von einem Tut würd ich übrigens erst mal abraten. ;)
 
Zuletzt bearbeitet:
Ich bin durchaus einverstanden mit dir cosmo :) Dachte nur meine Ausführungen sind leichter zu verstehen als deine, doch etwas detailliertere ;) Will er richtig programmieren (wenn nicht soll er auch die Finger davon lassen ;)) muss er sich mit alldem natürlich im Schlaf auskennen :)

Nur mit einem bin ich nicht einverstanden: Overhead hin oder her, auch in OOP wirst du nicht um Funktionen herumkommen. Aber du du sagst, es ist besser sie zu vermeiden ;-) Aber zudem ging es hier bei seinen Fragen ja um VB6, welches OOP noch nicht wirklich implementiert (soweit ich das weiss).
 
auch in OOP wirst du nicht um Funktionen herumkommen.
Stimmt, um Funktionen wird man wirklich nie herrum kommen. :rolleyes: :D
Nee Spaß, was ich sagen wollte ist das man nicht nur ausschließlich auf diesem Weg Werte beziehen kann.
Aber er wird das schon noch lernen wenn ersich anstrengt und viel ausprobiert.
Mit der Zeit bekommt ein Gefühl dafür wie man Werte bereit stellen kann.
Das kann ja auch hier besprechen. Ist ja von Anwendungsfall zu Anwendungsfall verschieden.
Wichtig ist das er die OOP rechtzeitig versteht und lernt seine Aufgaben zu abstrahieren.

Aber zudem ging es hier bei seinen Fragen ja um VB6, welches OOP noch nicht wirklich implementiert (soweit ich das weiss).
Ja das ist richtig. Nur war meine ausführung auch auf .NET Bezogen was er ja auch angesprochen hatte.
Ich empfehl auch das eher das zu erlernen da es dem heutigen Standard entspricht.
 
Erstmal vielen Dank an euch beide (auch wenn die Ausführungen von aquasonic für einen Anfänger in VB.NET verständlicher waren).

Zu meinem Projekt: Generell bin ich in Sachen Programmierung kein Neuling (früher habe ich mit C++, Java und PHP gearbeitet), daher kann ich, was ich in Tutorials sehe, meistens einem mir bereits bekannten Bereich zuordnen. Allerdings lässt mein ziemlich enger Zeitplan bei dem Projekt leider vorerst keine tiefgreifende Einarbeitung zu, obwohl es zweifellos angebracht wäre. Aber auch der Umfang des Projekts ist sehr gering. Das Programm soll:
  • Daten in bestimmten Intervallen aus einer Excel-Liste holen
  • Die Excel-Liste in einen Archiv-Ordner kopieren
  • Eine leere Excel-Liste entsprechend dem aktuellen Datum umbenennen und in den öffentlichen Ordner kopiern
  • Die ausgelesenen Daten in eine Oracle-DB schieben

Das wäre schon so weit alles. Daher dachte ich mir, ich gehe in Schritten vor. Zunächst einmal das Einarbeiten in die Grundlagen. Danach schreiben von Funktionen für die einzelnen Programmabläufe und zuletzt das Zusammenfügen in ein fertiges Programm.

Bei dem Ganzen handelt es sich nur um ein kurzzeitig eingesetztes Projekt. Daher wurde auch kein professioneller Programmierer engagiert sondern nur ein normaler EDV-Mitarbeiter beauftragt, also ich. Daher sind OOP und andere Feinheiten für mich erstmal zweitrangig. Es muss nur schnell fertig werden und so lange funktionieren wie das Projekt dauert.

Aber ich wäre dennoch dankbar, wenn ich in Zukunft auf eure Erfahrung zählen könnte.
 
Zuletzt bearbeitet:
Omg :D Ich wurde grad darauf hingewiesen, das ich in dem [post=1311953]15. Post[/post] etwas falsch formiliert hab.
Hab es grad abgeändert, sorry dafür. :D

Eröffne bitte für die Frage zur Umsetzung des Programms einen neuen Thread und das Thema nicht unnötig zu überladen.
Alles weitere zu den Grundlagen können wir hier gerne weiter besprechen. :)
 
Zuletzt bearbeitet:
Christian Kusmanow hat gesagt.:
Omg :D Ich wurde grad darauf hingewiesen, das ich in dem [post=1311953]15. Post[/post] etwas falsch formiliert hab.
Hab es grad abgeändert, sorry dafür. :D

Eröffne bitte für die Frage zur umsetzung des Programms einen neuen Thread und das Thema nicht unnötig zu überladen.
Alles weitere können wir hier gerne weiter besprechen. :)

Wie recht du hast :)

Vertigo21 hat gesagt.:
# Daten in bestimmten Intervallen aus einer Excel-Liste holen
# Die Excel-Liste in einen Archiv-Ordner kopieren
# Eine leere Excel-Liste entsprechend dem aktuellen Datum umbenennen und in den öffentlichen Ordner kopiern

Alles was sich in Excel abspielt kannst du generell mal in einem Makro aufnehmen. Dazu startest du mal das Aufnehmen eines Makros, führst die gewünschten Aktionen durch (so wie es dann automatisiert ablaufen soll) und schaust dir dann den Code an. Dies hilft meistens und so kommst du (in deinem Fall) wohl sehr schnell zum Ziel.
 
Zurück