Presentation laddar. Vänta.

Presentation laddar. Vänta.

F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås.

Liknande presentationer


En presentation över ämnet: "F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås."— Presentationens avskrift:

1 F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås med index

2 F5 - Fält & strängar 2 Programmeringsteknik, 4p vt-00 exempel /* * Exempel på enkel heltalslista */ #include int main(void) { int res[10]; /* OBS! index = 0..9 */ int i; for (i=0;i<=9;i++) { res[i] = 10-i; printf("res[%d]=%d\n",i,res[i]); } return 0; } Antal element

3 F5 - Fält & strängar 3 Programmeringsteknik, 4p vt-00 Körning

4 F5 - Fält & strängar 4 Programmeringsteknik, 4p vt-00 Initialisering Elementen i fältet kan ges värden vid deklarationen int res[10]={10,9,8,7,6,5,4,3,2,1}; Om listan är kortare än det angivna antalet, blir resterande element 0 int res[10]={0}; initialiserar alla el. till 0 Det bästa är att själv explicit initialisera alla element for (i=0;i<=9;i++) res[i]=0; /* Initialisering */ Antalet kan utelämnas om el. initialiseras med lista int res[]={10,9,8,7}; /* 4 el. index 0..3 */

5 F5 - Fält & strängar 5 Programmeringsteknik, 4p vt-00 Indexering fältnamn[uttryck] Där uttrycket kan evalueras till integral type (s.111), dvs någon heltalstyp eller char. Viktigt att hålla sig inom indexgränserna (0..antal el.-1) MYCKET vanligt programmeringsfel!

6 F5 - Fält & strängar 6 Programmeringsteknik, 4p vt-00 Sortera en lista Lista av n st. osorterade heltal lista 1, lista 2, lista 3, …, lista n ordnas i stigande följd. Algoritm BubbelSort(lista,n) bytt = true sist = n repeat for i=1 to sist-1 do begin if lista i > lista i+1 then begin byt plats bytt = true end sist = sist - 1 until not bytt

7 F5 - Fält & strängar 7 Programmeringsteknik, 4p vt-00 Kod do { bytt = 0; /* logiskt false */ for (i=0;i <= sist-1; i++) { if (lista[i] > lista[i+1]) { temp = lista[i]; lista[i] = lista[i+1]; lista[i+1] = temp; bytt = 1; /* logiskt true */ } sist = sist - 1; }while (bytt);

8 F5 - Fält & strängar 8 Programmeringsteknik, 4p vt-00 Körning ----- Listan före sortering ----- 14 0 4 2 -5 8 6 7 3 ------- Listan sorterad -------- -5 0 2 3 4 6 7 8 14

9 F5 - Fält & strängar 9 Programmeringsteknik, 4p vt-00 Spårad körning ------ Listan före sortering ----- 14 0 4 2 8 6 7 3 -5 ------------- varv 1 ------------- 0 14 4 2 8 6 7 3 -5 <-- 0 och 1 bytt 0 4 14 2 8 6 7 3 -5 <-- 1 och 2 bytt 0 4 2 14 8 6 7 3 -5 <-- 2 och 3 bytt 0 4 2 8 14 6 7 3 -5 <-- 3 och 4 bytt 0 4 2 8 6 14 7 3 -5 <-- 4 och 5 bytt 0 4 2 8 6 7 14 3 -5 <-- 5 och 6 bytt 0 4 2 8 6 7 3 14 -5 <-- 6 och 7 bytt 0 4 2 8 6 7 3 -5 14 <-- 7 och 8 bytt

10 F5 - Fält & strängar 10 Programmeringsteknik, 4p vt-00 …varv 2 0 4 2 8 6 7 3 -5 14 <-- 7 och 8 bytt ------------- varv 2 ------------- 0 2 4 8 6 7 3 -5 14 <-- 1 och 2 bytt 0 2 4 6 8 7 3 -5 14 <-- 3 och 4 bytt 0 2 4 6 7 8 3 -5 14 <-- 4 och 5 bytt 0 2 4 6 7 3 8 -5 14 <-- 5 och 6 bytt 0 2 4 6 7 3 -5 8 14 <-- 6 och 7 bytt

11 F5 - Fält & strängar 11 Programmeringsteknik, 4p vt-00 Textsträngar Ett fält av tecken Har enkel initialisering char kursNamn[]= ”Programmeringsteknik”; samma som char kursNamn[]= {’P’,’r’,’o’,’g’,’r’,’a’,’m’,’m’,’e’,’r’, ’i’,’n’,’g’,’s’,’t’,’e’,’k’,’n’,’i’,’k’,’\0’};

12 F5 - Fält & strängar 12 Programmeringsteknik, 4p vt-00 Textsträngar void exempel1(void) { char strng[10]; /* OBS! index = 0..9 */ int i; printf("--------- exempel 1 ---------\n\n"); printf("Mata in en sträng : "); scanf("%s", strng); /* Se scanf s.500 */ printf("-->%s<--\n", strng); printf("-- konverteringstecknet %s --\n\n"); }/* exempel1 */

13 F5 - Fält & strängar 13 Programmeringsteknik, 4p vt-00 Körning ----------- exempel 1 ----------- Mata in en sträng : så här -->så<-- ---- konverteringstecknet ----

14 F5 - Fält & strängar 14 Programmeringsteknik, 4p vt-00 Mera om textsträngar I C avslutas en sträng alltid med tecknet ’\0’ null-tecknet/end-of-string Se det som att strängar har variabel längd med avslutas med ett speciellt tecken. Det utrymme som reserveras måste inkludera en plats för null-tecknet ”mars” är en sträng av längd 5 ”tomma strängen” ”” är en sträng av längd 1

15 F5 - Fält & strängar 15 Programmeringsteknik, 4p vt-00 Strängfunktioner strcat(sträng1, sträng2) konkatenerar två strängar, resultaterande sträng returneras (även i sträng1) strcmp(sträng1, sträng2) jämförelse, ”logiskt” värde returneras (-,0,+) om sträng1 är lexikografiskt sträng2 strcpy(sträng1, sträng2) kopierar sträng2 till sträng1, som skrivs över, (en pekare till) resultatet returneras strlen(sträng) antalet tecken före \0 returneras

16 F5 - Fält & strängar 16 Programmeringsteknik, 4p vt-00 strcat void exempel2(void) { char str1[] = "Första strängen"; char str2[] = "Andra!"; printf("--------- exempel 2 ---------\n\n"); printf("-->%s<--\n",strcat(str1,str2)); printf("------- konkatenering -------\n\n"); }/* exempel2 */

17 F5 - Fält & strängar 17 Programmeringsteknik, 4p vt-00 Körning ----------- exempel 2 ----------- -->Första strängenAndra!<-- --------- konkatenering ---------

18 F5 - Fält & strängar 18 Programmeringsteknik, 4p vt-00 strcpy void exempel3(void) { char str1[] = "Första strängen"; char str2[] = "Andra!"; printf("--------- exempel 3 ---------\n\n"); printf("-->%s<--\n", strcpy(str1,str2)); printf("------ strängkopiering ------\n\n"); }/* exempel3 */

19 F5 - Fält & strängar 19 Programmeringsteknik, 4p vt-00 Körning ----------- exempel 3 ----------- -->Andra!<-- -------- strängkopiering --------

20 F5 - Fält & strängar 20 Programmeringsteknik, 4p vt-00 strlen void exempel4(void) { char str1[] = ""; /* Tomma strängen */ char str2[] = " "; /* ett blanktecken bara */ int lgd; printf("----------- exempel 4 -----------\n\n"); lgd = strlen(str1); printf("Tomma strängens längd = %i\n",lgd); printf("Sträng med bara ett blanktecken har längden = %i\n",strlen(str2)); printf("-------- stränglängd --------\n\n"); }/* exempel4 */

21 F5 - Fält & strängar 21 Programmeringsteknik, 4p vt-00 Körning ----------- exempel 4 ----------- Tomma strängens längd = 0 Sträng med bara ett blanktecken har längden = 1 -------- stränglängd --------

22 F5 - Fält & strängar 22 Programmeringsteknik, 4p vt-00 strcmp void exempel5(void) { char str1[] = "sven svensson"; /* Liten */ char str2[] = "Sven Svensson"; /* Stor */ printf("--------- exempel 5 ---------\n\n"); if (strcmp(str1,str2)) printf("Lika, ty %s = %s\n",str1,str2); else if (strcmp(str1,str2) < 0) printf("%s < %s\n",str1,str2); else if (strcmp(str1,str2) > 0) printf("%s > %s\n",str1,str2); else printf("Hit kan man inte komma!\n"); printf("----- strängjämförelser -----\n\n"); }/* exempel5 */

23 F5 - Fält & strängar 23 Programmeringsteknik, 4p vt-00 Körning ----------- exempel 5 ----------- Lika, ty sven svensson = Sven Svensson -------- strängjämförelser --------


Ladda ner ppt "F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås."

Liknande presentationer


Google-annonser