C-språket/H98/lect4.doc/GP /* program för beräkning av sin(x) ut Taylor-serien sin(x)=x-x3/3!+x5/5!-x7/7!+…. Med 10 decimalers noggrannhet */ #include <stdio.h> #include <math.h> #define eps 0.00000000001 int main() { float x,term,sum; int i; printf("Ge ett värde för x: "); scanf("%f",&x); term=x; sum=0 i=1; do { sum=sum+term; i=i+2; term = -term*x*x/(i*(i-1)); } while (fabs(term)>eps); printf("sin(%f) enligt eget program = %.10f\n",x,sum); printf("sin(%f) enligt standardfunktion = %.10f\n",x,sin(x)); } programmet körs Ge ett värde för x: 5 sin(5.000000) enligt eget program = -0.9589244127 sin(5.000000) enligt standardfunktion = -0.9589242747 Ge ett värde för x: 1.57 sin(1.570000) enligt eget program = 0.9999998212 sin(1.570000) enligt standardfunktion = 0.9999996830 OPERATORTILLDELNING ex. sum = sum + term; kan skrivas sum += term; med operatortilldelning C-språket/H98/lect4.doc/GP operatortilldelning variabel op= uttryck; betyder variabel = variabel op uttryck; /* op betecknar operator */ ex. prod *= 2; betyder samma som prod = prod*2; KOMMAUTTRYCK uttryck1,uttryck2,uttryck3,…. Ett antal uttryck åtskiljda med komma-tecken Ett kommauttryck kan användas, där ett uttryck kan användas. Deluttrycken uträknas i skriven ordning. Kommauttryckets värde = sista deluttryckets värde. ex. summera heltalen 1,2,3,..,100 for (sum=0,i=1;i<=100;i++) sum += i; detta är samma som for (sum=0,i=1;i<=100; sum += i,i++) ; /* en tom sats upprepas med for */ 2 kommauttryck i den sista for-satsen! 2 C-språket/H98/lect4.doc/GP 3 MERA OM DATATYPER HELTALSTYPER ( 7 olika heltalstype i C ) signed char unsigned char [signed] short [int] unsigned short [int] [signed] int unsigned [int] [signed] long [int] unsigned long [int] 8 bit 8 bit 16 bit 16 bit 16 bit 16 bit 32 bit 32 bit (Det som står inom hakparentes kan lämnas bort) Dessutom finns heltalstypen char, som vanligen betecknar signed char Bitarna anger hur många bit används för att representera ett heltal Heltalstypen behövs vid definition av heltalsvariabler. Vanligen används datatypen int för heltal. Med en heltalstyp kan även logiska värden representeras. Heltalsvärdet 0 betecknar FALSE och varje annat heltalsvärde betecknar TRUE Med en "signed" heltalstyp kan både positiva och negativa heltal representeras. Med en "unsigned" heltalstyp kan endast icke-negativa heltal representeras ex. int tal = -1; printf("%d är %u som unsigned\n",tal,(unsigned)tal); programmet körs -1 är 65535 som unsigned 100 är 100 som unsigned -100 är 65436 som unsigned