Programmering Sommarkurs 2007 www.hh.se/staff/vero/programmering Verónica Gaspes IDE-sektionen Juni 12
Utkast 1 Administrivia 2 Programmering 3 Grunderna i C 4 Kortspel
Kurs resurser www.hh.se/staff/vero/programmering Lärare Verónica Gaspes ansvarig för kursmaterial, examination och föreläsningar. Anders Åhlander handledning under övningar och laborationer Program Ett operativ system. En webbrowser. En ANSI-C kompilator. En texteditor. Finns många av alla, vi tillhandahåller några, ni kan använda andra!
Moment Föreläsningar Går 2 ggr i veckan och presenterar material som kan vara till hjälp för att lösa övningsuppgifter och laborationer. De kan även hjälpa att ta till sig litteratur. Inte obligatorisk närvaro Övningar Går 2 ggr i veckan, alla exempel som tas i föreläsningar med variationer finns för att ni skall kunna experimentera med de. Handledning finns för att ni inte skall fastna utan att kunna gå vidare. Inte obligatorisk men rekommenderat!
Moment Laborationer Mer av problemlösning karaktär. Handledning finns för att ni inte skall fastna. Kräver mer tid än det som är under handledning. Obligatorisk inlämning i grupper av 2. Så: bilda grupper idag! Jag samlar namn på ett papper! Tentamen En skriftlig tentamen av praktisk karaktär (programmeringsuppgifter) Obligatorisk!
Kursbok Det finns böker on line och böker på biblioteket. Ni skall söka under Programmering (Pubb, Pubbz) där ni skall leta efter böker om programmering med C. Finns både på svenska och engelska. Det finns också mycket material på nätet i form av kursanteckningar, tutorials, programbibliotek. Lite av det finns under kursens hemsidans länkar.
Vad är program? If art interprets our dreams, the computer executes them in the guise of programs! Alan J. Perlis Vi använder datorn genom att exekvera köra program De olika program får datorn att bete sig som olika maskiner! Program måste laddas till datorns minne för att köras. Även detta görs av ett program: operativ systemet Efterssom datorn förstår inte mycket mer en nollor och ettor har man försett datorn med program som kan översätta något som vi kan förstå till något som datorn kan förstå. Dessa översättare kallas för kompilatorer.
Vad är program? If art interprets our dreams, the computer executes them in the guise of programs! Alan J. Perlis Vi använder datorn genom att exekvera köra program De olika program får datorn att bete sig som olika maskiner! Program måste laddas till datorns minne för att köras. Även detta görs av ett program: operativ systemet Efterssom datorn förstår inte mycket mer en nollor och ettor har man försett datorn med program som kan översätta något som vi kan förstå till något som datorn kan förstå. Dessa översättare kallas för kompilatorer.
Vad är program? If art interprets our dreams, the computer executes them in the guise of programs! Alan J. Perlis Vi använder datorn genom att exekvera köra program De olika program får datorn att bete sig som olika maskiner! Program måste laddas till datorns minne för att köras. Även detta görs av ett program: operativ systemet Efterssom datorn förstår inte mycket mer en nollor och ettor har man försett datorn med program som kan översätta något som vi kan förstå till något som datorn kan förstå. Dessa översättare kallas för kompilatorer.
Vad är program? If art interprets our dreams, the computer executes them in the guise of programs! Alan J. Perlis Vi använder datorn genom att exekvera köra program De olika program får datorn att bete sig som olika maskiner! Program måste laddas till datorns minne för att köras. Även detta görs av ett program: operativ systemet Efterssom datorn förstår inte mycket mer en nollor och ettor har man försett datorn med program som kan översätta något som vi kan förstå till något som datorn kan förstå. Dessa översättare kallas för kompilatorer.
Vad är program? If art interprets our dreams, the computer executes them in the guise of programs! Alan J. Perlis Vi använder datorn genom att exekvera köra program De olika program får datorn att bete sig som olika maskiner! Program måste laddas till datorns minne för att köras. Även detta görs av ett program: operativ systemet Efterssom datorn förstår inte mycket mer en nollor och ettor har man försett datorn med program som kan översätta något som vi kan förstå till något som datorn kan förstå. Dessa översättare kallas för kompilatorer.
Vad är programmering? The programs we use to conjure processes are like a sorcerer s spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform. Vi förklarar för en maskin hur alla instanser av ett problem skall lösas! Vi programmerar för att styra processer i datorn. Vi frambesvärjar datorns andar med våra besvärjelser.
Vad är programmering? The programs we use to conjure processes are like a sorcerer s spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform. Vi förklarar för en maskin hur alla instanser av ett problem skall lösas! Vi programmerar för att styra processer i datorn. Vi frambesvärjar datorns andar med våra besvärjelser.
Vad är programmering? The programs we use to conjure processes are like a sorcerer s spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform. Vi förklarar för en maskin hur alla instanser av ett problem skall lösas! Vi programmerar för att styra processer i datorn. Vi frambesvärjar datorns andar med våra besvärjelser.
Vad är programspråk? A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren t flexible. Neither is a violin, or a typewriter, until you learn how to use it. Marvin Minsky När datorn fungerar som översättare, måste vi förse den med en text skriven enligt mycket strikta regler. Det vi skriver kallas för källkod och de regler vi måste följa kallas för programspråk. Det som kompilatorn producerar kallas för objektkod.
Vad är programspråk? A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren t flexible. Neither is a violin, or a typewriter, until you learn how to use it. Marvin Minsky När datorn fungerar som översättare, måste vi förse den med en text skriven enligt mycket strikta regler. Det vi skriver kallas för källkod och de regler vi måste följa kallas för programspråk. Det som kompilatorn producerar kallas för objektkod.
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Programmering beståndsdelar De programspråk som intresserar oss erbjuder sätt att beskriva våra ideér av vad som datorn skall göra. De kan uppdelas i Enkla uttryck som beskriver de enkla sakler språket handlar om. Sätt att kombinera för att bygga mer sammansatta element från enklare sådana Sätt att abstrahera för att namge sammansatta element så att de kan hanterass som enkla! Och detta för både procedurer och data Data Stoft vi vill hantera. Procedurer Beskrivningar av det vi vill göra med datan!
Algoritmiska lösningar Programmering handlar även om att hitta på lösningar som kan beskrivas som algoritmer! Kursen kommer att handla lika mycket om vissa kända algoritmiska lösningar så som hur man uttrycker de i programspråket C.
Algoritmiska lösningar Programmering handlar även om att hitta på lösningar som kan beskrivas som algoritmer! Kursen kommer att handla lika mycket om vissa kända algoritmiska lösningar så som hur man uttrycker de i programspråket C.
Algoritmer unplugged Example Behöver 10 volontärer som skall få var sitt tal. Behöver en volontär för att ställa de andra på sin plats i ordning. Du kan fråga var och en vad de har för nummer och Du får be de att flytta på sig.
Hur tänker man? Vi tänker på att göra små steg, alltid samma sak, men många gånger! Insertion sort Vi ökar den delen som är sorterad med en position varje varv. Vi börjar med ett enda element! Sedan, inför nästa position, vi jämför elementet med de föregående, en i taget, och flyttar de för att göra plats om det behövs! När vi hittar rätt plats, sätter vi elementet!
Hur tänker man? Vi tänker på att göra små steg, alltid samma sak, men många gånger! Insertion sort Vi ökar den delen som är sorterad med en position varje varv. Vi börjar med ett enda element! Sedan, inför nästa position, vi jämför elementet med de föregående, en i taget, och flyttar de för att göra plats om det behövs! När vi hittar rätt plats, sätter vi elementet!
Ett problem - en lösning? Förhoppningsviss har vi kommit på olika sätt att lösa problemet med att få vännerna på rätt plats! Det finns alltså många olika algoritmer för att lösa samma problem. Alla är inte lika bra fast de löser problemet rätt!
Ett problem - en lösning? Förhoppningsviss har vi kommit på olika sätt att lösa problemet med att få vännerna på rätt plats! Det finns alltså många olika algoritmer för att lösa samma problem. Alla är inte lika bra fast de löser problemet rätt!
Ett litet C program main(){ 12345*67890; } Vi har definierat namgett en funktion: main Den skall multiplicera 2 givna tal. Observera användning av {, } och ;. De är skiljetecken och det finns strikta regler för hur vi kan använda de! Notera (), plats för funktionens argument. 12345*67890; är funktionens kropp.
Ett litet C program main(){ 12345*67890; } Vi har definierat namgett en funktion: main Den skall multiplicera 2 givna tal. Observera användning av {, } och ;. De är skiljetecken och det finns strikta regler för hur vi kan använda de! Notera (), plats för funktionens argument. 12345*67890; är funktionens kropp.
Ett litet C program main(){ 12345*67890; } Vi har definierat namgett en funktion: main Den skall multiplicera 2 givna tal. Observera användning av {, } och ;. De är skiljetecken och det finns strikta regler för hur vi kan använda de! Notera (), plats för funktionens argument. 12345*67890; är funktionens kropp.
Ett litet C program main(){ 12345*67890; } Vi har definierat namgett en funktion: main Den skall multiplicera 2 givna tal. Observera användning av {, } och ;. De är skiljetecken och det finns strikta regler för hur vi kan använda de! Notera (), plats för funktionens argument. 12345*67890; är funktionens kropp.
Ett litet C program main(){ 12345*67890; } Vi har definierat namgett en funktion: main Den skall multiplicera 2 givna tal. Observera användning av {, } och ;. De är skiljetecken och det finns strikta regler för hur vi kan använda de! Notera (), plats för funktionens argument. 12345*67890; är funktionens kropp.
Ett litet C program main(){ 12345*67890; } Vi har definierat namgett en funktion: main Den skall multiplicera 2 givna tal. Observera användning av {, } och ;. De är skiljetecken och det finns strikta regler för hur vi kan använda de! Notera (), plats för funktionens argument. 12345*67890; är funktionens kropp.
Ett litet C program main(){ 12345*67890; } Man använder en textredigerare för att knappra in detta och lagra det i en textfil. På våra system kommer ni att använda nedit. Man använder sedan en C kompilator för att producera ett annat fil med maskininstruktioner. I våra system kommer ni att använda gcc. Nu kan vi köra detta och få veta vad 12345*67890 är!
Ett litet C program main(){ 12345*67890; } Man använder en textredigerare för att knappra in detta och lagra det i en textfil. På våra system kommer ni att använda nedit. Man använder sedan en C kompilator för att producera ett annat fil med maskininstruktioner. I våra system kommer ni att använda gcc. Nu kan vi köra detta och få veta vad 12345*67890 är!
Ett litet C program main(){ 12345*67890; } Man använder en textredigerare för att knappra in detta och lagra det i en textfil. På våra system kommer ni att använda nedit. Man använder sedan en C kompilator för att producera ett annat fil med maskininstruktioner. I våra system kommer ni att använda gcc. Nu kan vi köra detta och få veta vad 12345*67890 är!
Ett litet C program main(){ 12345*67890; } Man använder en textredigerare för att knappra in detta och lagra det i en textfil. På våra system kommer ni att använda nedit. Man använder sedan en C kompilator för att producera ett annat fil med maskininstruktioner. I våra system kommer ni att använda gcc. Nu kan vi köra detta och få veta vad 12345*67890 är!
Vilken besvikelse! Vi kan använda datorn för att räkna C har många aritmetiska operationer fördefinierade! Men, så längre man bara använder datorns minne och räkneenheter kan man inte se något! Vill vi se något måste vi, från programmet, påverka något externt! Till exempel, lagra resultatet i en fil som en rad tecken, eller visa den på skärmen. #include <stdio.h> main(){ printf("%d",12345*67890); } Det är svårt och många behöver skriva på skärmen, då finns det bibliotek som måste inkluderas av kompilatorn. Det som finns där är funktioner som vi måste lära oss att använda! Man skall läsa om de och förstå vad de förväntas som argument och vad de gör med dessa.
Vilken besvikelse! Vi kan använda datorn för att räkna C har många aritmetiska operationer fördefinierade! Men, så längre man bara använder datorns minne och räkneenheter kan man inte se något! Vill vi se något måste vi, från programmet, påverka något externt! Till exempel, lagra resultatet i en fil som en rad tecken, eller visa den på skärmen. #include <stdio.h> main(){ printf("%d",12345*67890); } Det är svårt och många behöver skriva på skärmen, då finns det bibliotek som måste inkluderas av kompilatorn. Det som finns där är funktioner som vi måste lära oss att använda! Man skall läsa om de och förstå vad de förväntas som argument och vad de gör med dessa.
Vilken besvikelse! Vi kan använda datorn för att räkna C har många aritmetiska operationer fördefinierade! Men, så längre man bara använder datorns minne och räkneenheter kan man inte se något! Vill vi se något måste vi, från programmet, påverka något externt! Till exempel, lagra resultatet i en fil som en rad tecken, eller visa den på skärmen. #include <stdio.h> main(){ printf("%d",12345*67890); } Det är svårt och många behöver skriva på skärmen, då finns det bibliotek som måste inkluderas av kompilatorn. Det som finns där är funktioner som vi måste lära oss att använda! Man skall läsa om de och förstå vad de förväntas som argument och vad de gör med dessa.
Vilken besvikelse! Vi kan använda datorn för att räkna C har många aritmetiska operationer fördefinierade! Men, så längre man bara använder datorns minne och räkneenheter kan man inte se något! Vill vi se något måste vi, från programmet, påverka något externt! Till exempel, lagra resultatet i en fil som en rad tecken, eller visa den på skärmen. #include <stdio.h> main(){ printf("%d",12345*67890); } Det är svårt och många behöver skriva på skärmen, då finns det bibliotek som måste inkluderas av kompilatorn. Det som finns där är funktioner som vi måste lära oss att använda! Man skall läsa om de och förstå vad de förväntas som argument och vad de gör med dessa.
Vilken besvikelse! Vi kan använda datorn för att räkna C har många aritmetiska operationer fördefinierade! Men, så längre man bara använder datorns minne och räkneenheter kan man inte se något! Vill vi se något måste vi, från programmet, påverka något externt! Till exempel, lagra resultatet i en fil som en rad tecken, eller visa den på skärmen. #include <stdio.h> main(){ printf("%d",12345*67890); } Det är svårt och många behöver skriva på skärmen, då finns det bibliotek som måste inkluderas av kompilatorn. Det som finns där är funktioner som vi måste lära oss att använda! Man skall läsa om de och förstå vad de förväntas som argument och vad de gör med dessa.
Mera om printf Strängar printf("hello world\n"); Observera kontrolltecknet \n som markerar en radbyte. Observera att vi behöver ingen mönster sträng som första argument! Flera delar printf(%s%d%s%d%s, "the square of ", 11111, " is ", 11111*11111, "\n")
Mera om printf Strängar printf("hello world\n"); Observera kontrolltecknet \n som markerar en radbyte. Observera att vi behöver ingen mönster sträng som första argument! Flera delar printf(%s%d%s%d%s, "the square of ", 11111, " is ", 11111*11111, "\n")
Mera om printf Strängar printf("hello world\n"); Observera kontrolltecknet \n som markerar en radbyte. Observera att vi behöver ingen mönster sträng som första argument! Flera delar printf(%s%d%s%d%s, "the square of ", 11111, " is ", 11111*11111, "\n")
Mera om printf Strängar printf("hello world\n"); Observera kontrolltecknet \n som markerar en radbyte. Observera att vi behöver ingen mönster sträng som första argument! Flera delar printf(%s%d%s%d%s, "the square of ", 11111, " is ", 11111*11111, "\n")
Vilken besvikelse! Kan inte vi använda programmet för flera olika värden? Kommandoradsargument Programmet kan ta emot argument från kommandoraden. Efterssom det är main i programmet som körs, har man möjlighet att programmera main som en funktion med argument och, när operativ systemet startar programmet skickas dessa argument till main! #include <stdio.h> main(int argc, char * argv[]){ printf("%s%s","welcome ", argv[1]); }
Vilken besvikelse! Kan inte vi använda programmet för flera olika värden? Kommandoradsargument Programmet kan ta emot argument från kommandoraden. Efterssom det är main i programmet som körs, har man möjlighet att programmera main som en funktion med argument och, när operativ systemet startar programmet skickas dessa argument till main! #include <stdio.h> main(int argc, char * argv[]){ printf("%s%s","welcome ", argv[1]); }
Vilken besvikelse! Kan inte vi använda programmet för flera olika värden? Kommandoradsargument Programmet kan ta emot argument från kommandoraden. Efterssom det är main i programmet som körs, har man möjlighet att programmera main som en funktion med argument och, när operativ systemet startar programmet skickas dessa argument till main! #include <stdio.h> main(int argc, char * argv[]){ printf("%s%s","welcome ", argv[1]); }
Lite om typer I C, så som i många programspråk, finns det olika typer av värden. För varje typ finns vissa operationer och funktioner. Example Argumenten från kommandoraden är strängar av tecken medan * behöver tal för att beräkna resultatet! Just vad gäller tal brukar vi mäninskor inte medvetet skilja mellan följden av tecken och dess värde men när vi skall summera tal gör vi om strängen till en annan representation! Vilken? Vill vi läsa tal från kommandoraden måste vi ta emot en sträng och göra om den till tal! Efterssom detta är så pass vanligt, finns det stöd i språket: funktionen int atoi(char * str) återfinns i biblioteket stdlib.h
Lite om typer I C, så som i många programspråk, finns det olika typer av värden. För varje typ finns vissa operationer och funktioner. Example Argumenten från kommandoraden är strängar av tecken medan * behöver tal för att beräkna resultatet! Just vad gäller tal brukar vi mäninskor inte medvetet skilja mellan följden av tecken och dess värde men när vi skall summera tal gör vi om strängen till en annan representation! Vilken? Vill vi läsa tal från kommandoraden måste vi ta emot en sträng och göra om den till tal! Efterssom detta är så pass vanligt, finns det stöd i språket: funktionen int atoi(char * str) återfinns i biblioteket stdlib.h
Lite om typer I C, så som i många programspråk, finns det olika typer av värden. För varje typ finns vissa operationer och funktioner. Example Argumenten från kommandoraden är strängar av tecken medan * behöver tal för att beräkna resultatet! Just vad gäller tal brukar vi mäninskor inte medvetet skilja mellan följden av tecken och dess värde men när vi skall summera tal gör vi om strängen till en annan representation! Vilken? Vill vi läsa tal från kommandoraden måste vi ta emot en sträng och göra om den till tal! Efterssom detta är så pass vanligt, finns det stöd i språket: funktionen int atoi(char * str) återfinns i biblioteket stdlib.h
Lite om typer I C, så som i många programspråk, finns det olika typer av värden. För varje typ finns vissa operationer och funktioner. Example Argumenten från kommandoraden är strängar av tecken medan * behöver tal för att beräkna resultatet! Just vad gäller tal brukar vi mäninskor inte medvetet skilja mellan följden av tecken och dess värde men när vi skall summera tal gör vi om strängen till en annan representation! Vilken? Vill vi läsa tal från kommandoraden måste vi ta emot en sträng och göra om den till tal! Efterssom detta är så pass vanligt, finns det stöd i språket: funktionen int atoi(char * str) återfinns i biblioteket stdlib.h
Squares #include <stdio.h> main(int argc, char * argv[]){ printf("%s%d%s%d", "the square of ", atoi(argv[1]), " is ", atoi(argv[1])*atoi(argv[1])); } Vi ber programmet att beräkna atoi(argv[1]) 3 gånger!
Squares #include <stdio.h> main(int argc, char * argv[]){ printf("%s%d%s%d", "the square of ", atoi(argv[1]), " is ", atoi(argv[1])*atoi(argv[1])); } Vi ber programmet att beräkna atoi(argv[1]) 3 gånger!
Namn Abstraktion I programmet kan vi namnge uttryck för att använda namnet där uttrycket behövs. Detta hjälper till att organisera programmet och kan undvika upprepade beräkningar av samma uttryck! #include <stdio.h> main(int argc, char * argv[]){ int val = atoi(argv[1]); printf("%s%d%s%d", "the square of ", val, " is ", val*val ); }
Namn Abstraktion I programmet kan vi namnge uttryck för att använda namnet där uttrycket behövs. Detta hjälper till att organisera programmet och kan undvika upprepade beräkningar av samma uttryck! #include <stdio.h> main(int argc, char * argv[]){ int val = atoi(argv[1]); printf("%s%d%s%d", "the square of ", val, " is ", val*val ); }
Kortlek Kort finns inte i programspråket! Det finns inga värden som är kort och det finns inga operationer som har med kort att göra! Vi vill skriva program som handlar om kort. Var börjar vi?
Kortlek Kort finns inte i programspråket! Det finns inga värden som är kort och det finns inga operationer som har med kort att göra! Vi vill skriva program som handlar om kort. Var börjar vi?
Kortlek Kort finns inte i programspråket! Det finns inga värden som är kort och det finns inga operationer som har med kort att göra! Vi vill skriva program som handlar om kort. Var börjar vi?
Vad är ett kort? Den fransk-engelska kortleken består av 52 spelkort uppdelade i fyra så kallade färger, även kallade sviter. Varje färg innehåller ett ess, nummerkort från 2 till 10, en knekt, en dam och en kung. Esset var från början bara en etta, därför börjar nummerkorten på 2. Det finns totalt 13 olika i varje färg alltså, och en sammanfattande beteckning på dessa 13 är valörer. Ett korts identitet bestäms entydigt av dess färg och valör och en standardkortlek innehåller ett kort för varje tänkbar kombination av dessa båda egenskaper. sv.wikipedia.org/wiki/fransk-engelsk kortlek
Kort i C Vi vill så småningom kunna ha en typ för kort och definiera funktioner som har med kort att göra. Vi börjar med typer för svit och valör. I ett C program kan vi ha vårt eget bibliotek, av saker som vi behöver för vårt main! Example typedef enum {CLUB,SPADE, HEART, DIAMOND} suit; typedef enum {ACE,KING,QUEEN,KNIGHT,TEN, NINE, EIGHT, SEVEN, SIX, FIVE, FOUR, THREE,TWO} value;
Kort i C Vi vill så småningom kunna ha en typ för kort och definiera funktioner som har med kort att göra. Vi börjar med typer för svit och valör. I ett C program kan vi ha vårt eget bibliotek, av saker som vi behöver för vårt main! Example typedef enum {CLUB,SPADE, HEART, DIAMOND} suit; typedef enum {ACE,KING,QUEEN,KNIGHT,TEN, NINE, EIGHT, SEVEN, SIX, FIVE, FOUR, THREE,TWO} value;
Kort i C Vi vill så småningom kunna ha en typ för kort och definiera funktioner som har med kort att göra. Vi börjar med typer för svit och valör. I ett C program kan vi ha vårt eget bibliotek, av saker som vi behöver för vårt main! Example typedef enum {CLUB,SPADE, HEART, DIAMOND} suit; typedef enum {ACE,KING,QUEEN,KNIGHT,TEN, NINE, EIGHT, SEVEN, SIX, FIVE, FOUR, THREE,TWO} value;
Vad har vi gort? Nu kan vi i vårt program använda suit och value där vi behöver typer! På samma sätt som det finns värden i typerna int och char * så finns det värden i de nya typerna! SPADE är ett värde av typ suit Men, finns det operationer, funktioner? Nej! vi måste definiera de!
Vad har vi gort? Nu kan vi i vårt program använda suit och value där vi behöver typer! På samma sätt som det finns värden i typerna int och char * så finns det värden i de nya typerna! SPADE är ett värde av typ suit Men, finns det operationer, funktioner? Nej! vi måste definiera de!
Vad har vi gort? Nu kan vi i vårt program använda suit och value där vi behöver typer! På samma sätt som det finns värden i typerna int och char * så finns det värden i de nya typerna! SPADE är ett värde av typ suit Men, finns det operationer, funktioner? Nej! vi måste definiera de!
Att definiera funktioner Example Vi vill erbjuda möjlighet att visualisera sviterna till exempel genom att vissa esset av en given svit. Vilken funktion? Vi börjar med funktionens signatur: vad den heter, vilken typ av argument den förväntar sig och vilken typ av resultat den producerar. void showsuit(suit s) Detta är det man måste veta när man skall använda showsuit.
Att definiera funktioner Example Vi vill erbjuda möjlighet att visualisera sviterna till exempel genom att vissa esset av en given svit. Vilken funktion? Vi börjar med funktionens signatur: vad den heter, vilken typ av argument den förväntar sig och vilken typ av resultat den producerar. void showsuit(suit s) Detta är det man måste veta när man skall använda showsuit.
Att definiera funktioner Example Vi vill erbjuda möjlighet att visualisera sviterna till exempel genom att vissa esset av en given svit. Vilken funktion? Vi börjar med funktionens signatur: vad den heter, vilken typ av argument den förväntar sig och vilken typ av resultat den producerar. void showsuit(suit s) Detta är det man måste veta när man skall använda showsuit.
Att definiera funktioner Efterssom det finns program som kan visa bilder och det finns bilder på kort tillgängliga, kommer vi att använda oss av detta! Example SHOW A HEART Starta andra program Detta är också vanligt och svårt, så det finns stöd i Cs bibliotek. int system(char * cmnd) finns i biblioteket stdlib.h Example system("xv classic-cards/3.jpg")
Att definiera funktioner Efterssom det finns program som kan visa bilder och det finns bilder på kort tillgängliga, kommer vi att använda oss av detta! Example SHOW A HEART Starta andra program Detta är också vanligt och svårt, så det finns stöd i Cs bibliotek. int system(char * cmnd) finns i biblioteket stdlib.h Example system("xv classic-cards/3.jpg")
Att definiera funktioner Efterssom det finns program som kan visa bilder och det finns bilder på kort tillgängliga, kommer vi att använda oss av detta! Example SHOW A HEART Starta andra program Detta är också vanligt och svårt, så det finns stöd i Cs bibliotek. int system(char * cmnd) finns i biblioteket stdlib.h Example system("xv classic-cards/3.jpg")
Att definiera funktioner I kommandot till system behöver vi kunna välja olika filer beroende på vilken suit vi får! void showsuit(suit s){ switch(s){ case CLUB : system("xv classic-cards/1.png");return; case SPADE : system("xv classic-cards/2.png");return; case HEART : system("xv classic-cards/3.png");return; case DIAMOND : system("xv classic-cards/4.png");return; } }