 |
|
|
04.05.10, 20:01
|
#1
|
Anfänger
Registriert seit: Jul 2009
Beiträge: 15
Bedankt: 2
|
Zitat:
Zitat von kramido
[Ironie]Für einen absoluten Neuling ist es sicher einfacher, Dinge wie Objektorientierung, Vererbung, Delegates neben dem Tagesgeschäft wie beispielsweise Programmablaufsteuerung oder das Konzept von Variablen zu begreifen. Ein grundsätzliches Verständnis für die Prozesse, die in einem Programm vor sich gehen und die dahintersteckende Komplexität von einfachen Operationen in modernen Hochsprachen (z.B. Garbage Collection) ist sicher fehl am Platz.[/Ironie]
|
Ja das sind alles Sachen die das OOP ausmachen, aber für den Anfang muss man die nicht nutzen. Mann kann C# genauso sequenziell nutzen wie C. Aber schon mal versucht etwas grafisches mit c/c++ unter Windows mit der WinApi hinzubiegen.
Fenster unter C
Code:
#include <windows.h>
const char g_szClassName[] = "myWindowClass";
// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"The title of my window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// Step 3: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
Fenster mit C#
Code:
Form fenster = new Form();
Application.Run(fenster);
Man kann doch schon deutlich den Unterschied sehen. Mit C muss man sich einfach extrem viel Hintergrundwissen aufbauen bevor es mal richtig losgeht.
|
|
|
04.05.10, 23:48
|
#2
|
Erfahrener Newbie
Registriert seit: Apr 2010
Beiträge: 172
Bedankt: 31
|
Zitat:
Zitat von Nava001
Ja das sind alles Sachen die das OOP ausmachen, aber für den Anfang muss man die nicht nutzen.
|
Viel Spaß beim Benutzen eines eingefügten Buttons ohne Delegates. Der wird sicher nicht so viel Spaß machen..
Zitat:
Zitat von Nava001
Mann kann C# genauso sequenziell nutzen wie C.
|
Du meinst prozedural und nicht sequentiell, oder?
Zitat:
Zitat von Nava001
Aber schon mal versucht etwas grafisches mit c/c++ unter Windows mit der WinApi hinzubiegen.
|
Mehr als nur versucht. Ist kompliziert für Anfänger, stimme ich zu. Aber konzeptionell ist sowieso die Frage, wie sinnvoll die Erstellung von Grafikanwendungen zu Beginn seiner 'Programmierlaufbahn' ist.
Zitat:
Zitat von Nava001
Mit C muss man sich einfach extrem viel Hintergrundwissen aufbauen bevor es mal richtig losgeht.
|
Da man keine riesige Bilbiothek im Rücken hat, muss man einige Sachen von Hand erledigen. Man erlangt jedoch so auch ein Gespür, wie kompliziert die einfachsten Problemstellungen sein können, wenn man sich versucht, maschinell zu lösen.
Ich kann grundsätzlich nur jedem empfehlen, mit einer eher konservativen Sprache C oder sogar einer Skriptsprache prozedural anzufangen. Sobald man dann nach und nach erstmal fundamentale Konzepte wie Programmierung mit Schleifen, Auslagerung von Quellcode in Funktionen und das Speichermanagement verstanden hat, kann man sich weiterführenden Problemen wie Objektorientierung, Vererbung, usw. zuwenden. Hierfür kann man dann z.B. C++, Java oder C# benutzen.
Einen Sprung ins Wasser direkt mit C# halte ich für ziemlich gewagt und davon würde ich abraten. Man gewöhnt sich zu schnell an den Luxus, eine starke Bibliothek im Hintergrund zu haben und hat kein Verständnis für Prozesse, die im Hintergrund ablaufen. Sofern das jedoch nicht gewollt ist..
|
|
|
07.05.10, 19:59
|
#3
|
Anfänger
Registriert seit: Aug 2009
Beiträge: 8
Bedankt: 3
|
So, ich hab jetzt doch mit C angefangen und leicht ist es wirklich nicht(vor allem wenn man erst 15,so wie ich  , ist, da schon viele Fachausdrücke verwendet werden(jedenfalls in meinem Buch)). Ich lese und bearbeite jeden Tag ein Kapitel, aber abends lese ich es mir noch ein 2. mal durch, da man einige Dinge nicht sofort versteht.
Es ist zwar schwerer als ich am Anfang dachte, aber wenn man es wirklich lernen will, kann man auch mit C als 1. Programmiersprache nehmen.
|
|
|
07.05.10, 20:42
|
#4
|
$Mafia$Assassin§
Registriert seit: Apr 2009
Beiträge: 94
Bedankt: 98
|
Zitat:
Zitat von Rico111
So, ich hab jetzt doch mit C angefangen und leicht ist es wirklich nicht(vor allem wenn man erst 15,so wie ich  , ist, da schon viele Fachausdrücke verwendet werden(jedenfalls in meinem Buch)). Ich lese und bearbeite jeden Tag ein Kapitel, aber abends lese ich es mir noch ein 2. mal durch, da man einige Dinge nicht sofort versteht.
Es ist zwar schwerer als ich am Anfang dachte, aber wenn man es wirklich lernen will, kann man auch mit C als 1. Programmiersprache nehmen. 
|
Man kann auch schon viel früher anfangen.ich habe z.B. mit 13 angefangen(C++), jedoch muss ich zugeben, dass es mir nicht leicht gefallen ist.
Man muss sehr ehrgeizig sein um solch eine schwere Sprahce zu lernen und gut anwenden zu können.
|
|
|
Themen-Optionen |
|
Ansicht |
Hybrid-Darstellung
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr.
().
|