Kurs i C för Lysators medlemmar av Inge Wallin Lysator C är ett programmeringsspråk som har ökat lavinartat de senare åren. (Hur något kan öKA lavinartat fattar jag inte eftersom en lavin rasar neråt, men det har det gjort i alla fall). Allt fler företag frågar efter folk som kan programmera i C och allt fler program skrivs i språket. C ger goda möjligheter att modularisera sina program, vilket t ex PASCAL inte alls är bra på. C ger dessutom möjligheter till an manipulera sin dator på extremt låg nivå. Kort sagt: C är ett innespråk av stora mått. Vad gör då LiTH för att möta detta? Ingenting! Det finns en kurs på IDA som heter programmeringsspråk och som tar upp C i förbifarten tillsammans med 3 (?) andra språk. Det säger sig ju själv att de stackars studenterna inte har en chans att lära sig C under de förutsättningarna. För att ställa det här till rätta så kommer Lysator att ge en kurs i C under läsperiod 3. Kursen är öppen för Lysators och Ctrl-Cs medlemmar kostnadsfritt, men även andra kommer antagligen att kunna gå den mot en viss (ganska låg) avgift. Ta chansen och lär dig C under sakkunnig ledning! Motsvarande kurs kostar SEK 7400 om du skall gå den i något utbildningsföretags regi. (Då ingår visserligen mat och hotellrum, men du kan ju bo hemma under kursens gång. I annat fall så låter Lysator dig sova på soffan i lokalen. Varmt och skönt!) Kursansvariga är Inge Wallin och Paul Svensson. Här under hittar du en preliminär kursinformadon för kursen. Den slutgiltiga kursinformationen kommer i slutet av jultentaperioden efter nyår. Väl mött! /Inge Kursinformation för Lysators C-kurs (preliminär) Kurskod och kursnamn LYS02 - Grundläggande programmering i C Ges av Datorföreningen Lysator Ges för Medlemmar i Lysator och Ctrl-C Kursansvariga Inge Wallin ingwa@majestix.liu.se 013 - 17 01 96 (hem) 013 - 28 19 73 (arb) Paul Svensson pausv@majestix.liu.se 013 - 12 10 21 (hem) Kursbeskrivning Kursen ger en (relativt snabb) genomgång av programmeringsspråket C. Vid varje av de sex tillfällena kommer en eller flera viktiga aspekter av C att täckas. För vidare information, se kursplanen senare i denna kursinformation. Förkunskaper Viss programmeringsvana krävs, helst i Pascal eller något annat algolliknande språk. Kurslitteratur [nnu så länge ej bestämd. Troligen Kernighan & Ritchie: The C Programming Language, 2nd Edition. Kursuppläggning Kursen ges på två kvällar per vecka under läsperiod 3. Första tillfället i varje vecka är uppdelat i en genomgång på ca en timme, en övning vid terminal och en kort frågestund, vilket ger en sammanlagd tid på ungefär 2.5 timmar per gång. Andra tillfället är ett rent övningstillfälle och antingen Inge eller Paul är närvarande för frågor. Examination Kursen ger inga studiepoäng och har följaktligen ingen examination. Här ser vi kunskapen som det viktiga. (Eventuellt kommer kursen att även kunna ge studiepoäng. Mer om det senare.) Dator IDAs SUN-system om vi får tillgång till dem, annars Asterix. Eventuellt någon av Lysators unixmaskiner. Läsanvisningar Kör så det ryker. Anmälan Kursen kommer att annonseras i god tid med affischer och veckomeddelande. En vecka före kursstart kommer anmälningslistor att sättas upp på anslagstavlan vid PUL 1. Uppdelning på tillfällen (kursplan) 1:a veckan * Språket C:s tillkomst * Jämförelser med andra språk * Kompilering och lite om lint * Programstruktur * "Hello world"-programmet * #define av konstanter * #include * Några enkla datatyper: int, char, float * Programstruktur: if, while, do-while, for, switch-case, mm * Jämförelseoperatorerna ==, !=, >, <, >=, <= * Booleska operatorer: &&, ||, ! * Några enkla operatorer +, -, *, /, % * Tilldelning: = * Funktioner (main) 2:a veckan * Datastrukturer: arrayer, strängar * Datatyperna short, long, double, unsigned * Lagringsklasser: automatic, register, static (inom en funktion), volatile, const * #define av större macron * Bitoperationer: &,, ^, ~, >>, << * Andra tilldelningar: +=, -=, osv 3:e veckan * Pekare * Structs * Unioner * Datatypen void * Implementationen av arrayer och strängar * Operatorn sizeof * Operatorerna &, ~, ->, . * Konvertering mellan datatyper (cast) * Typedef 4:e veckan * Uppdelning av stora program på flera filer: .c, .h * Mer om #include * Villkorlig kompilering: #if, #ifdef * Lagringsklasserna static, extern * Initiering av variabler * ,-operatorn * Begreppen rvalue, lvalue 5:e veckan (olika bibliotek) * Minneshantering (malloc & friends) * Stdio * Matematikbiblioteket * Strängbiblioteket * Kort om curses, termcap 6:e veckan (övrigt) * Setjmp/Longjmp * Debugging: dbx, (adb) * NULL * Variabelt antal parametrar till en funktion * Kompatibilitet mellan olika versioner (flyttbarhet) * ANSI-C