alleora

computer science & systems development

Arkiv för kategori ‘Programmering’

C++ standard headers

Skrivet av ratache den augusti 12, 2011

C++ Standard Library header file

reference from C++ How To Program, Deitel

Explanation

<iostream>

Contains function prototypes for the C++ standard input and standard output functions, introduced in Chapter 2, and is covered in more detail in Chapter 15, Stream Input/Output. This header file replaces header file <iostream.h>.

<iomanip>

Contains function prototypes for stream manipulators that format streams of data. This header file is first used in Section 4.9 and is discussed in more detail in Chapter 15, Stream Input/Output. This header file replaces header file <iomanip.h>.

<cmath>

Contains function prototypes for math library functions (discussed in Section 6.3). This header file replaces header file <math.h>.

<cstdlib>

Contains function prototypes for conversions of numbers to text, text to numbers, memory allocation, random numbers and various other utility functions. Portions of the header file are covered in Section 6.7; Chapter 11, Operator Overloading; String and Array Objects; Chapter 16, Exception Handling; Chapter 19, Web Programming; Chapter 22, Bits, Characters, C-Strings and structs; and Appendix E, C Legacy Code Topics. This header file replaces header file <stdlib.h>.

<ctime>

Contains function prototypes and types for manipulating the time and date. This header file replaces header file <time.h>. This header file is used in Section 6.7.

<vector>,
<list>,
<deque>,
<queue>,
<stack>,
<map>,
<set>,
<bitset>

These header files contain classes that implement the C++ Standard Library containers. Containers store data during a program’s execution. The <vector> header is first introduced in Chapter 7, Arrays and Vectors. We discuss all these header files in Chapter 23, Standard Template Library (STL).

<cctype>

Contains function prototypes for functions that test characters for certain properties (such as whether the character is a digit or a punctuation), and function prototypes for functions that can be used to convert lowercase letters to uppercase letters and vice versa. This header file replaces header file <ctype.h>. These topics are discussed in Chapter 8, Pointers and Pointer-Based Strings, and Chapter 22, Bits, Characters, C-Strings and structs.

<cstring>

Contains function prototypes for C-style string-processing functions. This header file replaces header file <string.h>. This header file is used in Chapter 11, Operator Overloading; String and Array Objects.

<typeinfo>

Contains classes for runtime type identification (determining data types at execution time). This header file is discussed in Section 13.8.

<exception>,
<stdexcept>

These header files contain classes that are used for exception handling (discussed in Chapter 16).

<memory>

Contains classes and functions used by the C++ Standard Library to allocate memory to the C++ Standard Library containers. This header is used in Chapter 16, Exception Handling.

<fstream>

Contains function prototypes for functions that perform input from files on disk and output to files on disk (discussed in Chapter 17, File Processing). This header file replaces header file <fstream.h>.

<string>

Contains the definition of class string from the C++ Standard Library (discussed in Chapter 18).

<sstream>

Contains function prototypes for functions that perform input from strings in memory and output to strings in memory (discussed in Chapter 18, Class string and String Stream Processing).

<functional>

Contains classes and functions used by C++ Standard Library algorithms. This header file is used in Chapter 23.

<iterator>

Contains classes for accessing data in the C++ Standard Library containers. This header file is used in Chapter 23, Standard Template Library (STL).

<algorithm>

Contains functions for manipulating data in C++ Standard Library containers. This header file is used in Chapter 23.

<cassert>

Contains macros for adding diagnostics that aid program debugging. This replaces header file <assert.h> from pre-standard C++. This header file is used in Appendix F, Preprocessor.

<cfloat>

Contains the floating-point size limits of the system. This header file replaces header file <float.h>.

<climits>

Contains the integral size limits of the system. This header file replaces header file <limits.h>.

<cstdio>

Contains function prototypes for the C-style standard input/output library functions and information used by them. This header file replaces header file <stdio.h>.

<locale>

Contains classes and functions normally used by stream processing to process data in the natural form for different languages (e.g., monetary formats, sorting strings, character presentation, etc.).

<limits>

Contains classes for defining the numerical data type limits on each computer platform.

<utility>

Contains classes and functions that are used by many C++ Standard Library header files.

Sparad i C++ | Taggad: , , , , , , , , | Lämna en kommentar »

John Carmacks keynote at QuakeCon 2011

Skrivet av ratache den augusti 9, 2011

Sparad i Programmering, Systemarkitektur | Taggad: , , , , , , , | Lämna en kommentar »

Nyckelord och identifierare i C++

Skrivet av ratache den juni 27, 2011

C++ (standard)Keywords 
Keywords common(standard) to the C and C++ programming languages

auto   const     double  float  int       short   struct   unsigned
break  continue  else    for    long      signed  switch   void
case   default   enum    goto   register  sizeof  typedef  volatile
char   do        extern  if     return    static  union    while


C++ only keywords

asm         dynamic_cast  namespace  reinterpret_cast  try
bool        explicit      new        static_cast       typeid
catch       false         operator   template          typename
class       friend        private    this              using
const_cast  inline        public     throw             virtual
delete      mutable       protected  true              wchar_t


C++ keywords when ASCII is not used 
and      bitand   compl   not_eq   or_eq   xor_eq
and_eq   bitor    not     or       xor

Predefined identifiers who are not reseverd

cin   endl     INT_MIN   iomanip    main      npos  std
cout  include  INT_MAX   iostream   MAX_RAND  NULL  string

Sparad i C++, Programmering | Taggad: , , , , , , , , , | Lämna en kommentar »

ASCII tabellen

Skrivet av ratache den juni 26, 2011

ASCII [’askɪ], eller American Standard Code for Information Interchange, är en teckenkodning som används för att representera bokstäver och andra tecken i datorer. Koden använder sju bitar vilket ger plats för 128 olika tecken. ASCII har samma tecken som referensversionen av ISO/IEC 646 plus 7-bitars styrkoderna i ISO/IEC 6429. ASCII designades för USA:s behov och räcker inte för något annat språk än engelska, eftersom några andra bokstäver än A-Z och a-z inte ingår. ASCII-standarden publicerades första gången 1963.

Med ASCII som grund har olika utvidgningar till 8 bitar gjorts, ofta kallade utökad ASCII. Till exempel ISO/IEC 8859-serien av teckenkodningar. De äldre kodningarna i Windows (CP1250, CP1252, CP932, m.fl) och Mac OS (MacRoman, MacJapanese, m.fl) är även de utvidgningar av ASCII. Dessa utvidgningar har ersatt ASCII i användning (eftersom 8 bitar är tillgängligt överallt numera), men de följer ASCII för de tecken som ingår i ASCII.

Internet startades med ASCII och 7 bitars överföring som grund, därför skapades nationella 7-bitsvarianter av ASCII i nästan alla länder, även i Storbritannien som behövde pundtecket £, och i Canada som ville stödja franska. Först ett gott stycke in på 1990-talet fungerade 8 bitars överföring av till exempel e-mail överallt på internet.

ASCII-utvidgningarna med 8 bitar, håller på att ersättas med Unicode, en teckenkodning som använder fler än 8 bitar, och som stöder alla språk. För att lagra Unicode i filer använder man oftast antingen UTF-8 som fungerar som en utökad ASCII (2-4 bytes för icke-ASCII-tecken), eller UTF-16 där tecknen lagras i 2-byte-sekvenser. (http://sv.wikipedia.org/wiki/ASCII)

ASCII-tabell
32 64 @ 96 ` 128 Ç 160 á 192 + 224 Ó
33 ! 65 A 97 a 129 ü 161 í 193 - 225 ß
34 " 66 B 98 b 130 é 162 ó 194 - 226 Ô
35 # 67 C 99 c 131 â 163 ú 195 + 227 Ò
36 $ 68 D 100 d 132 ä 164 ñ 196 - 228 õ
37 % 69 E 101 e 133 à 165 Ñ 197 + 229 Õ
38 & 70 F 102 f 134 å 166 ª 198 ã 230 µ
39 ' 71 G 103 g 135 ç 167 º 199 Ã 231 þ
40 ( 72 H 104 h 136 ê 168 ¿ 200 + 232 Þ
41 ) 73 I 105 i 137 ë 169 ® 201 + 233 Ú
42 * 74 J 106 j 138 è 170 ¬ 202 - 234 Û
43 + 75 K 107 k 139 ï 171 ½ 203 - 235 Ù
44 , 76 L 108 l 140 î 172 ¼ 204 ¦ 236 ý
45 - 77 M 109 m 141 ì 173 ¡ 205 - 237 Ý
46 . 78 N 110 n 142 Ä 174 « 206 + 238 ¯
47 / 79 O 111 o 143 Å 175 » 207 ¤ 239 ´
48 0 80 P 112 p 144 É 176 ¦ 208 ð 240 -
49 1 81 Q 113 q 145 æ 177 ¦ 209 Ð 241 ±
50 2 82 R 114 r 146 Æ 178 ¦ 210 Ê 242 =
51 3 83 S 115 s 147 ô 179 ¦ 211 Ë 243 ¾
52 4 84 T 116 t 148 ö 180 ¦ 212 È 244 ¶
53 5 85 U 117 u 149 ò 181 Á 213 i 245 §
54 6 86 V 118 v 150 û 182 Â 214 Í 246 ÷
55 7 87 W 119 w 151 ù 183 À 215 Î 247 ¸
56 8 88 X 120 x 152 ÿ 184 © 216 Ï 248 °
57 9 89 Y 121 y 153 Ö 185 ¦ 217 + 249 ¨
58 : 90 Z 122 z 154 Ü 186 ¦ 218 + 250 ·
59 ; 91 [ 123 { 155 ø 187 + 219 ¦ 251 ¹
60 < 92 \ 124 | 156 £ 188 + 220 _ 252 ³
61 = 93 ] 125 } 157 Ø 189 ¢ 221 ¦ 253 ²
62 > 94 ^ 126 ~ 158 × 190 ¥ 222 Ì 254 ¦
63 ? 95 _ 127  159 ƒ 191 + 223 ¯ 255

Sparad i Datavetenskap, Programmering | Taggad: , , , , , , | 1 Kommentar »

Att visa hur overflow fungerar (?)

Skrivet av ratache den juni 25, 2011

Hur fungerar overflow? Vad händer om man ger en variabel sitt maximala värde plus 1? Följande kod visar vad som händer i C++. Istället för en crash ser vi att variablen tilldelas sitt motsatta värde i botten på dess värdeskala.

 

Att visa hur overflow av variabler fungerar:				

// datatype_IO_030
// Per Johansson
//------------------------------------------------------------------------------
#include<iostream> // cout
#include<limits> // INT_MAX
using namespace std;
//-----------------------------------------------------------------------------
int main()
{
	locale swedish("swedish");
    locale::global(swedish);
	//Programmet börjar här.
	int Olle = INT_MAX; // Initera variabeln Olle till maxvärdet
	unsigned int Lisa = Olle ; // Initiera Lisa = Olle
	
	cout << " Olle har " << Olle <<" kr och Lisa har " <<Lisa << " kr." << endl;
	cout << " Addera 1 kr till varje konto" << endl;
	
	Olle = Olle + 1;
	Lisa = Lisa + 1;
	
	cout << " Olle har nu " << Olle <<" kr och Lisa har " << Lisa
	<< " kr." << endl << endl;
	
	Olle = 0;
	Lisa = 0;
	
	cout << " Olle har " << Olle <<" kr och Lisa har " << Lisa << " kr." << endl;
	cout << " Tag 1 kr av Olle resp Lisa" << endl;
	
	Olle = Olle - 1;
	Lisa = Lisa - 1;
	
	cout << " Olle har nu " << Olle <<" kr och Lisa har " << Lisa <<" kr."<< endl;
	return 0;
}

Sparad i C++, Programmering | Taggad: , , , , , , , , , , , , , , , , , , , | Lämna en kommentar »

C++ sommarkurs delsteg 1_done

Skrivet av ratache den juni 23, 2011

// firstfile.cpp
// Ett första försök att göra ett C++ - program
// Per Johansson 2011-06-23
//-----------------------------------------------------------------------------
#include <iostream>   // cout, cin
using namespace std;
//-----------------------------------------------------------------------------
int main()
{
	int kr;

	kr = 250;
	cout << "Per Johansson fick ";
	cout << kr;
	cout << " kronor av Försvarsmakten idag."<< endl;

}

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

ANTECKNINGAR!

I C++ i jämnförelse med Python så deklarer man variabeln och dess typ först i koden innan man tilldelar ett värde.

int kr; <-- deklarerar datatypen och variabelnamnet samt allokerar plats för ett 32-bitars tal i RAM-minnet.
int = 250;

I Python blir detta:

kr = 250 (datatypen väljs automatiskt)

Variabelförteckning C++

Numerära tal:
Heltal 			Platsbehov (bitar) 		Talområde
int 			32 					-2 147 483 648 - 2 147 483 647
unsigned int 	        32 					0 – 4 294 967 295
long 			32 					-2 147 483 648 - 2 147 483 647
unsigned long 	32 						0 – 4 294 967 295
short int 		16 					-32 768 – 32 767
enum 			8 					-128 - 127

Flyttal
float 			32 					3,4 10-38 - 3,4 10+38 (pos. & neg.) 7 siff. precision
double 			64 					1,7 10-308 - 1,7 10+308 (pos. & neg.) 15 –“-
long double 	        80 					3,4 10-4932 – 3,4 10 +4932 (pos. & neg.) 18 –“-

Tecken
char 			8 					-128 – 127
unsigned char 	        8 					0 – 255

Datatypernas platsbehov (längd) är beroende av plattform. Ovanstående siffror gäller för 32 bitars Windows operativsystem. 
Dessutom gäller att: int = signed int och long = long int = signed long int. Tecken (char) representeras internt av ett heltal.

Typ 			Exempel 				Kommentar
Int 			int i; 					variabeln i lagrar ett heltal
			int j, J; 				skiljer på gemener och versaler
			int j=3; 				tilldelar värde i samband med deklarationen
			int i, j, k; 			        deklarera flera variabler samtidigt
			int alder; 				det är INTE tillåtet att använd å, ä, ö, Å, Ä, Ö
			int nr_of_colors:	 	        _ tillåtet i variabelnamn

float 			float x; 				variabeln x lagrar ett decimaltal (flyttal)
float 			y = 5.34 				OBS! Punkt (“.”) är decimalavskiljare

char 			char ch 				variabeln ch lagrar ett tecken
			char tecken=’A’; 		        använd ’ ’ för att visa att A är ett tecken

Svenska i C++
//å - '\x86'
//ä - '\x84'
//ö - '\x94'
//Å - '\x8F'
//Ä - '\x8E'
//Ö - '\x99'

int main()
{
    locale swedish("swedish");
    locale::global(swedish);

    cout << "åÅäÄöÖ" << endl << endl;

    return 0;
}

Sparad i C++, Programmering | Taggad: , , , , , , , , , , , , , | 1 Kommentar »

o

Skrivet av ratache den april 18, 2011

De viktigaste komponenterna inom OOP:


Objekt – klasser
Viktigaste konceptet övht. inom OOP är just objektet. Den fancy def. Av Objekt är ”An abstraction of something in a problem domain, reflecting the capabilities of the system to keep information about it, interact with it, or both.”
Ett exempel på en abstraktion i ovanstående exempel är en karta. En karta täcker aldrig allt som verkligheten består av utan bara de delar som är intressanta för dess ändamål. Ett objekt gör likadant, det representerar bara de egenskaper som döms relevanta. Objekt är alltså både en ändamålsenlig representation av verkligheten som ett system vilket gör objekt tveeggat.
”We define an object as a concept, abstraction, or thing with crisp boundaries and meaning for the problem at hand. Objects serve two purposes: They promote understanding of the real world and provide practical basis for computer implementation.”
En klass är en uppsättning objekt med likartade specifikationer. Ur dessa klassobjekt skapas sedan instanser när klassen är i drift i ett program.

Generalisering – specialisering
Generalisering och specialsiering är väldigt viktigt inom OOP. Man använder genrealisering för att skapa klasser som kan användas för olika projekt och syften. Specialisering är när man går in på ett problem eller en domän i djupet och löser krav som sätts på systemet i den situationen. Man kan även använda generalisering för att kartlägga/förklarra större system och vice versa med specialisering.
Ett exempel: ett däggdjur är en generell class. Medan klassent ”katt” är mer specialiserad men har alla de attribut som däggdjur har. Vilket innebär att man kan säga att ”katt” ärver ”däggdjur” samtidigt som den har vissa specialiserande egenskaper.

Enkapsulering
Ett objekt inom OOP är sällan mer än ett knippe attribut och ett antal enstaka processer som arbetar mot datan. Enkapsulering innebär att datan får vara orörd om inte objektets processer anropas med rätt signatur och parametrar först.

Skyddandet av information
En hårdare dragning av enkapsulering som innebär att man inte tillåter insyn i ett objekts innehåll och processer utan endast tillåter s.k meddelanden mellan objekt. Detta för att undvika användning av genvägar som går runt enkapsulering.

Sända meddelanden
Att sända meddelanden är hur objekt kommunicerar och samarbetar mellan varandra för att uppnå ett systems totala ändamål och funktion.

Objekt tillstånd
Om nu man använder ”information hiding” och ”enkapsulering” vilka bara accepterar meddelanden iform av rätt signatur och parametrar hur kan då objekt samarbeta för att uppnå ett gemensamt mål? Det är inte endast genom att skicka meddelanden objekt kommunicerar utåt. För de har även något som kallas för ett objekts tillstånd. Detta tillstånd säger mycket om vad som skett och var i processen ett program är och tillsammans kan då objektens status tillslut nå sitt mål för den totala processen.
Hur uppnår ett objekt de tillstånd det har? Statusen på objektet definieras av totalen av dess nuvarande datavärden och dess association med andra objekt. Ett objekts status kan ändra på hur det bemöter anrop från andra objekt och hur det skickar vidare meddelanden.

Polymorfism
Polymorfism är när ett objekt skickar ett meddelande med parametrar som sedan behandlas olika av de mottagande objekten. Exempel är ett lönesystem där varje anställd kan ha tre olika stauslägen, heltid, deltid, temporär anställning. Objektet monthlyPayPrint skickar de anställdas uträknade löner men beroende på vilken anställning man har så behandlas informationen olika. Polymorfism.

Sparad i Programmering | Taggad: , , , , , , , , , | Lämna en kommentar »

Arduino project

Skrivet av ratache den mars 4, 2011

Here is the code for our Arduino project:

//latch, clock och data till shift-registret
int latchPin = 10;
int clockPin = 9;
int dataPin = 12;
//till termometern
int tempinput = 0;
float temp = 0;
//lyspryl
int lysled = 6;
int ldrpin = 1;
int lightval = 0;

//siffror
int siffror[] = {
0, 7, 5, 5, 5, 7, 0, 0,    // 0 pos: 0-7
0, 2, 6, 2, 2, 7, 0, 0,    // 1 pos: 8-15
0, 7, 1, 7, 4, 7, 0, 0,    // 2 pos: 16-23
0, 7, 1, 7, 1, 7, 0, 0,    // 3 pos: 24-31
0, 5, 5, 7, 1, 1, 0, 0,    // 4 pos: 32-39
0, 7, 4, 7, 1, 7, 0, 0,    // 5 pos: 40-47
0, 7, 4, 7, 5, 7, 0, 0,    // 6 pos: 48-55
0, 7, 1, 1, 1, 1, 0, 0,    // 7 pos: 56-63
0, 7, 5, 7, 5, 7, 0, 0,    // 8 pos: 64-71
0, 7, 5, 7, 1, 1, 0, 0,    // 9 pos: 72-79
};

void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);

pinMode(lysled, OUTPUT);
/*serials för kontroll av variabler etc i arduino-konsol
Serial.begin(9600);
analogReference(INTERNAL);

//Serial.print(long(aread));
*/
}

//XXXX Start på loop
void loop() {
lightval = analogRead(ldrpin);
//tröskelvärde för lysdiod
if(lightval<1022){
digitalWrite(lysled, LOW);}
else{
digitalWrite(lysled, HIGH);}

//TEMPERATUR
int midvalue = 20;
int aread = 0;
int tiotal = 0;
int ental = 0;

//Medelvärde av 20 aread för att få korrekt värden på temp
for(int i = 0; i < midvalue; i++){
aread = aread+analogRead(tempinput);
}

aread = aread / 20;
temp = ((100*1.1*aread)/1024);

int therm = temp;

//Delar upp temperatur i tiotal och ental
for(int f =0; f<9; f++){
if(therm>9){
therm = therm – 10;
tiotal++;
}
if(therm<10){
ental = therm;
}
}

int row = B00000001;

for (int i = 0; i < 7; i++) {
digitalWrite(latchPin, LOW);
shiftOutRow(row);
shiftOut(siffror[7 - i + (ental*8)]);
shiftOut(siffror[7 -i + (tiotal*8)]);
//shiftOutRow – uppdaterar rader på matris
//shiftOut 4bitars shiftOut för varje siffras output på matris
digitalWrite(latchPin, HIGH);
row = row << 1;
delay(1);

}
}

void shiftOutRow(byte dataOut) {

boolean pinState;

digitalWrite(dataPin, LOW);
digitalWrite(clockPin, LOW);

for (int k=0; k<=7; k++) {

digitalWrite(clockPin, LOW);

if ( dataOut & (1<<k) ) {
pinState = LOW;
}
else {
pinState = HIGH;
}

digitalWrite(dataPin, pinState);

digitalWrite(clockPin, HIGH);
digitalWrite(dataPin, LOW);
}

digitalWrite(clockPin, LOW);
}
void shiftOut(byte dataOut) {

boolean pinState;

digitalWrite(dataPin, LOW);
digitalWrite(clockPin, LOW);

for (int k=0; k<=3; k++) {

digitalWrite(clockPin, LOW);

if ( dataOut & (1<<k) ) {
pinState = HIGH;
}
else {
pinState = LOW;
}

digitalWrite(dataPin, pinState);

digitalWrite(clockPin, HIGH);
digitalWrite(dataPin, LOW);
}

digitalWrite(clockPin, LOW);
}

//Hackerz

 

Sparad i Programmering, Teknik | Taggad: , , , , , , | 4 Kommentarer »

Python the hard way…

Skrivet av ratache den januari 27, 2011

I have ordered a introductionary book for Python to my growing collection of books relating to my field. However there is alot of good free books available on the net when it comes to Python.
Orientation within this language often refers to Linux as a platform and that makes me want to try Linux out. I’ve never used it before and it would probably doing things the hard way but it’s still compelling.

FACT:
Linux is an operating system kernel that contains millions of lines of code, but it started out as a simple program Linus Torvalds used to explore the Intel 80386 chip. According to Larry Greenfield, one of Linus’s earlier projects was a program that would switch between printing AAAA and BBBB. This later evolved to Linux.

Sparad i Programmering, Python | Taggad: , , , , , , , | 2 Kommentarer »

Xmas heading for closure, welcome XML.

Skrivet av ratache den januari 3, 2011

I have been trying basic XML at a HTML-class I was attending a while back. It was a quite pleasant experience and now I´m about to get into a 10 week XML-basics at school as a kickstart into the future. Alongside this there will be another class teaching us the Python-language which I´m not so happy about. It seems to move away from the semantics I´m used to right now while using JScript, C and stuff like that. We´ll see what happends, I´ll try to churn out a bloggpost per week about school. That was no promise though.

Sparad i Programmering | Taggad: , , , , | Lämna en kommentar »

 
Följ

Få meddelanden om nya inlägg via e-post.