JavaRush /Java блог /Random UA /Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4...
Masha
41 рівень

Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4)

Стаття з групи Random UA
cs50 російською додаткові матеріали Завдання 1 тижня

Цілі першого тижня

  • Ознайомитись з основними командами Linux
  • Вивчити основний синтаксис C та вирішити кілька завдань
  • Почати мислити чіткіше =)
IDE CS50
Для виконання завдань CS50 пропонує IDE (Integrated Development Environment, інтегроване середовище розробки) у «хмарі». Щоб нею скористатися, створіть обліковий запис на платформі edX, і зареєструйтесь на оригінальний курс . Після цього:
1. Заходимо на cs50.io, зі списку вибираємо edX, вводимо логін і пароль, тиснемо Submit 2. Вводимо дані свого edX-акаунта, тиснемо Return to ID.CS50.NET . cs50.io 3. Чекаємо: створюється ваш віртуальний простір. віртуальний простір cs50 4. Готово! cs50 ide
Командний рядок та запуск CS50 IDE
У нижній частині вікна CS50 IDE у вкладці Terminal є термінальне вікно або панель командного рядка. Сюди можна вводити рядкові команди: ви зможете робити те саме, що і з віконним інтерфейсом, наприклад, запускати програми, видаляти та створювати файли, інсталювати ПЗ. Якщо ви ніколи не працювали з командним рядком, ймовірно, такий спосіб здасться громіздким: потрібно пам'ятати команди, набирати їх текстом замість клацання по іконках і кнопках. Певною мірою так і є, потім віконний інтерфейс і вигадали. Однак командний рядок є у всіх ОС і його обожнюють адміни. А все тому, що інколи без неї ніяк. У вікні IDE у терміналі ви побачите загадковий рядок: username:~/workspace $ на місці "username" буде автоматично згенероване (на основі ваших реєстраційних даних) ім'я. Клацніть на віконце терміналу, надрукуйте: update50 Натисніть Enter. Команда просить систему оновитись. Ви побачите, як у терміналі з'являються рядки, що описують процес встановлення. Не закривайте CS50 IDE доки не побачите Update complete! . Після цього знову з'явиться рядок за промовчанням, що з вашим ім'ям.
Робота в IDE
Створимо папку, де лежатимуть ваші файли. Клацніть правою кнопкою миші по ~/workspace (ваш кореневий каталог) у лівому верхньому кутку CS50 IDE , виберіть New Folder . Перейменуйте папку в pset1 (якщо ви помаболися в імені, клацніть правою кнопкою по папці і виберіть Rename ). cs50 ide rename folder Потім клацаємо правою кнопкою по папці pset1 , вибираємо New File . З'являється файл Untilted, перейменуємо його в hello.txt . cs50 ide Двічі клацніть по hello.txt. У CS50 IDE праворуч ви побачите нову вкладку та поле, де можна друкувати. Якщо ви це зробабо, зверніть увагу на символ зірочки (*), що з'явилася перед назвою файлу на вкладці — індикатор того, що до файлу були внесені, але не збережені зміни. Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 1 Збережіть файл у меню *File > Save або за допомогою клавіш command + S (на машинах Apple) або Ctrl + S (на ПК). Зірочка має зникнути. Давайте перевіримо, чи лежить файл там, де має. Зробимо це за допомогою командного рядка, настав час до неї звикати:). Як і раніше, активний рядок у терміналі виглядає так: username:~/workspace $ Workspace - поточна робоча директорія (та, що відкрита в робочому середовищі). Тільда ​​(~) вказує на кореневу директорію (у ній лежить workspace). Зверніть увагу, що workspace у терміналі — те саме, що й іконка ~/workspace у верхньому лівому куті CS50 IDE. Давайте попрактикуємось. Клацніть у якомусь місці терміналу і наберіть у командному рядку ls і натисніть Enter. Ці дві малі літери - скорочення від "list" ("список") - викличуть список файлів і папок, що знаходяться всередині поточної директорії workspace. Серед іншого ви побачите і створену вами pset1 ! Тепер відкриємо нашу папку за допомогою команди. Набираємо cd pset1 або багатослівніше: cd ~/workspace/pset1 Команда cd (change directory) змінює активну директорію, у нашому випадку на ~/pset1 Активний рядок змінилася на username:~/workspace/pset1 $ Це підтверджує, що ви тепер перебуваєте в директорії ~/workspace/pset1 (рядок розшифровується як «я перебуваю в pset1 всередині папки workspace, яка лежить в кореневій папці, що позначається ~"). Тепер наберіть Ви ls побачите файл hello.txt ! нічого не станеться: це текст, і він не видає активного посилання, але підтверджує, що hello.txt знаходиться там, де повинен cd . перейти), вона поверне вас до кореневої директорії за промовчанням.Таким чином, в активному рядку ви побачите наступну картину: username:~ $ Щоб повернутися назад до папки pset1, наберіть cd workspace і натисніть Enter. cd pset1 та знову Enter. Також ви можете замінити ці дві команди однією, достовірніше: cd workspace/pset1
Hello, C!
Нарешті ця хвабона настала! Починаємо програмувати. Усередині нашої папки pset1 в IDE створюємо файл під назвою hello.c (розширення обов'язково), відкриваємо у новій вкладці (думаємо, ви пам'ятаєте, як це робити з попереднього параграфа). ВАЖЛИВО! Літери мають бути малими, Linux чутливий до регістру. Hello.c і hello.c – різні файли. У правій частині вікна CS50 IDE набираємо точнісінько такий текст, як ви бачите нижче. Так, його можна скопіювати, але корисніше набрати. #include int main(void) { printf("hello, world\n"); } Літери різного кольору тому, що в CS50 IDE працює підсвічування синтаксису. Вона виділяє кольором блоки тексту для кращого читання. У самому файлі кольори не зберігаються, вони помітні лише в IDE. Якщо вони є, значить, IDE розуміє C, а про те, що це саме C, ви повідомабо розширення файлу (*.c). Якби ви назвали той самий файл hello.txt, текст був би одноколірний. Переконайтеся, що ви надрукували все так, як у прикладі, інакше зловите перший баг=). Знову звертаємо вашу увагу на різницю між малими і великими літерами. Символ \n переводить курсор на наступний рядок, і введений текст не злипнеться з виведеною програмою. Ах так, і про точку з комою (;) не забувайте. Це важливий роздільник операторів програми, без них працювати не захоче. Натисніть File > Save(або комбінацію command-або Ctrl-s). Чи помітабо, що зірочка перед назвою файлу зникла? Якщо так, то зміни збереглися. Клацніть у будь-якому місці по термінальному вікні під вашим кодом і переконайтеся, що ви всередині ~/workspace/pset1 (якщо це не так, клацніть cd і натисніть Enter, потім cd workspace/pset1 і знову Enter). Ваш активний рядок має виглядати так: username:~/workspace/pset1 $ Переконаємося, що файл hello.c знаходиться там, де повинен. Набираємо ls та тиснемо Enter. Ви бачите і hello.c? Якщо ні, поверніться на пару кроків назад і створіть файл ще раз. … Тепер настає урочистий момент: схрещуємо пальці та… друкуємо: make hello і схрещеними ж пальцями тиснемо Enter. Саме hello, не hello.c. Якщо все, що ви після цього дійства перед собою побачабо - другий активний рядок, який виглядає точнісінько, як попередній, значить, все працює! Ваш вихідний код було переведено в машинний або об'єктний код (тобто послідовності 0 і 1). Тепер цей код можна виконати (тобто запустити програму!). Для цього друкуємо: ./hello у командному рядку, тиснемо Enter. Якщо ви не змінювали укладений між текстом, нижче ви побачите: hello, world Якщо ви тепер наберете команду ls і натиснете Enter, ви побачите новий файл hello, поряд з hello.c і hello.txt. У першого hello має бути зірочка після імені, яка сигналізує про те, що це виконуваний файл, тобто такий, за допомогою якого ви запускаєте програму.
Баги?
Якщо після команди make, ви побачабо помилки, настав час першої налагодження! Написи на кшталт "expected declaration" означають, що ви десь допустабо друкарську помилку. Звірте код з наведеним вище ще раз, тільки будьте дуже уважні до всіх деталей. Увага! Описи помилок видаються англійською. Якщо незрозуміло, скористайтеся пошуковою системою, Google Translate або запитайте у коментарі. Як тільки ви виправабо помилки, не забудьте зберегти ваш код за допомогою File > Save (або command- або Ctrl-s), знову натисніть на внутрішній частині термінального вікна і наберіть make hello (Тільки попередньо переконайтеся, що ви знаходитесь в директорії ~/workspace/pset1 ). Якщо більше помилок немає, запускайте програму, набираючи команду ./hello За ідеєю перед вами має виникнути заповітна фраза, укладена в лапки оператора printf, який командує «надрукуй». Якщо вікно терміналу здається вам занадто маленьким, клацніть по іконці ув'язненого в колі плюса (+), розташованого поряд з hello.c.
Перевірка на правильність
У CS50 IDE вбудовано програму check50. Воно працює з командного рядка і перевіряє деякі програми на наявність помилок. Якщо ви ще не там, перейдіть до директорії ~/workspace/pset1, виконавши в терміналі команду: cd ~/workspace/pset1 Тепер виконайте ls ви побачите щонайменше файл hello.c. Переконайтеся, що назва файлу виглядає так, а не, скажімо, Hello.c або hello.C. Перейменувати файл можна, виконавши команду mv source destination source – поточне ім'я файлу, destination – нове ім'я файлу. mv (від англ. move) - Утиліта для перейменування. Якщо ви випадково назвали файл 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, чи компілюється 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, і червоний смайлик сигналізує, що ви помаболися в імені, або завантажабо файл не туди. Жовті "нейтральні" смайли означають, що тести не запустабося. І звідки їм запуститись, якщо програма не знайшла файл, який потрібно перевірити? Ось ще один варіант, який вискочить у тому випадку, якщо ви змінювали текст, який має вивести функція printf(): :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 повідомляє, що очікувався рядок hello, world\n, але з'явилося щось інше. check50 не рахує бали за проходження курсу, але перевіряє, чи відрізняється результат виконання завдання від очікуваного. І дозволяє вам переконатися в цьому, перш ніж підтвердити правильність завдання всередині курсу (як це зробити, ми розповімо пізніше).
Основи С: порівняння зі 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) значення true (булевський вираз «правда» або «одиничка»). Такий цикл виконуватиметься нескінченно.
Цикл, що виводить фразу на екран 10 разів
Scratch Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 7 С for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i - змінна-лічильник, її значення змінює оператор інкременту i + +, збільшуючи його на 1 при кожному витку циклу. Спочатку i надається значення 0 за допомогою оператора присвоєння =. Увага! Як і Java, в C рівність позначається ==, оператор присвоювання =. Тобто, a = 5 означає, що змінної a надали значення 5, а (a = =5) означає булонський вираз (якщо а дорівнює 5, то вираз правдивий, якщо не одно, то хибно). Цикл зупиниться, коли «доросте» до 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 зберігає значення C і Scratch. У З задаємо int counter = 0 замість Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 9.
  • Позначаємо тип змінної як int уточнення: i — ціле число (від англ. integer, цілий).
  • Значок %i, який ми використовуємо в printf у четвертому рядку — заповнювач, який говорить про те, що ми повинні надрукувати десяткове ціле, так само, ми говоримо printf замінити заповнювач на значення, яке приймає змінна 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
Умовні оператори
Ці хлопці перевіряють, чи виконується певна умова (логічне вираження, питання, який можна відповісти лише «так» чи «ні»), і якщо це так, то виконують деякі дії, прив'язані до цієї умови. Приклад із життя: якщо пішов дощ (за умови, що пішов дощ) і я на вулиці (я під час дощу на вулиці), я відкриваю парасольку. if (умова) { //исполнить, если значення истинно } Ускладнений варіант: якщо умова виконується, вчинити дію, якщо ні — зробити іншу дію. if (умова) { //выполнить действие } else { //выполнить другое действие, если умова ложно } Зразок: якщо тобі більше 18, схвалити доступ. Якщо менше, не схвалити. Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 12
Оператор вибору
switch (n) { case const1: // если n дорівнює const1, выполнить break; // умова совершилось — выйти из выбора case const2: // если n дорівнює const2, выполнить break; ... default: // если n не дорівнює ни одной из констант, выполнить break; } Приклад: якщо n = 50, надрукувати "CS50 є Introduction to Computer Science I", якщо n = 51, надрукувати "CS51 є 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: перевіряє умову, потім виконує дію, поки умова істинно while (умова) { // выполнять, пока истина } do/while відрізняється тим, що він виконує дію без перевірки умови, та був лише перевіряє його. Якщо умова виконується, він повторює дію, доки умова стане брехнею. do { ) // выполнять, пока истина } while (умова); Цикл for повторює дію задану кількість разів Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 13 Цикли можна вкладати один в інший. У такому разі на кожному кроці зовнішнього циклу буде повністю виконуватися внутрішній цикл. Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 14
Основні типи даних у C
основні типи даних у C
Бібліотеки С
Ви, напевно, вже запитали, що означає перший рядок програми на C: Яка її роль і чи можна обійтися без неї? Рядок #include робить дуже важливу річ: вона підключає бібліотеки вже написаного коду до вашої програми. Ім'я підключеної бібліотеки йде у кутових дужках (<>) і має розширення (.h). Якби не було бібліотек, то будь-яку, найпростішу дію, довелося б щоразу описувати знову і знову. Підключена бібліотека#include містить функції введення/виводу. Саме вона дозволяє нам використовувати функцію printf() для виведення на екран. Тобто якби ми не написали рядок #include , але залишабо в тілі програми функцію printf(), при спробі запуску ми отримали помилку! Тому що без цієї бібліотеки компілятор не знає, що таке printf(). Є стандартні бібліотеки, вони складають словниковий запас мови. Функція printf() не вбудована в комп'ютер, але входить до стандартної бібліотеки мови C. Тобто програміст раніше написав її і включив до бібліотеки. Тепер інші можуть нею користуватися, не вигадуючи велосипеда. Щоб компілятор її «зрозумів», підключаємо . Є й інші стандартні бібліотеки, які у процесі проходження CS50. Наприклад, бібліотека рядків, де описані операції з рядками (визначення довжини, додавання та інше). У порівнянні з іншими популярними мовами програмування кількість стандартних бібліотек C дуже невелика. Але є самописні, найчастіше більш вузькоспеціалізовані бібліотеки. Так, бібліотека було створено спеціально для студентів CS50. Саме час зробити важливе зауваження:крім написання програм, вирішення завдань за допомогою власного коду, хороший розробник має ще одну важливу навичку: знання інструментів, вже написаних і вміння використовувати їх (чужі бібліотеки), щоб не витрачати час на винахід «колеса». Так, якщо ви знаходитесь в процесі вирішення нудного або складного завдання, яке при цьому здається досить поширеним, привчайтесь ставити собі питання: «а чи не написав її рішення хтось інший?» Великі шанси, що так і є, і ви можете знайти цю функцію в існуючій бібліотеці. У технічних термінах бібліотека - це двійковий файл, отриманий шляхом об'єднання в колекцію об'єктних файлів, використовуючи компонувальник. Об'єктні файли — це файли з розширенням (*.o), які ви отримуєте під час компіляції програм.
Структура бібліотек C
Коли програміст пише бібліотеку, код розподіляється за двома типами файлів - заголовний файл (header, розширення *. h) та файл реалізації (implementation, розширення *. c). Заголовковий файл містить код, який описує ресурси бібліотеки, які можна використовувати. Тобто описи змінних, функцій, структур, типів та інше. Якщо вам цікаво, що містить та чи інша бібліотека, потрібно заглянути саме в файл заголовка. У терміналі CS50 IDE (та інших середовищах Linux) ви можете викликати програму less для перегляду файлів і відкрити з його допомогою бібліотеку, що вас цікавить: less /usr/include/stdio.h Файл відкриється прямо в терміналі. Щоправда, для новачків він буде дуже важко читаним. Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 15 Щоб вийти з less, натисніть q на клавіатурі. Заголовний файл не містить код функцій, що є прикладом дуже важливого поняття - приховування даних або інкапсуляції. Користувачеві системи нема чого знати «начинки» бібліотек, йому достатньо, щоб вона працювала. Якщо ви прошерстіть stdio.h, то не знайдете там реалізації printf(), хоча як її використовувати, ви вже знаєте. Це зроблено для того, щоб захистити дані від втручання, яке часом може погано позначитися на системі. Так, якщо хтось змінить реалізацію функції printf() у бібліотеці, це відіб'ється на всіх програмах, які її використовують. Допитливим буде цікаво, де заховано реалізацію. Відповідно до конвенції (угоди, прийняті у світі програмування) такий код зберігають у файлі з розширенням (*.c). Після компіляції бібліотеки на основі двох файлів з однаковим ім'ям Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 16 Автор бібліотеки передає програмісту, який хоче її використовувати, два файли - з двійковим кодом, а також заголовний файл. Таким чином, файл із вихідним кодом програмісту не потрібний. Точніше, може бути необхідний, якщо програміст хоче щось змінити у бібліотеці і перекомпілювати її під власні потреби. Щоб скористатися функціями бібліотеки у своїй програмі, потрібно виконати таке: 1. Включити заголовковий файл у програму за допомогою рядка #include У випадку стандартних бібліотек достатньо вказати ім'я бібліотеки в кутових дужках: Якщо бібліотека, яку ви хочете підключити, лежить у тій же папці, #include <ім'я_библиотеки.h> що і ваша програма, підключайте її так: #include “ім'я_библиотеки.h” 2.Приєднати бінарний файл для компіляції. Це дуже важливий крок, оскільки, як ми говорабо вище, файл заголовку не містить реалізації елементів бібліотеки. Щоб це зробити, потрібно викликати компілятор clang з прапором –l і назвою бібліотеки, що йде безпосередньо за ним. Наприклад, компонуємо бібліотеку CS50: clang hello –lcs50 Clang - один з компіляторів. Для компіляції можна використовувати вже знайому вам програму make. По суті вона викликає clang з певними аргументами командного рядка.
І знову Hello C: розбір синтаксису найпростіших програм
Директива #include підключає бібліотеку вводу/виводу . Програми C складаються з функцій, а ті — з операторів і змінних. Функція - це шматок коду, в якому вже є або подаються якісь дані, а якісь дані отримують у результаті її виконання. Фігурні дужки обмежують тіло функції - опис того, що вона повинна робити. printf() із стандартної бібліотеки stdio виводить будь-який рядок на екран. Рядки полягають у подвійні лапки, а символ "\n" означає переведення курсору на новий рядок. Приклад: функція порахувати квадрат цілого числа. Передаємо функції дані, у разі — число, що треба звести у квадрат. Потім в ній прописується алгоритм множення числа на себе, і результат цього множення вона видає на виході. int sqr(int a) { return a*a; } int sqr(int a) - назва функції. У дужках її аргумент a, це те, що подається на вхід функції. Це як змінна у рівнянні. Тобто, якщо хочемо дізнатися квадрат числа 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, як і будь-якій мові, є такий елемент, як коментар або примітка в програмному колі, призначене не для комп'ютера, а для розуміння людей. Наприклад, опис, що робить код. Компілятор не бачить коментарів. Коментування програм - дуже важливий момент, оскільки часом розібратися в чужому (і навіть своєму) коді дуже складно. //пример однострочного комментария /** а это – многострочного **/ #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() викликається з порожніми дужками, тому що її аргументи визначені як void.
Ще трохи про введення/виведення в C
Ви, напевно, вже встигли помітити дивні символи %d та %f у дужках оператора printf. Справа в тому, що функція printf виводить дані у наступному узагальненому вигляді: рrintf ("управляющая строка", аргумент1, аргумент2,...); Керуючий рядок містить компоненти трьох типів:
  • символи, що відображаються на екрані дисплея;
  • специфікатори перетворення, що викликають виведення на екран чергового аргументу з наступного списку;
  • керуючі символьні константи.
Специфікатор перетворення починається зі знака % і закінчується символом, що задає перетворення. Деякі з таких символів:
  • з: значенням аргументу символ;
  • d чи i: десяткове ціле число;
  • f: десяткове число з плаваючою точкою;
  • s: рядок символів.
Тобто %d означає, що на екрані з'явиться ціле десяткове, а %f — десяткове з плаваючою комою. Що, якщо нам потрібно, щоб користувач ввів дані з клавіатури? Для цього можна використовувати функцію scanf( ), прототип якої лежить у бібліотеці stdio. Щоб рахувати з екрана речове число, у програмі потрібно написати рядок scanf("%d", &a); Давайте перепишемо нашу програму так, щоб користувач сам вводив число, яке потрібно звести в квадрат. Додаткові матеріали до лекцій CS50: Week 1 (лекції 3 та 4) - 17
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ