1 00:00:00,000 --> 00:00:00,720 2 00:00:00,720 --> 00:00:03,190 >> Девід Дж. Малан: Припустимо, що я хотів би реалізувати програму, яка запитує 3 00:00:03,190 --> 00:00:06,650 користувач на рядок, а потім переходить капіталізувати свій внесок, 4 00:00:06,650 --> 00:00:09,790 перетворенні будь-яких малих літер що вони друкують у верхній регістр. 5 00:00:09,790 --> 00:00:11,770 Ну, давайте йти вперед і реалізувати цю програму. 6 00:00:11,770 --> 00:00:18,760 >> Давайте спочатку включають cs50.h потім по включають stdio.h. 7 00:00:18,760 --> 00:00:23,990 І так, що ми можемо використовувати STRLEN, давайте включимо string.h. 8 00:00:23,990 --> 00:00:29,860 >> Давайте наступне оголосити головний як десяткового головний порожнечу і давайте тепер перейдемо до підкажуть 9 00:00:29,860 --> 00:00:31,600 користувач для рядка. 10 00:00:31,600 --> 00:00:34,840 Printf, давайте спонукати їх для деяких вхідних сигналів. 11 00:00:34,840 --> 00:00:36,460 Тепер давайте оголосити рядок - 12 00:00:36,460 --> 00:00:37,630 ми будемо називати це з - 13 00:00:37,630 --> 00:00:44,010 і зберігати в ньому результат виклику бібліотека CS50 функція GetString. 14 00:00:44,010 --> 00:00:48,850 >> Тепер займемося перебрати кожен з персонажів с, С капіталізацією 15 00:00:48,850 --> 00:00:50,650 будь-які малі літери, які ми бачимо. 16 00:00:50,650 --> 00:00:53,630 Для внутр, я отримую 0. 17 00:00:53,630 --> 00:00:58,780 Давайте також оголосити п як рівна довжина рядка з тим щоб ми могли 18 00:00:58,780 --> 00:01:03,590 НЕ перебрати з I аж до п, Довжина з, і на кожному 19 00:01:03,590 --> 00:01:05,760 Крок ітерації я. 20 00:01:05,760 --> 00:01:09,970 >> А потім всередині цієї петлі, давайте Перша перевірка поточний лист - 21 00:01:09,970 --> 00:01:12,270 г-я буква з, так би мовити - 22 00:01:12,270 --> 00:01:14,170 рядкова буква. 23 00:01:14,170 --> 00:01:23,090 Якщо з кронштейн я більше або дорівнює в нижній регістр, і це менше, 24 00:01:23,090 --> 00:01:26,900 або дорівнює рядкової г - 25 00:01:26,900 --> 00:01:30,860 Тепер, якщо ми хочемо перетворити в нижній регістр Лист у верхній регістр, нагадаємо спочатку, що 26 00:01:30,860 --> 00:01:35,810 в ASCII рядкові 97 і у верхньому регістрі 65. 27 00:01:35,810 --> 00:01:41,020 Тим часом, в нижньому регістрі б 98, і у верхньому регістрі B 66. 28 00:01:41,020 --> 00:01:44,180 >> Якщо ми будемо продовжувати дивитися на цій моделі, ми побачимо, що в нижньому регістрі 29 00:01:44,180 --> 00:01:49,240 листи завжди 32 значення вище ніж великими літерами. 30 00:01:49,240 --> 00:01:53,490 Так що якщо ми хочемо конвертувати з нижнього регістру у верхній регістр, він повинен 31 00:01:53,490 --> 00:01:57,210 вистачає, дійсно, відняти 32 з користувальницької введення. 32 00:01:57,210 --> 00:02:01,330 Або в більш загальному, просто відняти, що Різниця між рядкової а і а 33 00:02:01,330 --> 00:02:02,310 капітал А. 34 00:02:02,310 --> 00:02:03,410 >> Як виразити це? 35 00:02:03,410 --> 00:02:04,640 Ну, давайте зробимо це в коді. 36 00:02:04,640 --> 00:02:09,960 Printf, цитую, кінець цитати "% С" для друку поточний символ, а потім 37 00:02:09,960 --> 00:02:18,500 друк все це в и кронштейна Я мінус результат того, в нижньому регістрі A 38 00:02:18,500 --> 00:02:22,660 мінус верхній регістр з комою. 39 00:02:22,660 --> 00:02:27,010 Іншими словами, цей дужках вираз, трохи мінус великий, це 40 00:02:27,010 --> 00:02:29,360 збирається повернутися до нас в кінець день 32. 41 00:02:29,360 --> 00:02:31,230 Але у мене немає, щоб пам'ятати що це 32. 42 00:02:31,230 --> 00:02:34,150 Я можу дозволити комп'ютер, щоб з'ясувати, в чому різниця між малими літерами 43 00:02:34,150 --> 00:02:35,990 і капіталу є. 44 00:02:35,990 --> 00:02:39,610 >> Тим часом, як тільки я знаю, що різниця, Я можу відняти його з з 45 00:02:39,610 --> 00:02:43,710 Кронштейн я, який відбудеться в чому імовірно мала літера в 46 00:02:43,710 --> 00:02:48,100 Менше значення, а саме значення, карти на заголовній еквіваленті. 47 00:02:48,100 --> 00:02:51,240 Давайте тепер зберегти, скомпілювати, і запустити цю програму. 48 00:02:51,240 --> 00:02:57,760 Зробити вигоду точка слеш капіталізуються. 49 00:02:57,760 --> 00:03:01,290 І мій внесок буде привіт. 50 00:03:01,290 --> 00:03:02,920 І там у нас є, привіт. 51 00:03:02,920 --> 00:03:05,570 >> Тепер мій запит, за загальним визнанням, є трохи потворні, тому що ми 52 00:03:05,570 --> 00:03:07,810 опущений один біт друку. 53 00:03:07,810 --> 00:03:09,370 І давайте повернемося і додати, що. 54 00:03:09,370 --> 00:03:12,890 У самому низу цієї програми, Я дуже просто, і в значній мірі для 55 00:03:12,890 --> 00:03:18,440 естетичне призначення, збираюся додати Printf, цитата, кінець цитати зворотний слеш н. 56 00:03:18,440 --> 00:03:22,330 Давайте збережіть цей файл, перекомпілювати, повтор. 57 00:03:22,330 --> 00:03:28,090 >> Зробити вигоду, точка слеш вигоду. 58 00:03:28,090 --> 00:03:32,540 Знову ж, для введення я приведу "привіт" в нижньому регістрі і тепер натисніть Введення, 59 00:03:32,540 --> 00:03:34,550 і "привіт", набагато більш акуратно надрукований. 60 00:03:34,550 --> 00:03:36,432