1 Funktioner och procedurell abstraktion
|
|
- Christer Axelsson
- för 9 år sedan
- Visningar:
Transkript
1 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår förmåga att hantera ett stort komplext problem bygger till stor del på vår förmåga att dela upp problemet i mindre delar och därefter lösa var del för sig. Detta är kärnan i procedurell abstraktion. Procedurell abstraktion förenkling genom uppdelning Man kan enkelt ge exempel på procedurell abstraktion i vardagslivet Exempel, frukosttillagning medelst procedurell abstraktion 1 Koka kaffe 2 Stek två ägg 3 Gör en skinkmacka Detta är en anständig beskrivning av tillagningen av en frukost. Beskrivningen består av tre olika procedurer. Beskrivningen är abstrakt, det vill säga förenklad. Förenklingen/abstraktionen består i att man inte beskriver varje enskild detalj i exempelvis proceduren Koka kaffe. Denna förenkling kan ske på flera olika nivåer. Den enklaste kan vara att helt enkelt ange Laga frukost. En mindre abstrakt variant är de tre stegen som är beskrivna ovan. En ännu mindre abstrakt variant vore om man ytterligare beskrev de olika stegen, ex 1. Koka kaffe: Ta fram kaffepulver, häll 5 dl vatten i bryggaren, mät upp 7 mått kaffepulver i filtret, slå på bryggaren, vänta 2 minuter. Denna förfining kan dras in absurdum såsom exempelvis att ange exakt vila armrörelser och benrörelser man ska utföra föra att hälla 5 dl vatten i någon speciell kaffebryggare. Om man utformar dessa procedurer mer och mer exakt kommer samtidigt beskrivningen att bli mer och mer specialiserad. En angivelse av benrörelser fungerar troligtvis bara för ett speciellt kök, med speciellt placerade köksverktyg, medan den första beskrivningen fungerar i de flesta kök. Vid programmering kommer man aldrig att behöva förfina mer än att det direkt går att översätta till programsatser, eller till välkända lösningar på standardproblem. För att åstadkomma denna uppdelning i procedurer eller underprogram skriver man funktioner. 1.1 Funktioner Av de funktioner vi redan stött på kan vi utläsa på vilket sätt funktioner kommer att anropas. En funktion/ett funktionsanrop representerar ett återanvändbart programavsnitt som utförs då programmet stöter på ett anrop. Utdrag ur Exempel för användning av texthanteringsfunktioner // tilldelning namn1 > namn1och2 strcpy( namn1och2, namn1 ); // lägg till texten ", "
2 strcat(namn1och2, ", "); // lägg till namn2 strcat(namn1och2, namn2); strcpy( namn1och2, namn1 ); är ett funktionsanrop till en redan skriven funktion som utför det arbete som funktionen strcpy antyder, att genom en iteration kopiera över alla tecken i texten namn1 till textfältet namn1och2. Det är en liknande iteration som vi såg göras av en for sats vid tilldelningsoperationen för ett textfält på sidan Error: Reference source not found Funktionsdeklaration och funktionsdefintion En funktion består huvudsakligen av två delar 1. en deklaration som berättar hur funktionen ska användas i ett program 2. en definition som beskriver vilken programkod som ska utföras vid anropet. En deklaration har följande form returtyp funktionsnamn(argumenttypslista ); I vårt tidigare skrivsätt för operationer skulle detta se ut som funktionsnamn( argumentlista): returtyp En definition har följande form returtyp funktionsnamn(argumentdeklarationslista) sats/satsblock; Returtyperna och argumentlistorna måste stämma överens exakt med avseende på datatyperna. Den enklaste datatypen är void (ingenting) den använder man om man inte vill ge något värde till eller från funktionen. De funktioner som har returtyp void ger alltså inget returvärde. Dessa funktioner är av en speciell kategori funktion kallade procedurer. Författaren anser att distinktionen mellan sk. void funktioner(procedurer) och icke void funktioner (funktioner) är onödig, men eftersom många andra gör denna distinktion vill jag påpeka att den förekommer. Det finns däremot anledning att först i en text behandla void funktioner eftersom de är den syntaktiskt enklaste typen. Den enklast möjliga funktionsdeklarationen ser ut som // dra_linje ritar ett streck med tecken void dra_linje(); Kommentaren krävs förstås inte av kompilatorn men det är en god vana att kommentera varje funktionsdeklaration, så att man enkelt kan läsa ut syftet med funktionen.
3 En enkel definition för deklarationen kan se ut som void dra_linje() cout<<" "<<endl; #include<iostream> using namespace std; Kom ihåg att syftet med deklarationen är att berätta för både kompilator och användare hur funktionen ska användas. Definitionen utnyttjas sedan vid länkning för att koppla ihop anrop med programkod. När man skriver ett huvudprogram som använder funktioner bör man komma ihåg att syftet med funktionerna är procedurell abstraktion. Därför bör man ha deklarationerna väl synliga och lättillgängliga vid skrivandet av huvudprogrammet main(). Det är dessutom så att kompilatorn måste tolka deklarationer innan dess definitioner. I annat fall kommer definitionen att även tolkas som en deklaration (deklaration och definition på samma gång) och den efterföljande deklarationen kommer att betraktas som en dubbeldeklaration eller nydeklaration, vilket inte är tillåtet. I ett kort program kan vår funktionsdeklaration och funktionsdefinition fogas in som // Lätttillgängliga deklarationer // dra_linje ritar ett streck med tecken void dra_linje(); int main() dra_linje(); // anropa underprogram cout<<"hello World"<<endl; dra_linje(); return 0; void dra_linje() cout<<" "<<endl; Programmet anropar funktionen dra_linje två gånger. Vid varje anrop styrs programflödet över till satsblocket till funktionen, rad 17: cout<<" " kommer alltså att exekveras två gånger. När satsblocket till funktionen är slut styrs programflödet tillbaka till det anropande uttrycket. Då kompilatorn stöter på anropet till funktionen måste den ha sett en deklaration av funktionen som anropas. Resultatet blir:
4 Hello World Press any key to continue Övning: int dra_linje() Prova att i din utvecklingsmiljö ändra definitionens första rad till int dra_linje(); Observera vilka fel som rapporteras vid kompilering / länkning Ändra tillbaka definitionen till det ursprungliga och ändra istället deklarationen till Observera vilka fel som rapporteras vid kompilering / länkning Funktionsnamn är om möjligt ännu viktigare än variabelnamn. Använd utförliga och tydliga funktionsnamn som beskriver dess syften väl. En funktion som aldrig anropas körs aldrig. Det kan mycket väl tänkas att du skrivit dina funktion korrekt i ditt program, men programmet gör ändå inte som du vill. Ibland beror det på att du glömt anropet av funktionen. Detta är ett fel som kompilatorn inte kan upptäcka. 1.2 Funktioner som behöver indata Vi har sett tidigare i samband med texthanteringen hur vi kunde berätta för funktionen att den skulle göra beräkningar på någon viss variabel, exempelvis den tidigare satsen int len = strlen( namn_1 ); utför en beräkning på variabeln namn_1 för att kontrollera hur många tecken som texten innehåller. Denna data meddelas genom argumenttyper och argumentnamn Den tidigare funktionen dra_linje() som drar ett streck av minustecken är inte vidare flexibel. Man kan till exempel inte ange hur långt strecket ska vara. Det kan man enkelt åstadkomma med funktionsargument. Detta skulle i huvudprogrammet kunna se ut som:
5 int main() dra_linje( 12 ); // skriv tolv minustecken cout<<"hello World"<<endl; dra_linje( 5 ); // skriv fem minustecken return 0; Siffrorna 12 och 5 kallas aktuella argument. Notera att antalet minustecken är ett heltal ( int ), en deklaration kan därför skrivas som // dra_linje(int ) ritar ett streck med ett visst antal tecken void dra_linje(int ); Detta är inte samma funktion som tidigare utan en ny funktion. På samma sätt som operatorer identifieras en funktion med hjälp av dess signatur, dvs. namn + argumenttyper. Våra funktioners signaturer är dra_linje() respektive dra_linje(int ). Notera att returtypen inte ingår i signaturen, det innebär att det kan inte finnas en funktioner döpt int dra_linje() samtidigt som en funktion void dra_linje(). I syntaxen för en funktionsdeklaration och definition anger man en argumenttypslista respektive argumentdeklarationslista Vi kan skriva en funktionsdefintion som void dra_linje(int antal_minus) for(int index=0; index< antal_minus; index++) cout<<" "; cout<<endl; Rad 1: Det görs nu en variabeldeklaration varje gång funktionen anropas. Variabeln inititeras med det värde som anges som aktuellt argument. Variabeln antal_minus kallas formellt argument. Det är det formella argumentet som används i funktionens programkod. Rad 3 6: Repetitionen skriver ut lika många minustecken som värdet i variabeln antal_minus.
6 #include<iostream> using namespace std; I ett komplett program kan de båda funktionerna skrivas och användas som // dra_linje ritar ett streck med tecken void dra_linje(); // dra_linje(int ) ritar ett streck med ett visst antal tecken void dra_linje(int ); int main() dra_linje(); // anropa funktion cout<<"hello World"<<endl; dra_linje(); dra_linje( 5 ); cout<<"hello"<<endl; dra_linje( 78 ); return 0; void dra_linje() cout<<" "<<endl; void dra_linje(int antal_minus) for(int index=0; index< antal_minus; index++) cout<<" "; cout<<endl; Programkörning går till som : Start vid main() Funktionsanropet dra_linje() identifieras som funktionen void dra_linje(), funktionen anropas, cout satsen utförs. Texten "Hello World" skrivs ut Funktionsanropet dra_linje() identifieras som samma funktion void dra_linje(), funktionen anropas, cout satsen utförs. Funktionsanropet dra_linje( 5 ) identifieras som void dra_linje( int ). Funktionen anropas med aktuellt argument 5, Funktionen anropas. I funktionen void dra_linje( int ): Argument deklarationen blir int antal_minus = 5. Repetitionssatsen deklarerar ytterligare ett heltal int index = 0. Iterationen skriver ut 5 minustecken.
7 När funktionens satsblock tar slut upphör variablerna antal_minus och index att vara meningsfulla, och de förstörs därför. Man säger att de har sin räckvidd (eng. scope) inom funktionen. Funktionen styr programflödet tillbaka till cout<<"hello"; Funktionsanropet dra_linje( 78 ) identifieras som void dra_linje( int ). Funktionen anropas med aktuellt argument 78. I funktionen void dra_linje( int ): Argument deklarationen blir int antal_minus = 78. Observera att detta är variabel nummer två med namnet antal_minus som deklareras. (den första har förstörts). Repetitionssatsen deklarerar variabeln index = 0 för andra gången. Iterationen skriver ut 78 minustecken. Funktionen styr programflödet tillbaka till programslut. Det centrala i detta program är återigen abstraktionen/förenklingen av att rita en linje. Då funktionerna dra_linje väl är skrivna är det inte längre intressant på vilket sätt de fungerar utan bara att de fungerar som de är deklarerade. Detta försöker man alltid sträva efter då man utformar sina program. Det är värt att notera att i funktionsdeklarationen har man tillåtelse att ge identifierare för det olika argumenten, för funktionen dra_linje(int ) skulle deklarationen kunna se ut som void dra_linje(int antal_tecken); Syftet med identifieraren är endast att upplysa den person som läser deklarationen om syftet med heltalet. Kompilatorn eller programmet tar ingen som helst hänsyn till den identifierare som skrivs i deklarationens argumentlista. Definitionen använder ju deklarationernas identifierare som variabler inuti funktionskroppen. 1.3 Funktioner som returnerar värden Ofta vill man att en funktion ska utföra en beräkning eller komma fram till något numeriskt resultat. Vi har tidigare sett en funktion som beräknar längden på en text int len = strlen( namn_1 ); Denna funktion ger tillbaka/utvärderas till ett heltalsvärde. Operationen kan beskrivas som strlen(char * ): int Heltalstypen anger som vanligt att uttrycket utvärderas till ett heltal. Vi kan konstruera egna funktioner med liknande utseende. För att beräkna arean av en rektangel tar man basen * höjden. Detta kan förstås skrivas som en funktion. I ett huvudprogram kan man tänka sig att funktionen anropas som
8 double bredd, hojd, yta; bredd= 5.0; hojd= 2.5; yta= area( bredd, hojd ); Funktionen utvärderas som ett flyttal och tar två flyttal som argument. Deklarationen blir då double area( double, double); Funktionsdefinitionen innehåller en enkel multiplikation. double area( double b, double h) double a = b * h; return a; Alternativt kan man skriva funktionen på ett enklare (men mindre tydligt) sätt som double area( double b, double h) return b*h; return satsen anger alltså vilket värde som funktionen ska utvärderas till. Datatypen för uttrycket i return satsen måsta vara av samma datatyp som, eller kunna omvandlas till, returtypen angiven i deklaration och definition. Satsblocket som hör till en funktion kallas ofta funktionens implementation. Då man talar om implementering eller implementation avser man programkoden eller skrivandet av programkoden. Funktioner ska skrivas med målet att de ska fungera i så många situationer som möjligt. Man talar om generella funktioner. Det leder oss direkt in på ett mycket vanligt nybörjarmisstag vid implementation av funktioner. En funktion ska aldrig innehålla in eller utmatningssatser om det inte uttryckligen är funktionens syfte. Area funktionen i tidigare exempel fungerar bra för att visa på nackdelarna med detta. Antag att man skrivit funktionen som
9 //Deklaration double area(); //Definition double area() double b,h; cout<<"ange rektangelns bredd:"; cin>>b; cout<<"ange rektangelns höjd:"; cin>>h; return b*h; Funktionen kan mycket väl vara lämpad för uppgiften i ett speciellt fall, men den är långt ifrån så generell som den tidigare area beräkningen. Antag att programmet redan kände till värden för bredd och höjd. Då skulle inmatningssatserna förmodligen göra programmet väldigt förvirrande för användaren, om inte rent obrukbart. Undantaget är alltså funktioner som uttryckligen är till för in och utmatning. Typexempel är funktioner typ dra_linje ovan. Funktioner för utmatning är väldigt ofta void funktioner (procedurer). 1.4 Speciella datatyper för funktionsargument Fälttyper Man kan ge textfält som argument till funktioner på samma sätt som man ger vanliga variabler som argument. Det man måste hålla i minnet är att fältvariabeln inte representerar själva texten utan bara vart texten börjar. Detta får vissa konsekvenser för texter i funktioner. Betrakta programmet
10 #include<iostream> using namespace std; void skriv_10_ggr(char []); int main() char text1[]="ett"; char text2[]="två"; skriv_10_ggr( text1 ); skriv_10_ggr( text2 ); return 0; void skriv_10_ggr( char txt[]) for(int i = 0;i<10;i++) cout<< txt; Programmet ger följande utskrift EttEttEttEttEttEttEttEttEttEttTvåTvåTvåTvåTvåTvåTvåTvåTvåTvåPress any key to continue Det aktuella argumentet i första funktionsanropet är alltså adressen till den minnescell som innehåller tecknet 'E' i texten Ett. Argumentet är alltså ett slags heltal. Detta innebär att den information som behöver föras över till funktionen inte är hela texten, vilket skulle kunna bli väldigt resurskrävande om texten var lång, utan bara adressen till textens första tecken. Variabeln txt och variablerna text1 och text2 representerar alltså inte bara lika texter utan samma texter vid respektive funktionsanrop. Alltså txt==text1 sedan txt==text2, text1 och text2 är naturligtvis aldrig lika. Detta har ytterligare en effekt, förutom att vara resurseffektivt. Man kan nämligen manipulera innehållet i fältet inuti funktionen. Se exempelvis funktionen och anropet
11 void mata_in_textrad(char txt[]); void mata_in_tal( int ); int main() char inmatningsyta[200]; int talet; mata_in_textrad( inmatningsyta ); mata_in_tal( talet ); // går ej cout<<"du har matat in:"<< inmatningsyta<<endl; cout<<"och talet: "<<talet<<endl; return 0; void mata_in_textrad(char txt[]) cin.getline( txt, 80); void mata_in_tal( int tal) cin>>i; Det fält som skapas i och med deklarationen char inmatningsyta[200]; används direkt i funktionen eftersom variabeln inmatningsyta och txt (i funktionen mata_in_textrad) avser samma minnesyta med 200 tecken. Detta fungerar inte med vanliga datatyper som i funktionen mata_in_tal(int ) eftersom de deklareras som nya variabler oberoende av den anropande funktionens variabler. Dessa egenheter motiverar två speciella datatyper konstanter och referenser Konstanter Man kan definiera upp konstanter i c++ genom nyckelordet const. const double PI = ; const int NOLL = 0; const char ALFABET[] = "abcdefghijklmnopqrstuvwxyzåäö"; Konstanter har ofta identifierare som bara består av versaler. Den sista deklarationen skall läsas som ett fält bestående av const char. Tecknen i fältet får inte ändras. Att deklarera en variabel som konstant gör att man inte har tillåtselse att ändra variabelns värde. Samtliga följande satser är otillåtna PI = 3.14; NOLL += 1; ALFABET[3] = 'D'; // otillåtet för const double // otillåtet för const int // otillåtet för const char För funktioner innebär det att om den tidigare funktionen mata_in_textrad( char [] ) istället skulle skrivits som
12 void mata_in_textrad(const char txt[]); // och definition void mata_in_textrad(const char txt[]) cin.getline(txt, 80); är det en otillåten operation att ändra värdet på tecknen i fältet. cin.getline( txt, 80) är då en otillåten operation, kompilatorn ger felmeddelande, eftersom satsen ändrar innehållet i fältet. Jämför deklarationerna av texthanteringsfunktionerna i cstring Referenser int i = 3; int & ref = i; En annan speciell deklaration får man om man deklarerar en variabel som referens. Detta ser ut som Rad 2: Deklarerar identifieraren ref att vara en så kallad referens. En referensvariabel är en synonym till en redan existerande variabel. Referensen fungerar på exakt samma sätt som den ursprungliga variabeln. Genom referensen får man alltså här två variabelnamn/identifierare att referera till exakt samma data. Betrakta int i = 3; int j = 4; int & ref = i; ref = j; // obs tilldelning värdet i j kopieras till ref/i i++; cout<<"i:"<<i<<endl; cout<<"j:"<<j<<endl; cout<<"ref:"<<ref<<endl; ref++; cout<<"i:"<<i<<endl; cout<<"j:"<<j<<endl; cout<<"ref:"<<ref<<endl;
13 Programsnutten ger resultatet i:5 j:4 ref:5 i:6 j:4 ref:6 Detta kommer sig alltså av att ref och i representerar samma instans (samma faktiska heltal). Tilldelningssatsen på rad 4 ger alltså endast värdet av j till instansen i/ref. Med tanke på att referenser är synonymer till redan existerande instanser måste de initieras i samband med en deklaration, detta görs automatiskt om man gör dem till funktionsargument (de initieras då med de aktuella argumenten), men inte om man deklarerar dem som ovan. Följande sats är otillåten eftersom den inte refererar till något existerande heltal. int & j; int & k = 4; // otillåtet 4 är ingen heltalsvariabel I exempel som detta är det svårt att se nyttan med referenser. Nyttan blir tydligare om man visar hur det fungerar för ett funktionsargument. Betrakta funktionen och programmet void mata_in_tal( int&, int &); int main() int tal1, tal2; cout<<"mata in ett tal"<<endl; mata_in_2_tal( tal1, tal2 ); cout<<"du har matat in "<<tal; return 0; void mata_in_tal( int& i, int& j) cin>>i>>j; Denna programsnutt fungerar som tänkt eftersom de identifierare som deklarerats i funktionen, i och j, är synonymer till redan existerande variabler tal1 respektive tal2. De refererar till samma heltal. Se även funktionen swap( int&, int& ) i avsnittet standardalgoritmer.
1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet
1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken
Programmeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
Tentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Att använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock
1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler
1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp
Föreläsning 3.1: Datastrukturer, en översikt
Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,
Introduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Övningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen
C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt
Föreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.
1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i java med hjälp av objekten System.out och System.in. Dessa båda objekt är exempel på strömmar. En ström är en typ som
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
Grundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Objektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Föreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Föreläsning 4: Poster
Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra
Inledande programmering med C# (1DV402) 27+15=42 1 (22)
27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll
5 Grundläggande in- och utmatning
5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta
Variabler och konstanter
Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!
Funktionens deklaration
Funktioner - 1 Teknik för stora program #include #include......... cout
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Föreläsning 1 & 2 INTRODUKTION
Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4
Modul 2 Byggstenar PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Byggstenar 4 Nyckelord 4 Tecken 4 Syntax 5 Standardbibliotek 5 Vårt första program 5 Variabler 6 Konstanter 9 Operatorer 9 Övningar 9 Mer operatorer
Björn Abelli Programmeringens grunder med exempel i C#
Björn Abelli Programmeringens grunder med exempel i C# Övningshäfte (bearbetning pågår) Senaste uppdatering: 2004-12-12 I denna version finns övningar för de mest centrala avsnitten. Häftet kommer att
Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc
Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp
Java, klasser, objekt (Skansholm: Kapitel 2)
Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma
Pascal... Pascal. Pascal... Pascal...
... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är
1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende
Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt
Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number )
1 Datatyper och Uttryck I räkneprogrammet tidigare såg vi att C++ kräver deklarationer av alla variabler som används. I räkneprogrammet användes bara variabler av heltalstyp, int, men det finns naturligtvis
Parameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010
Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är
EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Introduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
1 Egna klasser. 1.1 En punkt-klass
1 Egna klasser Vi har bekantat oss med klasser genom att se hur vi kan använda olika klasser. I synnerhet klassen Scanner och klassen Math. För scannerklassen skapade vi en instans för att sedan utnyttja
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.
Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills
Chapter 3: Using Classes and Objects
Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop
2D1339 Programkonstruktion för F1, ht 2003
2D1339 Programkonstruktion för F1, ht 2003 Fiktiv Kontrollskrivning 1 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga hjälpmedel är tillåtna
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Instuderingsfrågor till Steg 1
Instuderingsfrågor till Steg 1 Följande frågor har till avsikt att underlätta inläsningen av det teoriavsnitt som hör till steg1. Frågorna är anpassade till kursboken C++ from the Ground Up av Herbert
4 Sammansatta datatyper
4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara
Enkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Föreläsning 6 pekare och pekare tillsammans med arrayer
Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går
Grunderna i stegkodsprogrammering
Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer
*Pekarvärden *Pekarvariabler & *
*Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)
TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20
LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 Betygsgränser: 3 16 poäng 4 23 poäng 5 30 poäng Maxpoäng: 36 poäng Hjälpmedel: inga Lycka till Per Ekeroot Uppgift 1 Kortfrågor
Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012
1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:
8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),
Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser
Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion
Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer
Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma
C-programmering, föreläsning 2 Jesper Wilhelmsson
C-programmering, föreläsning 2 Jesper Wilhelmsson Funktioner void Globala och lokala variabler, scope static Arrayer Strängar ASCII, ANSI Argument till main Slumptal Funktioner Nu är det dags att börja
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26
Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623
Introduktionslaboration
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson 2006-08-31 TDIU06 Programmering g.k Introduktionslaboration Ht1, 2006 Detta häfte
Klasser och objekt, referenser Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Klasser och objekt Referenser 2 Klasser och objekt 3 KLASSER OCH OBJEKT Relaterat data Information om en fyrkant Bredd Höjd Färg 4 KLASSER OCH OBJEKT Egna datatyper Skapa en
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Tentamen i Programmering grundkurs och Programmering C
1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
2D1339 Programkonstruktion för F1, ht 2004
2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga
GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner
GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
Objektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
Objektorienterad programmering
Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22
Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering
Testning. 1. Inledning
Testning 1. Inledning I all ingenjörsmässig verksamhet är testning en vedertagen metod för att fastställa om en hypotes, konstruktion eller produkt är korrekt och fungerar som avsett. Datorprogram är ofta
Funktioner. Linda Mannila
Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten
F5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 2014-2015. L0 - Grunder i C++
Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 01-015 L0 - Grunder i C++ Det här är den första lektionen i kursen Introduktion till algoritmer vid Matematikgymnasiet, läsåret
F5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Funktioner. Jan Erik Moström,
Funktioner Biblioteksfunktioner Top-down design Funktioner Något om konstanter I dag Ett program #include int main(void) { double x, result; /* Läs in ett tal från användaren */ printf("skriv
Skizz till en enkel databas
Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil
Anteckningar 1: Grundläggande saker
UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering
int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element
1 Arrayer Vid beräkningar med större datamängder än några enstaka tal är det bekvämt att kunna betrakta en talmängd som en enhet. Detta åstadkommer man genom att deklarera och instantiera fält. Ett annat
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär