Програмування ми будемо вивчати на базі мов С/С++.
Звісно це дві різних мови, я б міг взагалі сюди додати ще Java/C#. Так як на початку вивчення вони дуже схожі, і відрізняються спочатку лиш вводом/виводом. І більшість особливостей, про які я буду говорити, стосуються цих мов - С/С++/Java/C#
Професійні програмісти використовують такі інтегровані середовища програмування (IDE) як Visual Studio, Clion, CodeBlocks - нам поки що ці грандіозні монстри не потрібні. Ми будемо вчитися в онлайн компіляторі.
Онлайн компілятор
Отже, перше що вам треба - онлайн компілятор, це те що буде виконувати код ваших програм. Введіть у пошуковику "online c++ compiler" і серед знайдених виберіть той який сподобається.
На скріншоті нижче ви бачите компілятор від https://www.w3schools.com/tryit/trycompiler.asp?filename=demo_cpp
Вагома перевага онлайн компілятора - мінімалізм, тобто якраз для новачка. Звісно є онлайн середовища програмування досить багаті, але початківців вони лиш заплутують.
В більшість таких онлайн компіляторів можна відразу залогінитися через гугл аккаунт і зберігати там коди своїх програм.
Перша програма
#include <iostream>
using namespace std;
int main()
{
// comment
return 0;
}
Це необхідна обгортка команд вашої програми, на перших етапах навчання можна не звертати уваги на ці рядки, крім того, це необхідні елементи структури програми.
Свій код ми будемо писати в середині фігурних дужок, там де я вписав коментар.
Все що йде після //
компілятор не бачить, і ніяк на цей текст не реагує. Тому програмісти або пишуть там дійсно коментарі для пояснення команд програми або тимчасово відключають, закоментовують код. Ніби відключають його.
За традицією в програмуванні перша програма виводить повідомлення
Hello World!
а ми скажемо Hello World!\nHello Steemitd!
\n
- це спеціальний символ переходу на новий рядок.
cout << "Hello World!";
Не вдаючись в деталі поясню як це працює
<<
- передає те що знаходиться праворуч (наш текст "Hello World!"
) до команди cout
яка виводить передане їй на екран, в консоль у вікно виводу.
Запам'ятайте:
cout
- це екран/консоль/вікно_виводу, <<
показують куди відправиться text
Це важливо, бо є команда cin
та >>
a;
Її розуміти слід так: cin
це input, вікно вводу, якщо хочете клавіатура з яких інформація йде у напряму стрілки >>
, і відправляє в змінну a
в кінці кожної команди інструкції стоїть ;
А зараз ми підійшли до самого цікавого. Що таке змінна a?
При простому поясненні це можна уявити як коробку для збереження.
Тобто cin >> a;
значить що з пристрою вводу(клавіатура) інформація відправиться в змінну/коробку a
В мові С++ таку змінну/коробку необхідно попередньо підготувати(оголосити). Коробка має бути не просто будь яка, а спеціального розміру. В С++ є кілька типів даних.
Їх можна поділити на два види
цілочисельні | з плаваючою крапкою |
---|---|
char | |
short | float |
int | double |
long | long double |
long long |
цілочисельні ще бувають signed
та unsigned
- тобто знакові, та без знакові.
А тип даних char
називається символьний, так як призначений зберігати коди символів. А що таке коди - це звичайні числа, тобто char
можна також і використовувати для збереження чисел. Але це зараз погана манера, хіба що ви збираєтеся кодувати для пристроїв з дуже малим обсягом пам'яті.
Та про це все іншим разом - бо це доволі велика тема. Ще про змінні ви можете почитати тут
Ми ж на перших порах для простоти будемо завжди використовувати int
для цілих чисел, та double
для дійсних/дробових.
Складемо першу програму для знаходження суми двох чисел.
по перше їх треба десь взяти - ввести з клавіатури cin >>
а пам'ять під них та під результат слід попередньо підготувати.
int a,b,suma;
Суму обчислити інтуїтивно просто - suma=a+b;
але ніколи не називайте =
що це дорівнює
, що це рівність
Це зветься присвоїти значення
і означає що компілятор с++ спочатку дивиться на праву частину від символу =
там знаходиться a+b;
І він зазирає в коробку a
, дізнається яка там число, наприклад 3, потім зазирає в коробку b
і бачить там число 7, додає ці два числа. І аж потім дивиться на ліву частину від =
куди ж покласти результат.
Результат піде в коробку/ змінну - suma;
#include <iostream>
using namespace std;
int main()
{
int a,b,suma;
cin>>a;
cin>>b;
suma=a+b;
cout<<suma;
return 0;
}
Слід зазначити що компілятор не лише додає значення цих двох змінних, він ще й "обчислює" (тобто дізнається) тип результату.
Тобто логічно що коли int +int = int, але те ж саме буде і при діленні.
int / int = int, ніби не логічно, але так воно є. Тому спробуйте поділити 7/2.
Поділіть 199 на 10. Який буде результат, чому?
Але цим можна користуватися. В деяких мовах навіть є спеціальні символи для таких дій, або окремі операції.
Цілочисельна арифметика має дуже важливе значення на початку програмування, і не лише на початку.
Давайте поділимо 15 на 2 -скільки буде? 7.5, але ж в цілу змінну 7,5 не покласти. Туди вміститься лише 7. Тобто 15/2=7
А де ж 0,5? Вірніше як його враховувати щоб не втратити.
Пригадайте зі школи дію ділення з остачею. Багато хто забув про це, Адже в шкільній програмі швидко з'являються дроби, звичайні потім десяткові - і про ділення з остачею забувають.
То що таке остача. Яка остача при діленні 15 на 2?
А що таке множення? Його вигадали щоб замінити дію додавання -
2+2+2+2+2+2= 6 * 2 = 12
То що тоді ділення?
12-2=10
12-2-2=8
12-2-2-2=6
12-2-2-2-2=4
12-2-2-2-2-2=2
12-2-2-2-2-2-2=0
Віднімати більше не зможемо і залишився нуль, тобто остача нуль. А те скільки раз вдалося виконати операцію ділення - частка. 12:2=6
А якщо ми поділимо не 12 а 13?
13-2=11
13-2-2=9
13-2-2-2=7
13-2-2-2-2=5
13-2-2-2-2-2=3
13-2-2-2-2-2-2=1
Тут ми теж віднімати більше не зможемо і залишився один, тобто остача 1. Бо багато отримую відповідей що 13:2 - остача 0.5.
Пояснюючи це так що 13/2=6,5 і ту 6 ціле а остача 0,5 - що не правильно.
%
Ця операція важлива сама по собі, Є навіть ціла тема в алгебрі призначена модулям. Там де числа 7 та 17 однакові за модулем 10, так як дають однакові залишки при діленні на 10. Ця операція - це залишок від ділення.
Тобто ділення можна розглянути в трьох варіантах.
В С подібних мовах операція % завжди цілочисельна з цілочисельнмим операндами.
В Python же зовсім не так, там не така строга типізація і там x=15/2 дасть звичний результат x=7.5
але є спеціальна операція цілочисельного ділення x=15//2 біде рівно 7
Ще цікавіше 15//3.5 буде 4, тобто хоч результат цілочисельний, проте операнди не обов'язково цілочисельні.
Чому так? 15-3,5 = 11,5, - раз
11,5-3,5=8 - два
8-3,5=4,5 - три
4,5-3,5=1 - чотири - ділення закінчено, ми встигли чотири рази відняти 3,5 - тому 15//3,5 = 4. А 15%3,5 = 1 , так як в нашому прикладі залишилася 1 від якої відняти 3.5 вже не виходить.
Дослідіть поведінку операцій /
та %
таким кодом:
(змініть 45 та 10 на свої числа, спочатку подумки оцініть результат)
#include <iostream>
using namespace std;
int main()
{
int a=45,b=10;
cout<<a<<"/"<<b<<"="<<a/b<<endl;
cout<<a<<"%"<<b<<"="<<a%b<<'\n';
return 0;
}
cout << a << "/" << b << "=" << a/b;
можна було детально розписати
cout<<a; // виводимо значення змінної а 45
cout<<"/"; // виводимо риску ділення 45/
cout<<b; // виводимо значення змінної b 45/11
cout<<"="; // виводимо знак дорівнює 45/10=
cout<<a/b; // виводимо результат ділення 45/10=4
cout<<endl; // тут нічого не виведеться, це "невидимий"
// символ, але наступний вивід почнеться
// з нового рядка '\n' майже те саме
// перехід на новий рядок
тут ми формуємо вивід на екран/консоль
але це довго, займає багато рядків, вивід можна об'єднати в один
Та не поспішайте натискати RUN, завжди слід спочатку оглянути код в пошуках помилок, потім подумки запустити код у своїй голові, і виконати цю програму крок за кроком, і лише потім коли ви ніяких помилок не знайшли, слід тиснути RUN. Але помилки будуть!!! Вони є у всіх, цього не варто боятися. Слід навчитися їх помічати та виправляти.
#include <iostream>
using namespace std;
int main()
{
int mynumber=49;
//Declaration of variables c1 for the first digit and c2 for the second digit of my number.
int c1, c2;
с1=mynumber/10;
c2=mynumber%10;
cout<<"First digit of "<< mynumber << " - "<< c1;
cout<<" and second digit - "<<c2<<"\n";
return 0;
}
Тобто наприклад mynumber=3954;
тоді mynumber/100
буде 39 - відкидання двох останніх цифри, а mynumber%100
буде 54 - дві останні цифри
mynumber/10
буде 395 - відкидання останньої цифри, а mynumber%/10
буде 4
mynumber/1000
буде 3 - відкидання трьох останніх цифри, а mynumber%/10
буде 954
тобто комбінуючи %
та /
можна дістати будь-яку цифру з числа.
Наприклад mynumber=73961054; // витягнемо(дізнаємося) четверту від кінця цифру
дане число можна поділити на 1000: 73961054 / 1000 = 73961
а тепер найдемо залишок від ділення числа на 10.
73961%10=1;
Щоб не повторювати тут мною вже сказане про змінні прочитайте мою відповідь домашню роботу на урок №2 від @alejos7ven також якщо забажаєте можете глянути відповіді на цю тему інших
Головне що =
означає присвоїти значення, занести, покласти.
int a = 70;
по перше змінну треба оголосити вказавши її тип при першій появі. І занести в неї значення 70. Первинне занесення значення зветься ініціалізація. Тоді як int b;
просто оголошення змінної з вказанням її типу. Коли я запитаю а чому зараз дорівнює b? Яке там зберігається значення? Більшість скажуть що нічого, тобто нуль. Але це не вірно! Там буде сміття, тобто будь яке значення. Може бути нуль, а може його і не бути.
int a = 70;
a=a+1; // а претвориться на 71
a++; // а знов збільшиться на 1, буде 72
++a; // а знов збільшиться на 1, буде 73
a+=7; // тут а збільшиться на 7, буде 80
a=70; // а знов 70
є аналогічні операції і для віднімання -a--; --a; a-=7; a=a-4;
для інших дій a*=2; a/=5; a%=4;
Домашнє завдання
1. Online compiler (IDE) - 1 бал
2. Знову від 1 до 100 - 5 бали
Можна використовувати лише два види операцій; +1
та x2
. Треба з 1
зробити 100
. Ніяких інших операцій нема - дехто на минулому уроці робив -1
- це зовсім інша операція. Це завдання з попереднього уроку слід виконати в трьох варіантах:
- (0.5 бал) - знайдіть свій спосіб дійти
від 1 до 100
ефективний чи ні в цьому завданні не важливо. - (0.5 бал) - знайти найкращий спосіб, найкоротший. В минулому уроці ніхто це не знайшов. Шукайте!
- (1 бал) - якщо крім
+1
таx2
можна ще створити додаткову зміннуint k;
то скільки кроків це зекономить, в змінну не можна класти певне число, наприклад 7 чи 23. Можна лише зафіксувати на певному кроціk=n
значення змінноїn
.
(1+1+1) Але дійти треба не до 100, а кожен до свого числа.
Зайдіть у свій профіль з кількості підписників візьміть перші дві цифри, у мене це 28 (від числа 285). Додайте до нього 21. 28+21=49. Це і є ваший варіант для завдання. Запам'ятайте його!!!
Тобто вам слід дійти від 1 до 49( у всіх вас будуть свої, різні числа) виконуючи лише операції +1
та x2
Розв'язую свій варіант
#include <iostream>
using namespace std;
int main()
{
int a=1, count_oparation=0;
a=a+1; count_oparation++; //2
a=a*2; count_oparation++; //4
a=a+2; count_oparation++; //6
a=a*2; count_oparation++; //12
a=a*2; count_oparation++; //24
a=a*2; count_oparation++; //48
a=a+1; count_oparation++; //49
cout<<"I reached 49 from 1 in "<< count_oparation <<" steps by using +1 and x2 commands";
return 0;
}
3. Степінь - 1 бал
В мові С/С++ немає степіня, a5 тобто п'яту степінь слід виконувати так: int a5=a*a*a*a*a;
я хочу сказати що немає операції такої, а функція є :int p5=pow(a,5);
Щоб ви не шукали цю операцію як наприклад в Python p5=a**5
або p5=a^5
як у BASIC.
В С/С++ операція ^
та ^=
але вона означає зовсім інше.
Сподіваюся пам'ятаєте з математики що a5 * a7 = a5+7 = a12
Візьміть своє число, я беру своє 49 і додаю його цифри та ще додаю 7: 4+9+7=16
Треба написати програму піднесення числа до 16 степеня - всіх вас будуть різні числа.
#include <iostream>
using namespace std;
int main()
{
int a=3,pow; // 3^16
pow=a*a; // 3^2
pow=pow*pow; // 3^4
pow=pow*pow; // 3^8
pow=pow*pow; // 3^16
cout<<a<<"\n";
return 0;
}
3. Розкладання на цифри - 3 бали
1 бал Напишіть програму розкладу його на цифри. А як тепер його зібрати з цифр назад у число? Як перевернути число. Іншими словами розвернути. наприклад як з 93 отримати 39.
1 бал Візьміть перші три цифри зі свого профілю (кількість підписників або постів) - розкладіть його на цифри.
1 бал Знайдіть у своєму профілі чотири цифрове число(виписавши перші цифри, або скомбінувавши його з інших, дві перші від одного та дві перші іншого.) Або випадкове число - головне щоб його не було в інших домашніх роботах. Розкладіть його на цифри - перша цифра Х, друга цифра - Х, третя цифра - Х, четверта цифра - Х
Наступні уроки будуть вже пов'язані з цим, тому що виконувати там завдання вам слід розібратися в цих.
Завтра я опублікую допис зі словами Ask.Me де ви зможете задавати мені питання якщо вам треба додаткові пояснення.
Правила проведення
Публікувати можна на будь-якій мові, в будь якій спільноті чи просто у власному блозі, посилання на вашу роботу додайте сюди коментарем
Щоб я швидко знайшов, перевірив та оцінив ваші роботи залиште посилання в коментарі під цим текстом а в роботі поставите тег #sec20w3sergeyk
Порекомендуйте прийняти участь своїм двом-трьом друзям.
Роботи слід опублікувати з Monday 23 Sep 24 to Sunday 29 Sep 24
Ваші роботи будуть мною оцінені та відібрані п'ять кращих робіт
About me
Дивлюсь на це програмування як баран нові ворота 😂 добре що я такі люди які на цьому знаються. До речі, я теж вскочила якщо не в останній вагон то вскочила, приймаю участь в домашніх завданнях про кулінарію
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Так.. я так само🫣
Ні чого не зрозуміла, але дуже цікаво👍
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ну ти поки що на таких конкурсах не заморочуйся, знайомся з самою платформою
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ну то ж звісно)
Я кажу про цю роботу, що не кожен зможе так розжувати👍
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
https://steemit.com/hive-145157/@luxalok/sec-20w3-or-or-pershii-kod
cout<<a<<"\n"; - виводить 3 після компіляції, таж хіба має бути?
cout<<pow<<"\n"; - дає реузльтат 43046721))
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
і? помилився - то не страшно
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Бувають думки, що то частина завдань ))
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@tipu curate
;) Holisss...
--
This is a manual curation from the @tipU Curation Project.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Upvoted 👌 (Mana: 0/7) Get profit votes with @tipU :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
My entry:
https://steemit.com/sec20w3sergeyk/@kouba01/sec-s20w3-writing-the-first-code
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
я теж хочу навчатися, буду пробувати спочатку шукать програму с++
далі треба все пеерчитати і спобувати щось зробити. В мене велика надія, що я зроблю.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
у мене я б не сказав що складніші завдання як для новачків.... але так, ледь складніші, і їх побільше це раз - але все рівно я робив їх з огляду на непідготовлених
тому спочатку раджу виконати завдання @alejos7ven а вже потім приступати до мого. час до кінця тижня ще є
також варто глянути на роботи інших студентів @kouba01 @ahsansharif
та не лякатися що продвинуті учні відповідають дуже широко і часто виходять за рамки завдання. Відповідати в стилі новачків їм статус не дозволяє))) Слід уважно читати умови домашнього завдання, а виходити за рамки - то вже за власним бажанням
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Я вибрала цей урок, мені хочеться погратися скриптами. Легкі завдання не для мене)) Як що не впораюсь, то ж не покажу результату))
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Your post has been rewarded by the Seven Team.
Support partner witnesses
We are the hope!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Here is my entry: https://steemit.com/sec20w3sergeyk/@mohammadfaisal/sec-s20w3-writing-the-first-code
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hello @sergeyk, please this my entry;
https://steemit.com/sec20w3sergeyk/@iddy/sec-s20w3-writing-the-first-code
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
My link
https://steemit.com/sec20w3sergeyk/@josepha/sec-s20w3-writing-the-first-code
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Here is my entry:
https://steemit.com/sec20w3sergeyk/@ahsansharif/sec-s20w3-or-writing-the-first-code
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Here is my entry:
https://steemit.com/sec20w3sergeyk/@ahsansharif/sec-s20w3-or-writing-the-first-code
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit