JavaRush /Java Blog /Random-TL /Mga karagdagang materyales para sa mga lektura CS50: Ling...
Masha
Antas

Mga karagdagang materyales para sa mga lektura CS50: Linggo 1 (mga lektura 3 at 4)

Nai-publish sa grupo
cs50 на русском дополнительные материалы Linggo 1 mga gawain

Mga layunin sa unang linggo

  • Maging pamilyar sa mga pangunahing utos ng Linux
  • Alamin ang basic C syntax at lutasin ang ilang problema
  • Simulan ang pag-iisip nang mas malinaw =)
IDE CS50
Upang makumpleto ang mga gawain, nag-aalok ang CS50 ng IDE (Integrated Development Environment) sa cloud. Para magamit ito, gumawa ng account sa edX platform at magparehistro para sa orihinal na kurso . Pagkatapos nito:
1. Pumunta sa cs50.io, piliin ang edX mula sa listahan, ipasok ang iyong login at password, i-click ang Isumite 2. Ipasok ang impormasyon ng iyong edX account, i-click ang Return to ID.CS50.NET . cs50.io 3. Naghihintay kami: nililikha ang iyong virtual na espasyo. виртуальное пространство cs50 4. Tapos na! cs50 ide
Command line at paglulunsad ng CS50 IDE
Sa ibaba ng CS50 IDE window, sa Terminal tab, mayroong terminal window o command line panel. Maaari kang magpasok ng mga string command dito: maaari mong gawin ang parehong bagay tulad ng sa window interface, halimbawa, maglunsad ng mga application, magtanggal at lumikha ng mga file, mag-install ng software. Kung hindi ka pa nakatrabaho sa command line, malamang na mahirap ang pamamaraang ito: kailangan mong tandaan ang mga command at i-type ang mga ito sa halip na mag-click sa mga icon at button. Sa ilang lawak ito ay totoo, pagkatapos ay naimbento ang interface ng window. Gayunpaman, available ang command line sa lahat ng operating system at gusto ito ng mga admin. At lahat dahil minsan hindi ka mabubuhay kung wala ito. Sa window ng IDE sa terminal, makikita mo ang isang mahiwagang linya: username:~/workspace $ bilang kapalit ng "username" magkakaroon ng awtomatikong nabuong pangalan (batay sa iyong data ng pagpaparehistro). Mag-click sa terminal window, i-type ang: update50 Pindutin ang Enter. Hinihiling ng command sa system na mag-update. Makakakita ka ng mga linyang lilitaw sa terminal na naglalarawan sa proseso ng pag-install. Huwag isara ang CS50 IDE hanggang sa makita mong kumpleto ang Update! . Pagkatapos nito, lalabas muli ang default na linya, ang may pangalan mo.
Nagtatrabaho sa IDE
Создадим папку, где будут лежать ваши файлы. Кликните правой кнопкой мыши по ~/workspace (ваш корневой каталог) в левом верхнем углу CS50 IDE, выберите New Folder. Переименуйте папку в pset1(если вы ошиблись в имени, щелкните по вашей папке правой кнопкой и выберите Rename). cs50 ide rename folder Затем кликаем правой кнопкой по папке pset1, выбираем New File. Появляется файл Untilted, переименуем его в hello.txt. cs50 ide Дважды кликнете по hello.txt. В CS50 IDE справа вы увидите новую вкладку и поле, где можно печатать. Если вы это сделали, обратите внимание на появившуюся перед названием file на вкладке символ звездочки (*) — индикатор того, что в файл были внесены, но не сохранены, изменения. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 1 Сохраните файл, зайдя в меню *File > Save or с помощью клавиш command + S (на машинах Apple) or Ctrl + S (на ПК). Звездочка должна исчезнуть. Давайте проверим, лежит ли файл там, где должен. Сделаем это с помощью командной строки, пора к ней привыкать:). Как и ранее, активная строка в терминале выглядит так: username:~/workspace $ Workspace — текущая рабочая директория (та, что открыта в рабочей среде). Тильда (~) указывает на корневую директорию (в ней лежит workspace). Обратите внимание, что workspace в терминале — то же самое, что и иконка ~/workspace в левом верхнем углу CS50 IDE. Давайте попрактикуемся. Кликнете в Howом-либо месте терминала и наберите в командной строке ls и нажмите Enter. Эти две строчные буквы — сокращение от "list" («список») — вызовут список файлов и папок, находящихся внутри текущей директории workspace. Среди всего прочего вы увидите и созданную вами pset1! Теперь откроем нашу папку с помощью команды. Набираем cd pset1 or многословнее: cd ~/workspace/pset1 Команда cd (change directory) меняет активную директорию, в нашем случае на ~/pset1 Активная строка поменялась на username:~/workspace/pset1 $ Это подтверждает, что вы теперь находитесь в директории ~/workspace/pset1 (строка расшифровывается How «я нахожусь в pset1 внутри папки workspace, которая лежит в корневой папке, обозначаемой ~"). Теперь наберите ls Вы увидите файл hello.txt! Если вы кликнете по названию в терминале, ничего не произойдет: это текст, и он не выдает активной ссылки, но подтверждает, что hello.txt находится там, где должен. Наберите cd Если вы пишете только саму команду cd, но не подставляете аргумент (то есть Name папки, в которую ей нужно перейти), она вернет вас в корневую директорию по умолчанию. Таким образом, в активной строке вы увидите следующую картину: username:~ $ Whatбы вернуться назад в папку pset1, наберите cd workspace и нажмите Enter. Затем cd pset1 и снова Enter. Также вы можете заменить эти две команды одной, подлиннее: cd workspace/pset1
Hello, C!
Наконец-то эта minutesа наступила! Начинаем программировать. Внутри нашей папки pset1 в IDE создаем файл под названием hello.c (расширение обязательно), открываем в новой вкладке (думаем, вы помните, How это делать из предыдущего параграфа). ВАЖНО! Буквы должны быть строчными, Linux чувствителен к регистру. Hello.c и hello.c — разные файлы. В правой части окна CS50 IDE набираем точь-в-точь такой текст, How вы видите ниже. Да, его можно скопировать, но полезнее — набрать. #include int main(void) { printf("hello, world\n"); } Буквы разного цвета потому, что в CS50 IDE работает подсветка синтаксиса. Она выделяет цветом блоки текста для лучшей читаемости. В самом файле цвета не сохраняются, они видны только в IDE. Если они есть, значит, IDE понимает C, а о том, что это именно C, вы сообщor в расширении file (*.c). Если бы вы назвали тот же файл hello.txt, текст был бы одноцветный. Убедитесь, что вы напечатали всё ровно так, How в примере, иначе поймаете первый баг=). Снова обращаем ваше внимание на разницу между строчными и прописными буквами. Символ \n переводит курсор на следующую строку, и введенный следом текст не слипнется с выведенным программой. Ах да, и о точке с запятой (;) не забывайте. Это важный разделитель операторов программы, C без них работать не захочет. Нажмите File > Save (or комбинацию command- or Ctrl-s). Заметor, что звездочка перед названием file исчезла? Если да, значит изменения сохранorсь. Кликните в любом месте по терминальному окну под вашим codeом и убедитесь, что вы внутри ~/workspace/pset1 (если это не так, кликните cd и нажмите Enter, затем cd workspace/pset1 и снова Enter). Ваша активная строка должна выглядеть так: username:~/workspace/pset1 $ Убедимся, что файл hello.c находится ровно там, где должен. Набираем ls и жмем Enter. Вы видите и hello.c? Если нет, вернитесь на пару шагов назад и создайте файл в нужной директории еще раз. … Теперь наступает торжественный момент: скрещиваем пальцы и… печатаем: make hello и скрещенными же пальцами жмем Enter. Именно hello, не hello.c. Если все, что вы после этого действа перед собой увидели — вторая активная строка, которая выглядит точь-в-точь, How предыдущая, значит, всё работает! Ваш исходный code был переведен в машинный or an objectный code (то есть, в последовательности 0 и 1). Теперь этот code можно выполнить (то есть запустить программу!). Для этого печатаем: ./hello в командной строке, жмем Enter. Если вы не меняли заключенный между "" текст, ниже вы увидите: hello, world Если вы теперь наберете команду ls и нажмете Enter, вы увидите новый файл hello, наряду с hello.c и hello.txt. У первого hello, должна быть звездочка после имени, которая сигнализирует о том, что это исполняемый файл, то есть такой, с помощью которого вы запускаете программу.
Баги?
Если после команды make, вы увидели ошибки, пришло время первой отладки! Надписи вроде «expected declaration» означают, что вы где-то допустor опечатку. Сверьте code с приведенным выше еще раз, только будьте очень внимательны ко всем деталям. Внимание! Описания ошибок выдаются на английском. Если непонятно, воспользуйтесь поисковиком, Google Translate or задайте вопрос в комментарии. Как только вы исправor ошибки, не забудьте сохранить ваш code с помощью File > Save (or command- or Ctrl-s), снова щелкнете по внутренней части терминального окна и наберите make hello (Только предварительно убедитесь, что вы находитесь в директории ~/workspace/pset1). Если больше ошибок нет, запускайте программу, набирая команду ./hello По идее перед вами должна возникнуть заветная фраза, заключенная в кавычки оператора printf, который командует «напечатай». Если окно терминала кажется вам слишком маленьким, кликните по иконке заключенного в окружности плюса (+), расположенной рядом с hello.c.
Проверка на правильность
В CS50 IDE встроено приложение check50. Оно работает из командной строки и проверяет некоторые из программ на наличие ошибок. Если вы еще не там, перейдите в директорию ~/workspace/pset1 выполнив в терминале команду: cd ~/workspace/pset1 Теперь выполните ls вы увидите, по меньшей мере, файл hello.c. Убедитесь, что название file выглядит именно так, а не, скажем, Hello.c or hello.C. Переименовать файл можно, выполнив команду mv source destination source — текущее file name, destination — новое file name. mv (от англ. move) — утorта для переименования. Если вы случайно назвали файл Hello.c, наберите строку: mv Hello.c hello.c Убедившись, что файл точно называется hello.c вызовем проверочную программу check50. Обратите внимание, что 2015.fall.pset1.hello —уникальный идентификатор для задачки “hello world”. check50 2015.fall.pset1.hello hello.c Если программа выполнена правильно, вы увидите: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 2 Зеленые смайлики означают, что тест пройден. Также можете видеть URL внизу вывода check50, но он нужен только сотрудникам (впрочем, если интересно, заходите!). check50 запускает 3 теста: существует ли файл hello.c, компorруется ли hello.c и выдает ли приложение строку, в которой написан текст "hello, world\n". Если вы увидите грустные красные смайлики, значит у вас баг. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down Здесь check50 не нашел hello.c, и красный смайлик сигнализирует, что вы либо ошиблись в имени, либо загрузor файл не туда. Жёлтые «нейтральные» смайлы означают, что тесты не запустorсь. И откуда им запуститься, если программа не нашла файл, который нужно проверить? Вот еще один вариант, который выскочит в том случае, если вы меняли текст, который должна вывести функция printf(): :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 сообщает, что ожидалась строка hello, world\n, но появилось что-то другое. check50 не считает баллы за прохождение курса, но проверяет, отличается ли результат выполнения задания от ожидаемого. И позволяет вам убедиться в этом прежде, чем подтвердить правильность задачи внутри курса (How это сделать, мы расскажем позднее).
Основы С: сравнение со Scratch
Hello world на Scratch и C:
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 4 представляет функцию, которая печатает «слова» спрайта в облачке комикса в Scratch, в C есть функция printf, которая делает то же самое, только без мультиков.
  • main — по-английски — «главная». Точка входа в программу. То же самое, что Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 5.
Бесконечный цикл
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 6 в переводе на C: while (true) { printf("hello, world\n"); } while (true) делает то же самое: цикл продолжает свою работу пока (while) meaning true (булевское выражение «правда» or «единичка»). Такой цикл будет выполнятся бесконечно.
Цикл, выводящий фразу на экран 10 раз
Scratch Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 7 С for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i — переменная-счетчик, её meaning меняет оператор инкремента i++, увеличивая его на 1 при каждом витке цикла. Изначально i присваивается meaning 0 с помощью оператора присваивания =. Внимание! Как и в Java, в C equalsство обозначается ==, оператор присваивания =. То есть, a = 5 означает, что переменной a присвоor meaning 5, а (a= =5) означает булонское выражение (если а равно 5, то выражение правдиво, если не равно, то ложно). Цикл остановится, когда i «дорастет» до 9. Несложно посчитать, цикл выполнится 10 раз. Таким образом, если вам нужно повторить что-то определенное количество раз, в C вы задаете цикл for (int i = 0; i < 10; i++). Еще один пример: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 8 И то же самое в переводе на C: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • counter сохраняет meaning в C и Scratch. В С задаем int counter = 0 instead of Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • Помечаем тип переменной How int для уточнения: i — целое число (от англ. integer, целый).
  • Значок %i, который мы используем в printf в четвертой строке — заполнитель, говорящий о том, что мы должны напечатать десятичное целое, точно так же, мы говорим printf заменить заполнитель на meaning, которое принимает переменная counter.
Булевы выражения
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 Это то же самое, что (x < y) ((x < y) && (y < z))
Условия
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 И «сишный» эквивалент: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 А что насчет первой непонятной фразы? #include Об этом позднее, в разделе «Библиотеки»
Условные операторы
Эти ребята проверяют, выполняется ли некоторое condition (логическое выражение, вопрос, на который можно ответить только «да» or «нет»), и если это так, то исполняют некоторые действия, привязанные к этому условию. Пример из жизни: если пошел дождь (при условии, что пошел дождь) и я на улице (я во время дождя нахожусь на улице), я открываю зонтик. if (condition) { //исполнить, если meaning истинно } Усложненный вариант: если condition выполняется, сделать действие, если нет — сделать другое действие. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } Пример: если тебе больше 18, одобрить доступ. Если меньше, не одобрить. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
Оператор выбора
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } Пример: если n = 50, напечатать "CS50 is Introduction to Computer Science I", если n = 51, напечатать "CS51 is Introduction to Computer Science II", иначе — напечатать "Sorry, I'm not familiar with that class!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
Циклы
while: проверяет condition, затем исполняет действие, пока condition истинно while (condition) { // выполнять, пока истина } do/while отличается тем, что первый раз он исполняет действие без проверки условия, а затем только проверяет его. Если condition выполняется, он повторяет действие, пока condition не станет ложью. do { ) // выполнять, пока истина } while (condition); Цикл for повторяет действие заданное количество раз Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 Циклы можно вкладывать один в другой. В таком случае на каждом шаге внешнего цикла будет fully выполнятся внутренний цикл. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
Основные типы данных в C
основные типы данных в C
Библиотеки С
Вы, наверное, уже задались вопросом, что означает первая строка программы на C: #include Какова её роль и можно ли обойтись без неё? Строка #include делает очень важную вещь: она подключает библиотеки уже написанного codeа к вашей программе. Name подключенной библиотеки идет в угловых скобках (<>) и носит расширение (.h). Если бы не было библиотек, то любое, самое elementрное действие, пришлось бы каждый раз описывать снова и снова. Подключенная нами библиотека содержит функции ввода/вывода. Именно она позволяет нам использовать функцию printf () для вывода на экран. То есть, если бы мы не написали строку #include , но оставor в теле программы функцию printf (), при попытке запуска мы бы получor ошибку! Потому что без этой библиотеки компилятор не знает, что такое printf (). Есть библиотеки стандартные, они составляют словарный запас языка. Функция printf() не встроена в компьютер, но входит в стандартную библиотеку языка C. То есть некий программист ранее написал её и включил в библиотеку. Теперь другие могут ею пользоваться, не изобретая велосипед. Whatбы компилятор её «понял», подключаем . Есть и другие стандартные библиотеки, используемые в процессе прохождения CS50. Например, библиотека строк, где описаны операции со строками (определение длины, сложение и прочее). По сравнению с другими популярными языками программирования, количество стандартных библиотек C очень невелико. Но есть самописные, чаще всего — более узкоспециализированные библиотеки. Так, библиотека была создана специально для студентов CS50. Самое время сделать важное замечание: помимо написания программ, решения задач с помощью собственного codeа, хороший разработчик обладает еще одним важным навыком: знанием инструментов, уже написанных и умением использовать их (чужие библиотеки), чтобы не тратить время на изобретение «колеса». Так, если вы находитесь в процессе решения нудной or сложной задачи, которая при этом кажется довольно распространенной, приучайтесь задавать себе вопрос: «а не написал ли её решение кто-нибудь другой?» Велики шансы, что так оно и есть, и вы можете найти эту функцию в существующей библиотеке. В технических терминах, библиотека — это двоичный файл, полученный путем объединения в коллекцию an objectных файлов, используя компоновщик. Объектные файлы — это те файлы с расширением (*.o), которые вы получаете при компиляции приложений.
Структура библиотек C
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 17
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION