1 00:00:00,000 --> 00:00:00,720 2 00:00:00,720 --> 00:00:03,190 >> DAVID J. Malan: Stel dat ik zou willen de uitvoering van een programma dat vraagt 3 00:00:03,190 --> 00:00:06,650 de gebruiker voor een string en dan verder om hun inbreng te kapitaliseren, 4 00:00:06,650 --> 00:00:09,790 het omzetten van een kleine letters dat ze typt in hoofdletters. 5 00:00:09,790 --> 00:00:11,770 Nou, laten we verder gaan en uitvoering van dat programma. 6 00:00:11,770 --> 00:00:18,760 >> Laten we eerst onder cs50.h gevolgd door onder andere stdio.h. 7 00:00:18,760 --> 00:00:23,990 En zodat we kunnen strlen gebruiken, laten we onder andere string.h. 8 00:00:23,990 --> 00:00:29,860 >> Laten we het volgende verklaren hoofd als int main nietig en laten we nu overgaan tot vragen 9 00:00:29,860 --> 00:00:31,600 de gebruiker voor een string. 10 00:00:31,600 --> 00:00:34,840 Printf, laten we vragen hen voor wat input. 11 00:00:34,840 --> 00:00:36,460 Nu laten we verklaren een string - 12 00:00:36,460 --> 00:00:37,630 we noemen het s - 13 00:00:37,630 --> 00:00:44,010 en opslaan in het resultaat van het aanroepen de CS50 bibliotheekfunctie GetString. 14 00:00:44,010 --> 00:00:48,850 >> Laten we nu overgaan tot itereren over elk van de personages in s, kapitaliseren 15 00:00:48,850 --> 00:00:50,650 elke kleine letters die we zien. 16 00:00:50,650 --> 00:00:53,630 Voor int, krijg ik 0. 17 00:00:53,630 --> 00:00:58,780 Laten we ook verklaren n als gelijk aan de string lengte van jaren, zodat we kunnen 18 00:00:58,780 --> 00:01:03,590 herhalen van i tot n, de lengte van s en op elke 19 00:01:03,590 --> 00:01:05,760 iteratie increment i. 20 00:01:05,760 --> 00:01:09,970 >> En dan de binnenkant van deze lus, laten we eerste controle is de huidige letter - 21 00:01:09,970 --> 00:01:12,270 de i-de brief van s, om zo te zeggen - 22 00:01:12,270 --> 00:01:14,170 een kleine letter. 23 00:01:14,170 --> 00:01:23,090 Als s beugel i groter of gelijk naar kleine letters a, en het is minder 24 00:01:23,090 --> 00:01:26,900 hoogste kleine z - 25 00:01:26,900 --> 00:01:30,860 Nu willen we een kleine letter te zetten brief in hoofdletters, herinneren eerst dat 26 00:01:30,860 --> 00:01:35,810 in ASCII een kleine letter a is 97 en een hoofdletter A is 65. 27 00:01:35,810 --> 00:01:41,020 Ondertussen, een kleine letter b is 98, en een hoofdletter B is 66. 28 00:01:41,020 --> 00:01:44,180 >> Als we blijven kijken naar dat patroon, we zullen zien dat de kleine letters 29 00:01:44,180 --> 00:01:49,240 letters zijn altijd 32 waarden hoger dan de hoofdletters. 30 00:01:49,240 --> 00:01:53,490 Dus als we willen converteren van kleine letters naar hoofdletters, het hoort 31 00:01:53,490 --> 00:01:57,210 volstaan, echt, voor aftrekken 32 van input van de gebruiker. 32 00:01:57,210 --> 00:02:01,330 Of meer in het algemeen alleen aftrekken dat verschil tussen een kleine en een een 33 00:02:01,330 --> 00:02:02,310 hoofdletter A. 34 00:02:02,310 --> 00:02:03,410 >> Hoe uit te drukken dat? 35 00:02:03,410 --> 00:02:04,640 Nou, laten we het doen in de code. 36 00:02:04,640 --> 00:02:09,960 Printf, citaat, unquote "% c" om af te drukken het huidige karakter, gevolgd door 37 00:02:09,960 --> 00:02:18,500 drukken wat er in s beugel i minus het resultaat van het doen van een kleine 38 00:02:18,500 --> 00:02:22,660 minus hoofdletters A puntkomma. 39 00:02:22,660 --> 00:02:27,010 Met andere woorden, haakjes expressie, weinig een min grote A, is 40 00:02:27,010 --> 00:02:29,360 gaan om terug te keren naar ons op het einde van de dag 32. 41 00:02:29,360 --> 00:02:31,230 Maar ik denk niet hoeft te onthouden dat het 32. 42 00:02:31,230 --> 00:02:34,150 Ik kan zorgen dat de computer te achterhalen wat het verschil tussen kleine letters 43 00:02:34,150 --> 00:02:35,990 een en kapitaal A is. 44 00:02:35,990 --> 00:02:39,610 >> Ondertussen eens, ik weet dat verschil, Ik kan het aftrekken van s 45 00:02:39,610 --> 00:02:43,710 beugel i, die zal nemen wat is vermoedelijk een kleine letter een 46 00:02:43,710 --> 00:02:48,100 lagere waarde, namelijk een waarde die kaarten op een hoofdletter equivalent. 47 00:02:48,100 --> 00:02:51,240 Laten we nu nog redden, compileren, en uitvoeren van deze programma. 48 00:02:51,240 --> 00:02:57,760 Maak kapitaliseren dot slash gekapitaliseerd. 49 00:02:57,760 --> 00:03:01,290 En mijn inbreng zal zijn hello. 50 00:03:01,290 --> 00:03:02,920 En daar hebben we, hallo. 51 00:03:02,920 --> 00:03:05,570 >> Nu is mijn prompt, toegegeven, is een beetje lelijk, want we hebben 52 00:03:05,570 --> 00:03:07,810 weggelaten een beetje drukken. 53 00:03:07,810 --> 00:03:09,370 En laten we terug gaan en toevoegen dat. 54 00:03:09,370 --> 00:03:12,890 Aan de onderkant van dit programma, Ik ben erg eenvoudig, en grotendeels voor 55 00:03:12,890 --> 00:03:18,440 esthetisch doel, naar printf voegen, citaat, unquote backslash n. 56 00:03:18,440 --> 00:03:22,330 Laten we het opnieuw opslaan van dit bestand opnieuw compileren, herhaling. 57 00:03:22,330 --> 00:03:28,090 >> Maak kapitaliseren, dot slash kapitaliseren. 58 00:03:28,090 --> 00:03:32,540 Nogmaals, voor de input Ik zal zorgen voor "hello" in alle kleine letters en nu druk op Enter, 59 00:03:32,540 --> 00:03:34,550 en "hello", veel meer netjes afgedrukt. 60 00:03:34,550 --> 00:03:36,432