Kapitel 1
Kursusintroduktion

Kurt Nørmark
Institut for Datalogi, Aalborg Universitet


Sammendrag
Næste lektion
Stikord Referencer Indhold
Dette er første lektion af slides til kurset 'Imperativ Programmering' på Datalogi og Software uddannelserne ved Aalborg Universitet. Vi starter med nogle slides i kategorien 'Kursusintroduktion' som beskriver praktiske forhold.

Kurset ifølge studieordningen
Slide Indhold Stikord
Referencer 

  • Formål

    • I dette kursus opnår den studerende indblik i grundlæggende begreber som algoritmer, datastrukturer og computerarkitekturer.

  • Indhold/mål/viden - forstå grundbegreber inden for:

    • Udviklingsmiljø og kompilering

    • Imperative principper

    • Datatyper og variable

    • Kontrolstrukturer

    • Funktioner og procedurer

    • Datastrukturer, herunder arrays

    • Input/Output

    • Sammensatte datastrukturer

    • Simple algoritmer (f.eks. sortering og søgning)

    • Basal test af programmer

  • Færdigheder

    • Skal kunne skrive, afvikle og teste programmer hvori de ovennævnte grundbegreber indgår i løsningen

    • Skal kunne anvende korrekt fagterminologi

  • Kompetencer

    • Skal både selvstændigt og i samarbejde med andre kunne implementere et imperativt program som løsning på en defineret opgave.

Hvad sker der i en lektion i IMPR - Efteråret 2021
Slide Indhold Stikord
Referencer 

En lektion i kurset kræver forberedelse, deltagelse og efterbearbejdning

  • Forberedelse før lektionen

    • Orienter dig i stoffet fra bogen

    • Start med at se video lektionerne

  • Den første time i lektionen

    • Gerne sammen med andre, i grupperummet

    • Fortsæt med at se videolektionerne

  • Den anden time i lektionen

    • I auditoriet

    • Deltag i diskussionen - afklaring af spørgsmål - ud fra kommentarer til videolektionerne

    • Andre aktiviteter: programmering eller feedback til afleveringsopgaver

    • Oplæg til opgaverne

  • De sidste to timer

    • Gruppeopgaver - i dagens faglige stof.

    • Med støtte fra underviser og/eller hjælpelærere

  • Opsamling efter lektionen

    • Få læst relevante dele af bogen

    • Få afrundet opgaver og videolektionerne

Opgaveregning afhænger af det stof som er forberedt til dagens lektion

Programmeringsparadigme og programmeringssprog
Slide Indhold Stikord
Referencer 

Der er flere programmeringsparadigmer og mange forskellige programmeringssprog i hvert paradigme.

  • Valg af paradigme:

    • Funktionsprogrammering

    • Imperativ programmering

    • Objekt-orienteret programmering

  • Valg af sprog:

    • Et sprog der egner sig til undervisning

    • Et sprog der bliver brugt i softwareindustrien

    • Et sprog der finder anvendelse på de studier, hvor på kurset udbydes

Valget faldt på C

Bliver C dit modersmål?

C historik
Slide Indhold Stikord
Referencer 

C blev udviklet af Dennis Ritchie i 1972 på AT&T Bell Labs i USA

  • Udviklet fra et tidligere (nu uddødt sprog) kaldet B, som igen stammer fra sproget BCPL

  • C hører historisk sammen med operativsystemet UNIX

  • "C is terse, low-level and permissive"

  • Udbredt sprog til systemprogrammering

    • Mange store programpakker på både Windows og Unix er skrevet i C

Henvisning

Motivation for C
Slide Indhold Stikord
Referencer 

Hvor populær er C?

Det gik ned ad bakke, men nu går det fremad igen...

Henvisning

Figur. Tiobe Programming Community Index, August 2020

Programmering på første studieår
Slide Indhold Stikord
Referencer 

Oversigt over programmering på det første studieår på Datalogi og Software Uddannelserne

  • Første semester

    • Imperativ Programmering - i C

    • Programmering i projektet på dette semester skal ske i C

  • Andet semester

    • Internet og web-programmering

Det forventes at den programmering, som sker i projekterne på DAT1-2/SW1-2 udføres i det programmeringsprog, hvori der undervises på det tilhørende programmeringskursus.

Objekt-orienteret Programmering (i C#) introduceres i OOP kurset på 4. semester (IxD) og på 3. semester (DAT/SW)

Lærebogen
Slide Indhold Stikord
Referencer 

Problem Solving and Program Design in C, eighth global edition, af Hanly og Koffman

  • Karakteristik af lærebogen:

    • En typisk CS1 (Datalogi, første semester) bog

    • Såvel en akademisk som en praktisk bog

    • Støtter ikke mindst de studerende som har en begrænset programmeringserfaring

    • Støtter sekundært indlæring af en metodisk programudviklingsprocess

      • Fra analyse til test

Henvisning

På kursets hjemmeside diskuteres der alternativ og supplerende litteratur

Lærebogen gennemgås ikke slavisk på kurset

Lærebogens ressourcer
Slide Indhold Stikord
Referencer 

Lærebogen indeholder en række ressourcer som er nyttige når du skal igang med den praktiske C programmering

  • Appendix A. Mere om pointere

  • Appendix B. ANSI C Standard Libraries

    • Alfabetisk oversigt over alle funktioner

    • Header files - funktions prototyper - for alle libraries

    • Macro konstanter, variable og typer pr. header file

    • Implementation Limits - konstanter

  • Appendix C. Mere om operatorerne i C

  • Appendix D. Tegntabeller - herunder ASCII tegnsættet

  • Appendix E. Reserverede ord i C - keywords

  • Ordliste - Glossary. Omfattende ordliste

  • Foran på bagsiden. Reference guide til ANSI C - fortsat fra en tidligere side...

Videolektioner
Slide Indhold Stikord
Referencer 

Forud for hver kursusgang skal stoffet forberedes ved at se et antal videolektioner

  • Ingen traditionelle forelæsninger

    • Men vi mødes om stoffet forud for opgaveregning - repetition, diskussion og andre aktiviteter.

    • Flipped classroom

  • Typer af videolektioner

    • Lektionsvideo

    • Essentielle videoer

    • Supplerende videoer

    • Værktøjsvideoer

  • Video-håndterings system - VIMA

    • Oversigt og struktur på kursets videolektioner

    • Tillader at I stiller spørgsmål, giver kommentarer og reflekterer over specifikke dele af stoffet

Henvisning

Quizzer på kurset
Slide Indhold Stikord
Referencer 

En del videolektioner følges op af en eller flere quizzer.

Quizzen kan være med til at sikre den faglige forståelse af det stof som lektionen omhandler

  • Quiz egenskaber

    • Multiple choice og numeriske spørgsmål

    • Samlet opgørelse over opnåede points på tværs af quizzer

    • En quiz kan besvares flere gange - mod en mindre pointfradag

    • Quiz rangliste

Henvisning

Pointkonkurrencen tænkes som en motivation til at arbejde med stoffet

Slides
Slide Indhold Stikord
Referencer 

Der findes et sæt af kursusslides, herunder en del med illustrative C programmer

Henvisning

  • HTML slides - ikke Powerpoint slides

    • Flere forskellige syn

    • Tastatur navigerbarhed

  • Indeholder mange af de opgaver, som vi arbejder med på IMPR

    • Opgaveløsninger kommer typisk på nettet efter øvelserne

  • Forskellige oversigter

    • Lektioner

    • Slides pr. lektion

    • Opgaver

    • Stikord

Moodle
Slide Indhold Stikord
Referencer 

Kursets hjemmeside findes på Moodle

Modular Object-Oriented Dynamic Learning Environment

Moodle er det learning management system (LMS) som AAU har valgt at anvende på alle semestre og kurser

  • Imperativ Programmering i Moodle:

    • Skemaet findes i CalMoodle - som en del af det samlede skema for hele semestret

    • Litteratur: Læsestof

    • Video: oversigt over lektionens videoer

    • Læsevejledninger

    • Opgaver - hjemme, i grupper, og til aflevering

    • Links til andre relevante ressourcer

Henvisning

Andre ressourcer
Slide Indhold Stikord
Referencer 

Der findes mange ressource på nettet, som kan hjælpe dig med C programmering

Henvisning

Se også siden om supplerende litteratur på kursets hjemmeside

Installation of software
Slide Indhold Stikord
Referencer 

Programming i C kræver værktøj som understøtter dette

  • Teksteditor efter eget valg

  • GNU C compileren gcc

    • Windows: gcc i MinGW (eller evt. gcc i Cygwin)

    • Linux: gcc findes allerede

    • Mac: gcc kan bruges som command line værktøj.

Det giver god indsigt at opleve udvikling af C programmer med de basale og oprindelige værktøjer

Sørg for at installere software allerede ved første øvelsesgang

Opgave 1.9. Windows: Installation af en mulig teksteditor

I dette kursus anbefaler vi en meget basal tilgang til udvikling af C programmer. Vi vil skrive programmerne i en teksteditor (fordi et program er et stykke tekst).

Der er mange forskellige teksteditorer. Og mulighederne varierer naturligvis fra platform til platform (Windows/Linux/Mac). Hvis du allerede er godt i gang med en teksteditor, som du har fuld kontrol over, så brug blot denne til C programmering. Hvis ikke, kan du overveje at bruge Visual Studio Code eller GNU Emacs. Jeg er selv daglig bruger af GNU Emacs, men det er langt fra sikker at du skal lære at bruge denne editor.

Denne opgave er således kun relevant hvis du kører Windows, og hvis du ønsker at bruge GNU Emacs som din teksteditor.

Hvordan man downloader GNU Emacs på Windows - se også den tilhørende video:

  • Download zip filen https://ftp.gnu.org/pub/gnu/emacs/windows/emacs-25/emacs-25.2-i686.zip (Ca. 90 MB). I august 2021 er den nyeste version af GNU Emacs 27.2. Hvis du er intereseret i seneste version af GNU Emacs på Windows, se i så fald her. (Der er desværre mange varianter at vælge mellem når man downloader Emacs: 32 bit (= i686), 64 bit (= x86_64) og forskellige no-deps varianter. I efteråret 2021 er emacs-27.2-i686.zip (32bit og 64 bit) og emacs-27.2-x86_64.zip (64 bit) nok de mest aktuelle varianter).
  • Lav kataloget Programs i C:/hvis den ikke allerede findes. (Hvorfor? Fordi der kan opstå problemer med at placere programmet i kataloget Program Files pga. mellemrum i katalognavnet).
  • Lav også kataloget Emacs i C:/Programs
  • Unzip den downloadede fil således at Emacs bliver placeret i Programs/Emacs/
    • Brug det unzip program som du plejer at bruge. Hvis ikke du allerede har en favorit unzipper, kan du downloade 7-zip fra http://www.7-zip.org/ og bruge 7-zip til at udpakke Emacs zip filen.

    • Specifikt: Kopier zip-filen ind i Emacs kataloget, og unzip det der.
  • Der er ingen yderligere skridt i installationen af Emacs. Når først filerne er bragt på plads, er installationen bragt til ende.
  • Emacs startes med c:/Programs/Emacs/bin/runemacs.exe.
    • Det er bekvemt at lave en Windows Shortcut til denne exe-fil fra skrivebordet (højreklip på runemacs.exe, og brug 'Send to > Desktop').

Der findes en video Kom godt i gang med Emacs som du måske vil have gavn af at se nu - eller om et par dage. Hvis du ser og forstår denne video, er du rigtig godt på vej!

Overvej at sætte dette bidrag ind i din .emacs fil. (Som beskrevet skal du tilpasse den lidt). .emacs filen diskuteres i videoen.

Opgave 1.9. Windows: Installation en gcc compiler

I dette kursus anbefaler vi at du oversætter C programmer ved eksplicit at køre en C compiler fra en kommando prompt (også kendt som en shell).

Der findes en del forskellige varianter af gcc (Gnu Compiler Collection). Der findes også helt andre C compilere i mere eller mindre integrerede programmeringsomgivelser. På dette kursus er der frihed til at vælge den C compiler, som du foretrækker. Vær dog opmærksom på at vi primært vil bruge den version af C som hedder ANSI C 89 (hvilket er det samme som C90).

På Windows platformen anbefaler vi I udgangspunktet anvendelse af MinGW (Minimalist GNU for Windows), som tillader udvikling native MS-Windows applikationer. Hvis du er Linux bruger er der med stor sandsynlighed allerede en gcc compiler på din computer, som du kan bruge. Hvis du er Mac bruger henvises du til en anden opgave for at komme godt i gang med en C compiler.

Resten af denne opgave er således kun relevant hvis du kører Windows, og hvis du ønsker at bruge gcc under MinGW.

Der findes en video, som viser hvordan installationsprocessen i denne opgave forløber. Følg evt. denne video sammen med denne opgave, mens du installerer MinGW gcc.

For at fuldføre opgaven skal du have adgang til en teksteditor. Brug gerne din favorit teksteditor. Overvej alternativt om du ønsker at downloade Emacs eller Visual Studio Code før du går videre.

Følg denne vejledning for at installere MinGW på Windows:

  • Hvis du har en gammel installation af MinGW, bør du først afinstallere denne på sædvanlig vis. (Hvis ikke du finder MinGW under installerede systemer, så drop blot dette). Slet dernæst alle filerne i den gamle installation, typisk fra kataloget c:/Programs/MinGW/
  • Download http://sourceforge.net/projects/mingw/files/latest/download?source=files, som er et lille installationsprogram. Gem først filen. (I 2021 tøver Sourceforge lidt, inden den giver dig mulighed for at gemme filen. Så giv den lidt tid). Find frem til den downloadede fil, og kør den. Dette vil starte installationsprogrammet.
  • Vælg Install i den første dialogboks, der vises.
  • Vælg installations directory. Vi anbefaler c:\Programs\MinGW. Undgå at installere i kataloger som har spaces i katalognavnet. Lav om nødvendigt (og om muligt) kataloget Programs i roden af dit filsystem. Det er muligt at oprette MinGW kataloget i Programs fra MinGW installationsprogrammet. - Inden du trykker 'Continue' skal der altså stå c:\Programs\MinGW i feltet Installation directory.
  • Tryk blot Continue i de næste to dialoger. Det tager nok nogle minutter inden Continue nr. 2 dukker op (mens MinGW Installation Manager downloades).
  • Nu dukker MinGW Installation Manager op. Her skal du vælge følgende komponenter: mingw-developer-toolkit, mingw32-base, mingw32-gcc-g++ og msys-base. Under 'all packages' skal du endvidere vælge de tre pakker som hedder mingw32-pthreads-w32. Du vælger ved at højre-klikke og vælge 'Mark for Installation'. msys-base udvælges formodentlig automatisk.
  • Aktiver menu punktet Installation > Apply Changes
  • I dialogen 'Schedule of Pending Actions', 'Ok to proceed?' Tryk på Apply
  • Nu downloades og installeres systemet - det tager sikkert 5-10 minutter. Vær tålmodig.
  • Når systemet melder: All changes applied successfully, så tryk Close og luk blot MinGW Intallation Manager. (Du kan vende tilbage til Installation Manager fra filen libexec/mingw-get/guimain.exe i din installation).
  • Gå nu ind i msys/1.0/ og lav en shortcut til filen msys.bat. Det kan f.eks. gøres ved at højreklikke på filen, og bruge 'Send to' > 'Desktop'. Dette gør det let for dig at starte et terminal vindue, hvorfra du kan kalde gcc.

Hvis du starter terminal vinduet (via msys.bat) og hvis du skriver gcc --version får du oplysninger om versionsnummeret af gcc. I september 2021 er den nyeste version af gcc i MinGW 6.3.0.

Nu har du installeret systemet. Følgende laver en lille nyttig tilpasning.

  • For at være konkret vil vi her antage at dit brugernavn er peter18. Jeg antager at du fremover vil placere alle dine C filer i kataloget c:/users/peter18/c-programmer. (Lav meget gerne underkataloger til hver lektioner, hver opgave mv.) Det er en rigtig god ide at du er systematisk med placeringen af dine C filer, så du let kan finde dem igen.
  • Gå nu ind i filen msys/1.0/etc/profile i dit MinGw installations katalog (med brug af din teksteditor) og erstat cd "$HOME" (i bunden af filen) med følgende
  •     cd c:/users/peter18/c-programmer/
        PS1='$ '

Med denne tilpasning vil din MinGW terminal på bekvem måde starte op i kataloget c:/users/peter18/c-programmer/ hver gang du bruger den, og du vil få en prompt der blot består af et dollar tegn.

Du har også mulighed for at tilføje MinGW til din Windows PATH. I udgangspunktet skal du droppe denne del. Måske vil dette være nødvendigt på nogle maskiner. Udfør kun dette skridt hvis du får problemer. Og vær forsigtig her!

  • Gå ind i kontrolpanelet på din computer og søg efter 'environment variable'. (På danske Windows systemer hedder de miljøvariabler). Gå ind i 'Edit the system environment variables'. Vælg knappen 'Environment Variables...'. Tilføj med 'New...' eller 'Edit...' følgende til PATH:
      C:\Programs\MinGW\bin
    Tilføj helst i PATH i variablene for en aktuelle bruger (i stedet for System variable). Der er semikolon mellem de forskellige dele i PATH. Der bruges backslash i PATH... Tryk OK et par gange, og gå ud af kontrolpanelet.

Hvis du ændrer din Windows PATH som beskrevet ovenfor, kan du også aktivere gcc fra en Windows prompt.

Brug nu gcc i en MinGW shell på følgende måde - ved at aktivere den shortcut som du har lavet ovenfor:

  • Skriv pwd (som betyder print working directory). Dette giver dig blot information det nuværende katalog - det skulle gerne være dit c katalog, som du har lavet ovenfor.
  • Skriv gcc --version, og få bekræftet at du har den rigtige version af gcc.
  • Skriv et Hello World program i din valgte teksteditor, og gem filen i hello.c i dit c katalog. Vær sikker på du ved hvor du gemmer din C fil.
  • I MinGW terminalen: naviger om nødvendigt til kataloget med dine C filer (ved at bruge cd kommandoen et antal gange) og oversæt nu C filen med brug af gcc: gcc hello.c Lær gradvist om hvordan du begår dig i en MinGW (Unix) terminal ved at læse denne korte vejledning.
  • Check at filen a.exe er skabt netop nu. Brug ls -l. Check tidsmærkningen af a.exe.
  • Kør Hello World programmet fra din MinGW shell ved simpelthen at skrive: a.exe.
  • Nu er du godt i gang med gcc i MinGW, som du kommer til at bruge rigtig meget i resten af kurset.


Opgave 1.9. Windows: Alternativ installation af MinGW GCC compiler - Mingw-w64

Dette er et alternativ til MingW installationen i en anden opgave: MinGW-W64. Opgaven er kun relevant hvis du kører Windows. Denne installation leder udelukkende frem til aktivering af C-compileren fra en Windows command prompt. (C-compileren i den anden opgave kan både aktiveres fra en Windows command prompt, og fra en Linux-agtig command prompt).

Brug evt. det direkte download link, for at få fat i det lille installer program.

Følg iøvrig de lette anvisninger i denne video. Videoen er lavet for et par år siden, så versionen af MinGW-w64 har givetvis ændret sig lidt. Men det er kun fint.

Opgave 1.9. Mac OS X: Installation of GCC og LLDB

Hvis du gennemgår denne opgave kommer du godt i gang med gcc fra en kommando-prompt på en Mac.

I dette kursus anbefaler vi at du oversætter C-programmer ved eksplicit at kalde en C-compiler fra en kommando-prompt (shell).

Vi anbefaler at macOS-brugere installerer programmerne GCC (GNU Compiler Collection) og LLDB gennem pakkehåndteringsystemet Homebrew. Homebrew er et pakkehåndteringsystem til macOS der automatiserer installationen af mange forskellige programmer, heriblandt GCC. Du kan læse mere om Homebrew på hjemmesiden http://brew.sh/.

Bemærk at denne opgave kun er relevant hvis du kører macOS 10.6 eller nyere, og du ønsker at installere GCC og LLDB gennem pakkehåndteringsystemet Homebrew.

Der er lavet en video (uden lydspor) der viser installationen.

Først installeres Homebrew og LLDB på macOS:

  1. Åben programmet Terminal. Det kan ligge under Applications -> Utilities -> Terminal (eller på dansk: Programmer -> Hjælpeprogrammer -> Terminal).
  2. Kopier den følgende kommando fra http://brew.sh/ over i Terminal-vinduet og afslut med enter:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  3. Du bliver nu bedt om at indtaste dit password. Indtast dit password og afslut med enter. Du kan hverken se dit password eller et antal stjerner (*) når du taster det -- koden er usynlig.
  4. Du vil nu blive informeret om at Xcode Command Line Tools vil blive installeret. Tryk enter for at fortsætte installationen.
  5. Når installationen melder Installation Succesful! er Homebrew og LLDB installeret.
  6. Luk Terminal-vinduet.
  7. Homebrew og LLDB kan herefter køres i Terminal-vinduer med kommandoerne homebrew og lldb. Du kan gå videre til installationen af GCC.

Derefter installer GCC gennem Homebrew på macOS:

  1. Åben programmet Terminal. Det kan ligge under Applications -> Utilities -> Terminal (eller på dansk: Programmer -> Hjælpeprogrammer -> Terminal).
  2. Kopier den følgende kommando over i Terminal vinduet og afslut med enter: brew install gcc
  3. Luk Terminal-vinduet.
  4. GCC kan herefter køres i Terminal-vinduer med kommandoen gcc-versionummeret, hvilket på nuværende tidspunkt er gcc-11.

NOTE: Kommandoen gcc i de nyeste udgaver af macOS starter ikke GCC men derimod programmet Clang, der er en alternativ C compiler til GCC. Du kan se hvilken af de to programmer der blive kaldt på dit system med kommandoen gcc -v der printer versions-information i Terminal vinduet.

Tak til Anders Schlichtkrull og Johannes Bjerva for udarbejdelsen af denne vejledning. Tak til Søren Kejser Jensen for en tidligere formulering af denne opgave.

Opgave 1.9. Windows: Installation af Cygwin GCC compiler

Bemærk at dette IKKE er den anbefalede C installation på dette kursus (men Cygwin gcc har tidligere været anvendt, og det kan overvejes som et alternativ til gcc i MinGW). Se i stedet for en anden opgave.

I dette kursus anbefaler vi at du oversætter C programmer ved eksplicit at kalde en C compiler fra en kommando prompt (shell).

Denne opgave er kun relevant hvis du kører Windows, og hvis du ønsker at bruge gcc (GNU C Compileren) under Cygwin.

Cygwin etablerer en Unix/Posix omgivelse på Windows, og gcc på Cygwin laver programmer som kræver tilstedeværelsen af Cygwin (særlige cygwin DLL filer) for at kunne køre. I modsætning til dette skaber MinGW programmer, som er tættere på Windows (og uafhængig af særlige DLL filer).

Følg denne vejledning for at installere Cygwin på Windows - se også den tilhørende video

  • Download og kør http://cygwin.com/setup-x86.exe, som er et lille installationsprogram, som guider dig gennem installation fra Cygwin fra internettet.
  • Vælg Next i den første dialogboks, der vises.
  • Vælg 'install from Internet' (som er default muligheden).
  • I dialogen 'Select Root Install Directory' angiv C:\cygwin og 'Install for All Users', som begge er defaultvalget.
  • I dialogen 'Select Local Package Directory', vælg det katalog som foreslås pr. default.
  • I dialogen 'Select your internet Connection' vælg Direct Connection hvis du forbinder dig via AAU.
  • I dialogen 'Choose a download site' kan du vælge blot det øverste http sted. Jeg har også gode erfaringer med http://ftp.inf.tu-dresden.de.
  • Nu ser du siden 'Select Packages', hvor du skal vælge hvilke dele af Cygwin du ønsker at installere. Fold først Devel gruppen ud ved at trykket på + symbolet. Foruden 'default-valget' foreslås det at du installerer følgende

    • Devel > gcc-core: C compiler. Core C compiler subpackage.
    • Devel > Make: The Gnu version of the 'make' utility
    • Devel > GDB: The GNU Debugger

    Du vælger ved at trykke på Skip ikonet en eller flere gange indtil der vises et versionsnummer. Der er mange ting at vælge mellem i Devel gruppen. Det kan være en fordel at søge efter de tre ting via 'Search feltet' og dermed begrænse valgmulighederne.

    Prøv under ingen omstændigheder at downloade alle dele af Cygwin! Og du skal ikke downloade sources.

  • Igangsæt nu, med 'Next >' installationen af de udvalgte dele. Installationsprogrammet foreslår endnu et antal pakker, som du blot accepterer. Når du vælger 'Next >' igen starter installationen, som tager et stykke tid. Der vises progress bars, så du kan følge med i installationsprocessen. Dette kan tage nogle minutter. Hvis det går alt for langsomt, så vælgt et andet download site!
  • Afslut med Finish - og angiv at du ønsker et CygWin ikon på din desktop.
  • Hvis Windows siger at 'this programs might not have installed correctly' angiver du blot at 'this program installed correctly'.
  • Start Cygwins kommando fortolker (shell), og naviger med cd path, f.eks. cd c:/users/peter/c/, til det sted, hvor du ønsker at lagre og organisere dine C filer. Vær sikker på at du laver fornuftige subkataloger i dit c katalog, f.eks. et katalog for hver øvelsesgang.
  • Jeg har tilpasset Cygwin en anelse, så det bliver lidt lettere at arbejde med værktøjet. Tilpasningen sker ved at tilføje et par linier i bunden af filen .bashrc, som typisk findes i kataloget C:/cygwin/home/peter hvis dit Windows brugernavn er peter.

Hvis du har lavet en eller anden fejl i din Cygwin installation kan du på ethvert tidspunkt køre installationsprogrammet igen, og ændre på din opsætning.

Afprøv nu dit setup:

  • Skriv et Hello World program i din valgte teksteditor, og gem filen i hello.c i dit c katalog.
  • I Cygwin's kommando fortolker (shell): Check lige at du har den rigtige version af gcc: gcc --version (4.5.3 eller nyere)
  • I Cygwin's kommando fortolker (shell): naviger til c directoriet og oversæt C filen: gcc hello.c
  • Check at filen a.exe er skabt netop nu. Check gerne tidsmærningen af a.exe.
  • Kør Hello World programmet: ./a.exe    (det første punktum betyder 'det nuværende katalog').
  • Nu er du i gang gcc i CygWin !

Opgave 1.9. Installation af Visual Studio Code

Visual Studio Code er en populær, gratis teksteditor fra Microsoft, som kan bruges til programmering i C i både Windows, Mac og Linux.

Du kan læse om Visual Studio Code på https://code.visualstudio.com/, og du kan downloade og installer editoren fra samme side.

Du kan bruge Visual Studio Code sammen med en vilkårlig af de gcc compilere, som vi har omtalt på dette kursus. Skriv dit C program i Visual Studio Code, gem det på en fil, og oversæt det med din gcc compiler.

Hvis du er Windows 10 bruger, kan du også anvende Visual Studio Code sammen med WSL (Windows Subsystem for Linux). Windows Subsystem for Linux og Visual Studio Code kan integreres med hinanden. Hvis du er interesseret WSL henvises du til opgaven om dette.

Opgave 1.9. Windows 10: Installation af Windows Subsystem for Linux (WSL)

Installation af Windows Subsystem for Linux (WSL) er kun relevant for Windows 10 brugere.

WSL er et Linux system som er direkte tilgængelig på Windows 10. I WSL kan du installere et udvalg af forskellige Linux systemer. Når dette er på plads kan du udvikle C programer på Windows 10 i et Linux miljø (med de fleste af de værktøjer som Linux brugere plejer at anvende). Det er endvidere muligt at integrere WSL med Visual Studio Code, hvilket vil være naturligt og attraktivt for mange Windows brugere.

Udgangspunktet for en installation af WSL er siden https://docs.microsoft.com/en-us/windows/wsl/.

Hvis du ønsker at bruge WSL kan du følge anvisninger i ovenstående side. WSL 1 er tilstrækkeligt for dette kursus, men du kan vælge WSL 2 hvis dit Win10 system er tilstrækkelig opdateret.

Med mindre du har en Linux favorit kan du vælge Ubuntu i installationen af WSL.

Undervejs i installationsprocessen skal du muligvis logge ind som Microsoft bruger. Hvis du allerede har et Microsoft login kan du forsøge at bruge det. Ellers skal du registrere dig på sædvanlig vis.

Når du har installeret WSL vil der være filer på dit Windows 10 system, som er Linux filer. Du må under ingen omstændigheder ændre på disse filer fra traditionelle Windows programmer.

Fra dit Linux delsystem vil der være adgang til Windows filer (via Linux mounting af filer).

Overvej at bruge WSL sammen med Visual Studio Code. I Visual Studio Code anbefales det at installere Remote WSL extension, og C/C++ extension.

Opgave 1.9. Mac: Installation af en mulig teksteditor i macOS

I dette kursus anbefaler vi en meget basal tilgang til udvikling af C-programmer. Vi vil skrive programmerne i en teksteditor (fordi et program er et stykke tekst).

Der er mange forskellige teksteditorer. Og mulighederne varierer naturligvis fra platform til platform (Windows/Linux/Mac). Hvis du allerede er godt i gang med en teksteditor, som du har fuld kontrol over, så brug blot denne til C-programmering. Hvis ikke, kan du overveje at bruge Visual Studio Code eller GNU Emacs. Selv om nogle undervisere bruger GNU Emacs er det er langt fra sikkert, at du skal lære at bruge denne editor.

Denne opgave er således kun relevant hvis du kører macOS, og hvis du ønsker at bruge GNU Emacs som din teksteditor.

Hvordan man downloader GNU Emacs på macOS - se også den tilhørende video (uden lydspor):

  • Hvis du ikke har gjort det endnu skal du lave opgaven om Installation af GCC og LLDB
  • Åben programmet Terminal. Det kan ligge under Applications -> Utilities -> Terminal (på dansk: Programmer -> Hjælpeprogrammer -> Terminal)
  • Kopier den følgende kommando fra https://www.gnu.org/software/emacs/download.html#nonfree over i Terminal-vinduet og afslut med enter:
    brew install --cask emacs
  • Gå ind i kataloget Applications (på dansk: Programmer) og find programmet "Emacs".
  • Hold "control"-tasten nede og klik på Emacs. Slip "control"-tasten og klik så Open (på dansk: Åbn).
  • Der dukker nu en dialog op: 'Emacs can't be opened because...' (på dansk: 'Emacs kan ikke åbnes, fordi...'). Klik OK.
  • Hold igen "control"-tasten nede og klik på Emacs. Slip "control"-tasten og klik så Open (på dansk: Åbn).
  • Der dukker igen en dialog op: '"Emacs" can't be opened because...' (på dansk: '"Emacs" kan ikke åbnes, fordi...'). Klik Open (på dansk: Åbn).
  • Emacs startes nu.
  • Emacs kan fremover startes under Applications -> Emacs (på dansk: Programmer -> Emacs)

Der findes en video Kom godt i gang med Emacs som du måske vil have gavn af at se nu - eller om et par dage. Hvis du ser og forstår denne video, er du rigtig godt på vej!

Overvej at sætte dette bidrag ind i din .emacs fil. (Som beskrevet skal du tilpasse den lidt). .emacs filen diskuteres i videoen.

Tak til Anders Schlichtkrull og Johannes Bjerva for at tilpasse denne vejledning til macOS.

En compiler
Slide Indhold Stikord
Referencer 

En C compiler analyserer et kildeprogram, og transformerer det til en form som kan fortolkes (køres)

  • Analyse

    • Finder fejl inden programmet transformeres og køres

    • Syntaxfejl eller typefejl, men ikke logiske fejl

  • Transformation

    • Oversætter programmet, typisk til maskinnær kode

  • Options

    • Styrer forskellige compiler variationer

    • Parametre til compileren

    • Eksempler på anvendelse af gcc options

      • gcc -o outputFil inputFil.c

      • gcc -ansi -pendatic -Wall -lm -g inputFil.c

En teksteditor
Slide Indhold Stikord
Referencer 

Et program er et stykke tekst - derfor er der brug for en teksteditor

  • Ønskede egenskaber

    • Skal kunne arbejde med - og gemme - ren ASCII tekst

    • Skal anvende 'monospaced typefaces'

    • Skal kunne gemme teksten uden TABs

  • Valg af teksteditor

    • Hvis du allerede har en favorit teksteditor, så brug gerne denne

    • Du kan anvende en editor fra en integreret C-udviklingsomgivelser

      • Men muligvis får du ikke tilstrækkelig erfaring med C compileren...

    • Ellers, kan du overveje at bruge Visual Studio Code eller GNU Emacs

MS Word er ikke egnet til programmering

Timeregnskab på kurset
Slide Indhold Stikord
Referencer 

Kursets er normeret til 5 ECTS svarende til 137.5 timers studieindsats

Forventet disponering af kursets 137.5 timer

  • 13 samlinger i auditoriet eller grupperum: cirka 25 timer.

  • 13 gange fælles opgaveregning i grupperummet: cirka 25 timer.

  • Individuel forberedelse:

    • Cirka 20 timer til læsning i bogen, videolektioner studier af kursusvideo og quizzer.

    • Cirka 30 timer til hjemmeopgaver mv. herunder afleveringsopgaver.

  • Cirka 30 timer til udvikling af eksamensopgaverne

  • 5-10 timer til repetition forud for den mundtlige eksamen.

Afleveringsopgaver
Slide Indhold Stikord
Referencer 

Efter de fleste lektioner kan der afleveres et program, som du selv har skrevet

  • Hvorfor afleveringsopgaver?

    • Fremmer den individuelle øvelse i praktisk programmering

    • Træning forud for eksamensopgaverne - som er udvalgte afleveringsopgaver

    • Giver et overblik over status og evt. problemer på holdet

    • Gør det muligt at adressere typiske problemer i starten af den følgende lektion

  • Aflevering kræver individuel login - med AAU single signon

  • Kursets hjælpelærere giver individuel feedback på rettidigt afleverede opgaver

    • Typisk indtil seks dage efter afleveringen

Henvisninger

Erfaring fra de forrige år viser at studerende, der afleverer mange opgaver, typisk består eksamen i kurset uden de store problemer

Eksamensopgaver og eksamen
Slide Indhold Stikord
Referencer 

Eksamen er baseret på eksamensopgaver, som løses undervejs i kurset

  • Eksamensopgaverne:

    • Individuel udvikling af et program, der løser et bestemt problem.

    • Kommer i omegnen af 6., 9. og 13. lektion

      • Se Moodle for præcise datoer og frister for eksamensopgaverne

  • Mundtlig, individuel eksamen:

    • Besvarelsen af eksamensopgaverne er udgangspunktet for den mundtlige eksamen.

    • Ved eksamen diskuteres et tilfældigt udtrukket afleveret program (der stilles spørgsmål om programdetaljer).

    • Eksamen kan gradvis bevæge sig over i mere generelle spørgsmål inden for kursets stofområde

    • Aktivt kendskab til fagets terminologi er vigtig for at få succes ved den mundtlige eksamen.

    • Eksamen afholdes i to parallelle spor, med Kurt og Frederik som eksaminatorer

  • Individuel, 7 trins karakter, intern censor

Opgaver
Slide Indhold Stikord
Referencer 

Opgave 1.11. Programmeringsstil

Denne opgave handler om hvordan et C program 'ser ud'. Opgaven giver dig indsigt i programmeringsstil, og den træner dig i brug af din valgte teksteditor og C-compiler.

Se indledningsvist på 'Hello World' programmerne på på denne slide. Læs kommentaren øverst i hvert program. Oversæt og kør programmerne (hvis det giver mening).

Et C program kan formateres på mange forskellige måder. Indrykning, tomme linier og ekstra mellemrum kan relativt frit tilføjes i ethvert C program. En bestemt programmeringsstil (programming style, coding style) giver anvisninger på, hvordan et program skal formateres. Dårlig og inkonsistent programmeringsstil hæmmer læsbarheden af et program. Formålet med denne opgave er at skabe bevidsthed om programmeringsstil. Emnet vil blive bragt op gentagne gange undervejs i kurset. Så hvorfor ikke starte allerede i dag?

Her er et eksempel på et program, som er formateret på en overordentlig uheldig måde:

#include              <stdio.h>  

int    main(
void
)
{float
first_number   ,
xxx, sidsteTal

;

  printf(
"Give me three: "    )

;scanf("%f    %f             %f"
,
&first_number,      &   xxx,    &
           sidsteTal);   printf(
"Theresult: %f\n", (first_number+xxx     +
sidsteTal                  ) / 3.0)

;  return 0
;}

Kan programmet oversættes? (Kopier det fra browseren over i en tekstfil via din teksteditor, og forsøg at oversætte programmet). Kan det køres?

Diskuterer svaghederne i det viste program. Kan du/I forstå hvad der sker i programmet?

Introducer en bedre programmeringsstil i programmet, ved udelukkende at ændre på 'white spacing' (indrykning, tomme linier, og antallet af mellemrum mellem programmets dele). Dette er en god øvelse, idet den tvinger jer til at tage stilling til rollen af hvert symbol I møder, uafhængig af hvordan symbolet indgår i opstillingen af programmet. Compileren arbejder på samme måde - i det mindste i udgangspunktet.

Lav evt. en version af programmet, som giver endnu større læsbarhed ved f.eks. at ændre på variabelnavngivning. Du må også gerne ændre på promten og øvrige udskrifter i programmet.

Der er mange ressourcer af programmeringsstil (i C) på nettet. Læs indledningsvis Wikipedia's artikel om emnet.

Opgave 1.11. Kopier, editer, compiler og kør et program

Formålet med denne opgave er at øve dig i arbejdsprocesserne på tværs af en teksteditor, en shell terminal, og en compiler.

Kopier først et program fra undervisningsmaterialet ind i din teksteditor. Du kan passende kopiere programmet som vises øverst i lektion 2 slide 23.

Lav en simpel ændring af programmet: Oversæt f.eks. den fast engelske tekst i printf til dansk.

Lav så et nyt directory (katalog/mappe) fra din terminal med navnet c-programmer. Brug kommandoen mkdir til dette. Dette nye directory kan passende placeres i dit bruger directory på din PC. Når du fremover i kurset skal lave C programmer anbefales det at du laver subdirectories (undermapper) af denne, f.eks. for hver lektion. Så har du orden i dine C-programmer.

Se på de forskellige terminalkommandoer, og prøv dem af.

Gem programmet, som du har i din teksteditor, på filen prog.c i det nye directory c-programmer.

Gå ind i c-programmer med cd kommandoen, og oversæt programmet med gcc. Brug gerne -ansi -pedantic og -Wall options, som beskrevet på compiler sliden.

Kør programmet, typisk med a.exe.

Prøv at lave forskellige små ændringer (fejl) i programmet, og find ud hvad compileren fortæller dig når du oversætter det ændrede program.

Når du er kommet godt igennem denne opgave er du klar til den rigtige IMPR start i næste lektion.


Samlede referencer
Indhold Stikord
Foldoc: C
Tiobe programming community index
Alternativ IMPR Litteratur
IMPR video manager
Quiz Oversigt
2005 version af undervisningsmaterialet - i lærebogsform
IMPR Moodle 2020
Supplerende litteratur
Mine afleverede programmer
Afleveringsside på nettet

 

Kapitel 1: Kursusintroduktion
Kursets hjemmeside     Forfatteren's hjemmeside     Om frembringelsen af disse sider     Forrige lektion (top)     Næste lektion (top)     Forrige lektion (bund)     Næste lektion (bund)     
Genereret: 9. maj 2022, 13:53:34