Basal C#
|
Hej Rowl’ere. Så kom der endnu en artikel fra min side af. Denne gang blev sproget C#, da Rowl endnu ikke har nogle artikler omhandlende dette. Før vi går i gang skal du have installeret en C# compiler, så din C# kode kan omdannes til rigtige programmer. Det er en god idé at downloade en IDE også, så dit arbejde bliver lettet lidt. Heldigvis kan begge downloades i én pakke hos microsoft: http://msdn.microsoft.com/vstudio/express/downloads/default.aspx … Gratis. Når du har installeret den er du sådan set klar, men det kan være en god idé lige at registrere den først. Dette skal gøres inden 30 dage, og tager kun nogle få minutter. Registreringen vil ikke blive gennemgået i denne artikel, da det sådan set bare er at udfylde en masse formularer og lignende. Start Visual C# op, tryk på ”File” og vælg ”New Project…” (Ctrl+Shift+N). På min skærm ser det sådan her ud: Nu skulle programmet vise et vindue med titlen ”Form1”. Det var så opsætningen, nu er vi klar til programmeringen, og den vil der virkelig komme noget af. Vi starter helt fra bunden, og gennemgår kun det mest basale. Derfor bliver det selvfølgelig utroligt simpelt, men det er også det bedste niveau at starte på, for så derefter at udvide og udvide. Indholdsfortegnelse - Om C# - Ordbog Om C# C# er et objektorienteret programmeringssprog ligesom C++, men der er dog visse åbenlyse forskelle. C# er hvad man vil kalde et low-level sprog, hvorimod C++ er et high-level sprog. Disse termer er forklaret i ordbogen. C# er et moderne sprog udviklet af Microsoft, som gør det let at udvikle applikationer. Den eneste hage ved det er dog, at Microsoft’s .NET framework skal være installeret for at man kan benytte disse programmer, men det er vist de færreste, der ikke har det. Du kan læse meget mere om C# på Internettet. Programmeringsmetode Som tidligere nævnt er C# OOP, og der bruges derfor objekter som funktioner og klasser til at styre programmet. Det er vigtigt at forstå visse koncepter inden man begiver sig ud i programmeringen, så det vil jeg lige prøve på. OOP kommer i mine øjne i tre lag. I første lag har man en masse variabler og funktioner. I andet lag har man en masse klasser. Disse klasser indeholder ens variabler og funktioner. I tredje lag kommer ens namespace. Namespace’et indeholder alle ens klasser. Det kan illustreres sådan her: ![]() I C# bliver alle tre lag anvendt hele tiden. Så snart du opretter et projekt vil der blive defineret et namespace og en klasse. Namespace’et vil ofte hedde det samme som dit projekt, så IDE ved, hvad den skal arbejde med, og ligeledes hvad den skal kompilere. Et namespace kan godt indeholde andet end klasser, men det ses sjældent, især i C#. Et namespace er altså bare en boks, hvori du putter dine forskellige objekter. Der er også en anden smart ting ved namespace’s, som jeg lige vil nævne. Normalt kan du kun have en klasse ved navn ’A’, i din kode. Hvis du opretter to namespaces, begge med klassen ’A’ i, vil du ikke få en nogen fejl. Du skal blot vælge hvilket namespace du vil arbejde med, og den pågældende A-klasse vil blive brugt. Nok om det, videre. Denne artikel vil kun nævne få af de simpleste aspekter i C#, da meget er medtaget fra ældre programmeringssprog. Den er henvendt til folk, der har erfaring med programmering, men som godt vil have noget grundlæggende viden at arbejde videre på. Du vil ikke lære at lave hverken simple eller avancerede programmer, men kun lidt kode, samt brug af IDE’en. I bund og grund vil du kun lære at opfange et klik på en knap, samt lidt om brug af funktioner mm.. Jeg håber, du har læst disse få linier, inden du bedømmer artiklen. Så kører programmet Tryk F7 for at se koden bag din nuværende fil. Koden skulle gerne se sådan her ud:
Dette er vores konstruktør. Den SKAL hedde det samme som vores klasse, ellers er det ikke en konstruktør. En konstruktør bliver kaldet som det første objekt, når klassen bliver brugt. InitializeComponent() er en funktion, og du kan læse hvad den gør på Google eller http://msdn.microsoft.com Så er koden gennemgået, men den skal selvfølgelig udbygges, for at vi kan få programmet til at gøre noget. Alt hvad programmet skal gøre, skal puttes ind i funktioner. For eksempel kan du ikke bare bede den om at vise en popup i klassens lag, det SKAL være i funktionens. Vi snakkede om en popup før. Den vil vi prøve at lave nu. Den skal vise beskeden ”Nu er programmet oprettet”, lige når det bliver kørt. Så vi tilføjer:
... Hvilket resulterer i: ![]() Det bliver din opgave at finde ud af hvor det skal placeres henne, men hvis du har læst grundigt indtil videre burde det ikke være noget problem overhovedet. MessageBox er en klasse, og Show er en funktion. Det er jo simpelt nok. Nu vil vi til at bruge noget, vi kender fra andre sprog. Vi starter med IF-konstruktionerne.
Sådan skal vores namespace se ud nu. Vi laver en streng (variabler kan godt være udenfor funktioner, da de er i samme ’lag’). For at være egoistiske gør vi den privat; vi vil ikke have andre klasser til at benytte sig af den. C# sammenligner værdier på samme måde som PHP og C, altså med dobbelt lighedstegn. Koden burde være til at forstå, men vi giver den lige en gennemgang alligevel. Hvis variablen Navn har værdien ’Jens Hansen’, går vi ind i klassen MessageBox, og bruger dens funktion Show. Dette er endnu et godt eksempel på forskellen på private og public. Hvis Show-funktionen var private, ville vores klasse (Form1) ikke kunne benytte den. Vi ville heller ikke kunne bruge den hvis den var protected, da vi ikke nedarver fra den (Klasse1 : Klasse2). Hvis Navn ikke er ”Jens Hansen” ryger vi ind i vores ELSE-konstruktion, og vi spørger, hvem vedkommende er. Løkker C# understøtter alle de løkker, du kender fra PHP, og syntaksen er fuldstændig den samme, så dem vælger jeg at springe over. Du har lært om namespaces, klasse og konstruktører. Du har også lært at lave variabler og benytte funktioner. Løkker bør du allerede kende. Nu mangler vi bare funktioner, og så lidt om IDE’en, resten er faktisk bare at lege med programmet, så kommer det alt sammen af sig selv, og jeg kan af erfaring sige, at det kommer hurtigt. Vi opretter en lille funktion til at lægge to tal sammen. Denne funktion kalder vi ’plus’. Vores namespace ser nu sådan ud:
’int’ står for ’integer’, som betyder ’tal’ eller ’nummer’. Denne type burde du kende, men den kan altså kun indeholde et heltal. Dvs. den må ikke indeholde bogstaver eller decimaltal (10.3, fx). ’plus’ er navnet på vores funktion, og den tager to parametre, begge to af typen int. ’a’ og ’b’ er navnene på vores parametre. Vi starter og slutter vores funktion med henholdsvis { og }, ligesom med vores klasse og namespace. Vi bruger return til at smide en værdi tilbage, når funktionen kaldes. Denne værdi skal være de to tal lagt sammen, derfor bruger vi operatoren ’+’. Vi kunne ligeledes have brugt -, *, /, %, |, &, <<, >>, ^, ~ og xor til at udføre noget matematisk, men det kan du altid lege lidt med. Takket være vores return-konstruktion, vil plus(2, 3) altid blive erstattet af 5. Nu har vi funktionen, så skal vi have den smidt i en popup.
Nu har vi været funktionerne igennem også, om end det var en lidt kort gennemgang, men det er let at udbygge koderne herfra, og dermed også sin viden omkring det. Nu skal vi oprette en simpel knap på vores form, og den skal vise en popup, når vi trykker på den. åben fanebladet ’Form1.cs [Design]’, og kig ude til venstre. Menupunkt nummer 5 fra oven skulle gerne hedde ’Button’. Lav en Drag ’n’ Drop med den på din form, og den vil blive placeret på den. Kig nu ude til højre, nederst. Nu er der kommet en liste med navnet ’Properties’. Rul ned og vælg ’Text’, og skriv ’Tryk her’. Teksten på din knap vil nu blive ændret. Sådan ser det nu ud hos mig: ![]() Dobbelt-klik på din knap, og du vil se koden til dit program endnu engang. Nu skulle der gerne være tilføjet
Ordbog Low-level og High-level: Læs v0ids kommentarer til artiklen. OOP: Står for Objekt Orienteret Programmering, altså programmering der benytter sig af objekter (fx. klasser). Private: Kan kun benyttes af samme klasse Protected: Kan kun benyttes af samme klassefamilie. Public: Kan benyttes af alle klasser. Partial: Delvis. Namespace: Programstruktur til at holde styr på kodeenheder. Int: Integer, tal String: Streng Void: Tom datatype. Funktioner, der er sat til void, må ikke returernere en værdi. Bruges specielt ved events. IDE: Forkortelse for Integrated Development Environment, altså et ’integreret udviklingsmiljø’. Normalt kalder vi det en editor. Jeg håber jeg fik det hele med, ellers er I velkomne til at oprette en kommentar. Sidst redigeret 16:52 - 20/04/2007 |
|
Kommentarer
Giv din mening tilkende om denne artikel, eller læs andres.Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
| Ser rigtig godt ud ;) Tænk det er så nemt.. Det ligner jo php på en prik :) |
Oprettet af:
|
| Ja de minder faktisk en del om hinanden :D |
Oprettet af:
|
|
Fint at der kom en C#-artikel. Der var nogle ting der faldt mig i øjnene med det samme. En ting, som jeg synes at du skal have styr på, er low-level og high-level-termerne, som du slet ikke har styr på. Jeg tror at du tænker på det omvendt. C# er nemlig dybt high-level, og ikke C++. Termerne er relative, så det er svært at sige præcist hvad et sprog er - man løser normalt dette lille "problem" ved at sammenligne sprog. På denne måde kan vi sige at C++ er meget mere low-level end C# er. Men igen kan man så sige at C er mere low-level end C++, og at Assembly er mere low-level end C, osv. osv. Et bevis på at C# er ekstremt high-level (dog ikke så meget som f.eks. Visual Basic) har du faktisk i din artikel. Det er omhandlende dine MessageBoxes. Der skal utroligt lidt kode til at lave sådan en messagebox i C#, som du viser. I C++ er det overhovedet ikke muligt at lave sådan en MessageBox, medmindre man gør brug af et tredjeparts framework, der i sig selv intet med sproget har at gøre. Hvis man f.eks. gør brug af Win32API"et (der i øvrigt ikke er C++, men i C-kode) skal der mere kode til en messagebox, dog kan det også være på en linje, men man får mere kontrol over det, da man kan give det flere parametre. Hvis man derimod kigger på Assembly, så er det straks sværere. Hvis man også her vælger at gøre brug af Win32API"et, så skal der 5 linjer til at lave den samme kode. Personligt kan jeg bedst lide at arbejde med low-level sprog, såsom Assembly og C, men også C++. Det eneste sprog jeg har arbejdet med, som var en del high-level er Python. Men ellers har jeg aldrig lært, og ønsker det heller ikke, at komme igang med f.eks. Visual Basic. (Skal lige siges at alle webprogrammeringssprog er stortset high-level, så der var en lille undtagelse også ). Jeg synes, udover alt det^, at du har skrevet den på en fin måde, som jeg tror at de fleste nybegyndere vil kunne følge med i. Specielt synes jeg det er godt at du fortæller om programmet, og hvordan man bruger dette. Det er ofte kompileren, interpreteren eller editoren som nybegynderne har svært ved at komme igang med. Sidst redigeret 07:00 - 20/04/2007 |
Oprettet af:
|
|
v0id > Tak for din kommentar. Angående det med lowlevel og highlevel har du med garanti ret, jeg skrev bare hvad jeg havde fået at vide af andre. Jeg gik ud fra, at mere kode (som giver flere muligheder) var lig med at sproget var high-level, og som du selv siger kræver det langt mere kode at lave fx en MessageBox i C/C++. Kan du ikke konkret sige hvad jeg skal skrive i stedet? Så vil jeg straks rette det. |
Oprettet af:
|
|
Det er svært præcist at sige, da det, som jeg skrev i mit indlæg før, er meget relativt. Kig i mit indlæg før, der vil nok stå mest omkring det. Men kort sagt så kan man vel sige det; Jo mere low-level, jo mere kontrol. Og så kan man selvfølgelig vende den om; Jo mere high-level, jo mindre kontrol. Igen vil jeg sige, godt skrevet - og forsæt i den stil. |
Oprettet af:
|
|
Okay, ja så må jeg vist have misforstået det en del. Jeg troede faktisk det var lige præcist omvendt. Så refererer jeg bare til dine kommentarer i ordbogen. Mange tak skal du have (: Sidst redigeret 16:53 - 20/04/2007 |
Oprettet af:
|
| v0id > Når du siger Assembly, snakker vi så om Assembler? Det lyder som sådan. Jeg har en i familien Microsoftprogrammer i familien, og han siger, Assembler er meget highlevel, da det snakker direkte med Hardwaren. Altså endnu mere highlevel end C og C++, så vidt jeg forstod det. |
Oprettet af:
|
|
Nu bytter du igen om på begreberne :-) Assembly er mere low-level end f.eks. C og C++ er, meget endda. I Assembly er det muligt at "snakke" direkte med hardwaren, BIOS, osv. Dette kræver også en ekstrem viden for det system man koder sit program på. Hvis du f.eks. koder et assembly kode på et system med Windows XP, er det ingengang sikkert at det kan køre på et andet system, også med Windows XP. Læg mærke til at jeg siger "Assembly", det er nemlig det selve sproget hedder. "Assembler" er det værktøj man bruger til at assemble ens kode, så det bliver til maskingkode. Mange bytter mange gange om på de to begreber. High- og low-level bliver ikke kun brugt i programmering, men generelt om alting. En mere detaljeret forklaring kan du finde her: http://en.wikipedia.org/wiki/High_and_low_level_%28description%29 Og nu da det handler om programmering, skal du nok også se her: http://en.wikipedia.org/wiki/High-level_programming_language http://en.wikipedia.org/wiki/Low-level_programming_language Sidst redigeret 08:10 - 11/05/2007 |
Oprettet af:
|


