1-1.XUVLQQHKnOO 2EMHNWRULHQWHUDGSURJUDPXWYHFNOLQJ ª 2EMHNWRULHQWHUDGDQDO\V ª 2EMHNWRULHQWHUDGGHVLJQ ª 2EMHNWRULHQWHUDGSURJUDPPHULQJ +LVWRULHQ 1-2 6WlYDQ HIWHU NDG DEVWUDNWLRQ 0DVNLQRULHQWHUDGH VSUnN ² 0DVNLQNRG L IRUP DY VLIIURU ² $VVHPEOHUNRG 3URFHGXURULHQWHUDGH VSUnN ² )2575$1 $OJRO &2%2/ %$6,& 3$6&$/ & 2EMHNWRULHQWHUDGH VSUnN ² 6LPXOD $GD 6PDOOWDON-DYD
1-3 2EMHNWRULQWHUDGHVSUnN,QNDSVOLQJ $UY 3RO\PRUIL & 1-4 (WWSURFHGXURFK REMHNWRULHQWHUDW K\EULGVSUnN )OH[LEHOW $QYlQGEDUWWLOOGHW PHVWD 9DQOLJWI UHNRPPDQGH *DQVNDNUlYDQGH
1-5 Standardisering Traditionell C - standard» Definierad 1978 i boken "The C Programming Language" avkernighan/ritchie C - ANSI standard» Påbörjades 1983 och slutfördes 1989 av en grupp bestående av dator- och programtillverkare samt universitet C++ standard» Sommaren 1998 ANSI standard! 1-6 Uppbyggnad av ett C++ program Exempel på ett C++ program #include <iostream.h> void main() { cout << "Hello world"; } C++ och Java s syntax är till stora delar lika public class hello { public static void main(string args[]) { System.out.println("Hello world"); } }
1-7 Från källkod till körbart program prog.cpp #include<iostream.h> main() { }...... MS Visual C++ Borland C++ Kompilator Länkare prog.exe Ett additions program 1-8 // Ett additions program -------------------------------------- #include <iostream.h> main() { int tal1, tal2, summa; //deklaration av heltalen cout << "Ange tal 1" << endl; //frågar om första talet cin >> tal1; //läser in första talet cout << "Ange tal 2" << endl; //frågar om andra talet cin >> tal2; //läser in andra talet summa = tal1 + tal2; //beräknar summan cout << "Summan blir: " << summa << endl; //skriver summan } return 0; // indikerar att programmet avslutades normalt //-------------------------------------------------------------
1-9 cout Matar ut text på skärmen Ex: cout << "Enter first integer\n"; <<» Visar vad som ska skickas till cout för utmatning» Flera sådana kan finnas i ett utmatningsuttryck Citationstecken "... "» Avgränsar en textsträng» Används vid nästan all textutmatning Definierad i iostream.h» Header filer Filer som innehåller deklarationer av funktioner Måste vara med som en include-rad 1-10 cin Läser data från tangentbordet Ex: cin >> tal1; Deklarationen finns i iostream.h
Escapesekvenser 1-11 Character Newline Horizontal tab Vertical tab Backspace Form Feed Alert Backslash Question mark Single quote Double quote Null character With octal code 000 With hexadecimal code xhhh C++ Escape Sequence \n \t \v \b \f \a \\ \? \ \ \0 \000 \xhhh Heltalstyper 1-12 Typ C++ Java Minnesstorlek Område Minnesstorlek Område char 1 byte -128 till 127 char är ingen heltalstyp byte short int long Saknas i C++, motsvaras delvis av char Inte större än long. Oftast 2 byte Beror på maskin, ofta 2 eller 4 byte Inte mindre än short. Oftast 4 byte 1 byte -128 till 127 (-32 768 till 32 767) 2 byte -32 768 till 32 767 Beror på... 4 byte -2 147 483 648 till 2 147 483 647 (-2 147 483 648 till 2 147 483 647) 8 byte -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807
Flyttalstyper 1-13 Typ float double C++ Java Minnesstorlek Område Minnesstorlek Område Inte större än double. Oftast 4 byte Inte mindre än float. Oftast 8 byte (ca + 3.4E+38) 4 byte ca + 3.4E38 (ca + 1.8E+308) 8 byte ca + 1.8E+308 Teckentyper 1-14 Typ C++ Java Minnesstorlek Område Minnesstorlek Område char 1 byte ASCII-tabellens tecken. Egentligen en heltalstyp. 2 byte Unicode s tecken
Logiska typer 1-15 Typ bool boolean C++ Java Minnesstorlek Område Minnesstorlek Område true, false men de båda värdena representeras av 1 eller 0... true, false Exempel på kvalificerare 1-16 Typ Minnesstorlek Område unsigned char Lika som char 0 till 255 unsigned short Lika som short 0 till (65 535) unsigned int Lika som int Från och med 0 till MAX_INT unsigned long Lika som long 0 till (4 294 967 295) Unsigned long int Lika som long. 0 till (4 294 967 295) long double Större än double Större talområde än double
Deklaration och tilldelning av variabler 1-17 int mittheltal; cout << mittheltal; mittheltal = 3; cout << mittheltal << \n ; // Deklaration // Ett obestämt värde skrivs ut! // Tilldelning // Talet 3 och en ny rad skrivs ut /* EttNyttTal deklareras och tilldelas värdet av mittheltal och etttaltill deklareras och tilldelas värdet värdet 23 */ int ettnytttal = mittheltal, etttaltill = 23; ettnytttal = mittheltal = etttaltill = -49; // Nu har alla tre variablerna värdet -49 1-18 Deklaration av variabler Syntax» typ variabelnamn;» typ variabelnamn = värde;» typ var1 [= värde1], var2 [=värde2],.; Exempel» int j;» double pressure = 32.314;» long filesize, disksize, totalfilesize = 0;» int j, i = 2, k = 3;» double x = 3.12; double y = 2*x, z = 4.5, a = 45.7;
Variablers storlek 1-19 /******************************************************************************************************* * Detta program undersöker hur mycket minne som "int"-deklarerade och variabler använder. Dessutom använder programmet * konstanten INT_MAX för att kontrollera vilket som är det minsta tal som variabeln kan lagra. Konstanterna INT_MIN och * INT_MAX är deklarerade i standardbiblioteket "limits.h". Motsvarande konstanter för decimaltal finns i float.h. * Programmerare: Hans-Edy Mårtensson * Datum: 1998-08-11 ********************************************************************************************************/ #include <iostream.h> #include <limits.h> #include <float.h> //- main ---------------------------------------------------------------------------------------------------------------------------------------------------- void main(void) { cout <<"En \"int\"-deklarerad variabel tar upp " <<sizeof(int) <<" byte i datorns minne." << endl; int heltal = 34; cout <<"Variabeln \"heltal\" tar upp " <<sizeof(heltal) <<" byte" << endl; cout <<"\ndet minsta tal som en \"int\"-variabel kan lagra är: <<INT_MIN << endl; cout <<"\ndet största tal som en \"int\"-variabel kan lagra är: <<INT_MAX << endl; cout <<"\ndet minsta tal som en \"double\"-variabel kan lagra är: <<DBL_MAX << endl; cout <<"\ndet största tal som en \"double\"-variabel kan lagra är: " <<DBL_MIN << endl; } //------------------------------------------------------------------------------------------------------------------------------------------------------------ Konstanter 1-20 Syntax» const typ namn = värde; Exempel» const unsigned char ASCII_A = 65;» const DAYS_IN_WEEK = 7;» const char FIRST_DISK_DRIVE = A ; Om konstantens typ utelämnas i deklarationen så förutsätter kompilatorn int.
Konstanter med hjälp av preprocessor-direktiv 1-21 Syntax» #define namn värde Exempel» #define ASCII_A 65» #define DAYS_IN_WEEK 7 Innan koden kompileras byter så byter preprocessorn ut alla förekomster av namn till motsvarande värde. 1-22 Tecken Består av ett tecken omgivet av apostrofer Ex: 'a' 'F' '>' Värdet är koden för motsvarande tecken För ASCII-koden gäller följande: Ex: c1 = c2 + 'a' - 'A'; Om c2 har koden för en stor bokstav kommer c1 få koden för motsvarande liten bokstav ('a' - 'A' = 32) Ex: i = c - '0' Ger ett heltal i intervallet 0 till 9 om c är en siffra
1-23 Aritmetiska operatorer De vanliga operatorerna: '+'- addition '-' - subtraktion '*' - multiplikation '/' - division OBS! 10/100 får värdet 0 (heltalsdivision) Speciella operatorer: '%' - modulooperatorn Ex: 14 % 5 ger värdet 4 - rest vid heltalsdivision Subtraktionsoperatorn '-' finns även i en variant med bara en operand s.k. unär variant 1-24 Operatorernas prioriteter Bestämmer hur sammansatta uttryck med flera operatorer ska grupperas Ex: i + j * k grupperas som: i + (j * k) Operanden räknas till den operator som har högst prioritet Prioritetsordning för de vanliga aritmetiska operatorerna: - (unär) högst * / % + - lägst Ex: - 2 + 4 / 2 * 3 får värdet 4 Grupperingen kan ändras med parenteser Ex: (- 2 + 4 )/ 2 * 3 får värdet 3
Aritmetiska tilldelningsoperatorer 1-25 De aritmetiska operatorerna kan kombineras med = för att skapa aritmetiska tilldelningsoperatorer Ex: i = i + k; y = y - x; kan skrivas mer kompakt som: i += k; y -= x; Allmänt gäller att: op1 = op1 op op2 är ekvivalent med: op1 op= op2 op kan bl.a. vara någon av: + - * / % Upp- och nedräkningsoperatorer 1-26 Ex : i++ <-> i = i + 1 n-- <-> n = n - 1 Två varianter finns: postfixoperator i++ ökningen av i ska ske efter att uttryckets värde har beräknats Ex: i = 4; j = 7; b = i++ * j--; /* b får värdet 28 */ prefixoperator ++i ökningen av i ska ske innan uttryckets värde har beräknats Ex: i = 4; j = 7; a = ++i * --j; /* a får värdet 30 */
1-27 Typomvandling Syntax» typ(uttryck)» (typ) uttryck Exempel» int i = 2; float a, b; a = float(i); b = (float) i; 1-28 'XVNDNXQQD«'X VND NXQQD VNULYD HWW HQNHOW SURJUDP L & 'X VND NXQQD VNULYD XW RFK OlVD LQ GDWD YLD ELOGVNlUP RFK WDQJHQWERUG 'X VND NlQQD WLOO VSUnNHWV HQNOD GDWDW\SHU 'X VND NXQQD DQYlQGD GH DULWPHWLVND RSHUDWRUHUQD