Basic programming course: Lesson #2 - 💻Variables and Types of Data💻

in Ukraine on Steem3 days ago

image.png

Змінні

Поняття змінної відноситься до базових понять в програмуванні. Це як точка, пряма чи число в математиці, до речі, там теж є змінні та параметри. А базові поняття краще пояснювати на ілюстративному рівні. Багато хто змінні пояснює як коробки, ящики, контейнери.

Тобто на самому примітивному рівні змінна - це місце(коробка) для збереження. Звісно що коробок таких може бути багато, а їх треба якось розрізняти. Тому коробки ці мають імена. І зазвичай імена ми даєм такі, що натякають/відображають вміст коробки. В маленьких програмах імена можуть бути маленькими. Наприклад ми знатимемо що в змінній a буде зберігатися кількість дверей, а в змінній b буде зберігатися кількість вікон, просто запам'ятаємо навіть без асоціації. Чи наприклад w-ширина, а h-висота. Та коли програма велика і там є не лише вікна та двері, то з літерою w звісно все ще може бути асоціація що то ширина. Але ширина чого? Тому не слід економити літери в назві змінних. З імені змінної має бути видно для чого вона призначена.

Якщо згадати старі часи коли ходили паперові листи, то Вам не слід було знати де фізично живе адресат. Ви писали адресу на листі і листоноша доставляв листа куди слід.
Тут те ж саме a=7 ніби відправити 7 адресату якогоназвали а. А якщо написати b=a то це значить треба дістати від а (те що там лежить) і відправити до b.

Далі все залежить від того, що ми збираємося зберігати у змінній. За аналогією коробки можуть бути великими, щоб вмістити слона, чи малими, щоб вмістити мишу.
Покажу це на прикладі С/С++

char c;       // збереження одного символа, або числа від -128 до 127
short s;      // збереження цілого числа від -32'768 до 3'2767
int   n;      // збереження цілого числа від -2'147'483'648 до 2'147'483'647
float f;      // дійсне число 1/3=0.333333 6-7 значущих цифр
double d;     // дійсне число 1/3=0.0.333333333333333 15-16 значущих цифр
long double   // дійсне число 1/3=0.0.333333333333333333 18-19 значущих цифр

Але ці дані відрізняються в залежності від архітектури комп'ютера і компілятора.

Якщо заглибитися у змінні ще глибше, то в різних мовах поводження зі змінними сильно відрізняється.

Головні відмінності

Критерій✔необхідне❌не є необхідним
Оголошення змінних до їх використанняC/C++, Java, C#, DartPython, JavaScript, Ruby
Обов'язкове вказування типу змінноїC/C++, Java, C#, DartPython, JavaScript, Ruby
Динамічна типізація (тип змінної може змінюватися)Python, JavaScript, RubyC/C++, Java, C#, Dart
Автотипізація (type inference)C++ (з auto), C# (з var), DartC, Java
Оголошення константC/C++, Java, C#, Dart, JavaScript (з const)Python, PHP, Ruby

В школі я вчив Basic, тоді були комп'ютери без операційних систем - Basic там була OS))))
І коли я хотів скористатися змінноюю - і я писав,

x=4
x=4.7

але для тексту x$ = "basic" - бо це була текстова змінна

перед присвоюванням писати let x=4 можна було, але let було не обов'язковим

Після імені змінної, спеціальним символом, вказувався тип, але змінні a, a#, a%, a$ були різні змінні - у них різні імена, хоч і всі звуться а. Лиш а та а! було одне і те ж ім'я

image.png

причому змінна a$ ніде не оголошена, не ініціалізована, взагалі ніде не з'являлася а print її виводить.

Тобто в мові С слід оголошувати змінну до використання, а тип змінної на необхідно вказувати при оголошенні.
На противагу цьому в Пайтоні змінну можна брати і використовувати, причому на ходу міняти її тип - динамічна типізація.

=

Особливу увагу слід звернути на символ =. В математиці це знак рівності, тобто він стверджує що ліва частина рівна правій.
Що ж тоді означає a=a+1? З точки зору математики це неправильна рівність бо не може число бути більшим на 1 за самого себе.

Але в програмуванні це 'не стверджування рівності', а дія 'присвоїти значення'.
a ← a + 1 - в псевдокодах
a := a + 1 - в мові Pascal

Дивні ці змінні

Якщо виконати дію 0.1 + 0.2 скільки буде в результаті?

0.1 + 0.2 ≠ 0.3!!!

А скільки буде якщо 120 * 3?

120 * 3 ≠ 360!!!


120 * 3 = 104!!!

І дива такі трапляються - можна поки не розуміти чому це так, але слід запам'ятати. Про це пізніше.
Адже і так вийшов за рамки домашнього завдання.
а питання було

Що таке змінні і для чого вони використовуються?

Перейду до наступного підпункту

Призначте тип даних таким змінним і поясніть чому: email, phone, working_hours, price_steem і age.

Мова Dart

В завдання ясно сказано призначити - тому спочатку виконаю його на.. на мові Dart, як кілька днів тому почав вивчати.

void main()
{  
  String email = '[email protected]';        // Зміна для збереження email  
  String phone = '+380 (XXX) 123-45-67';  // Зміна для збереження номера телефону    
  String working_hours = '8:00 - 17:00';  // Зміна для збереження робочих годин    
  double price_steem = 0.17;              // Зміна для збереження ціни Steem  
  int age = 10;                           // Зміна для збереження віку  
  
  print('Email: $email');
  print('Phone: $phone');
  print('Working Hours: $working_hours');
  print('Price Steem: $price_steem');
  print('Age: $age');
}

Можна відразу явно не вказувати тип змінних, а вказати тип 'var' - тоді компілятор автоматично його визначить на основі даних які туди вносяться.

але

  var age = 10; 
  age = 7.8;      // тут буде помилка - тип змінної визначився 
                  // як int (з числа 10) і перевизначитися вже не може

Мова Python

А на Python навіть 'var' писати не треба
Про Python я знаю мало, лиш те що є така мова. Та пару рядків коду було сам написав.
Серед усих IDE найбільше сподобалося https://thonny.org/ - рекомендую.

image.png

на Python це завдання виконати дуже просто
myemail = '[email protected]'
myphone = '+380 (XXX) 123-45-67'
working_hours = '8:00 - 17:00'
price_steem = 17
price_steem = 0.17
age = 10

image.png

Тип змінних все таки є, просто його не треба вказувати, він визнаається/перевизначаєтсья сам в момент присвоєння/переприсвоювання.

  age = 10; 
  age = 7.8;      // А тут помилки вже не  буде - тип перевизначився                   

image.png

image.png

Розробіть псевдокод для розрахунку вартості X STEEM у доларах США.

image.png

Програма на мові Python величиною в один рядок викликає у мене і подив і захоплення і непорозуміння.
Я звик писати код традиційно, алгоритмом, рядок за рядком - а тут все в один рядок.

Запрошую @bazer, @golden-rain, @luxalok



About me

Sort:  
 2 days ago 

Нажаль, кодування не те щоб не для мого розуму, але не для мого темпераменту точно. Вже через 5 хвилин починаю томитись від смертної нудьги. А це для мене дуже важливо – щоб мені був цікавим сам процес.
Тому, спробувавши раніше кілька разів вивчати, дійшов до висновку, що мені краще більше й не пробувати.

 2 days ago 

А мені нудно не буває)) - я вирішив мізки прокачувати щоб не застарювалися..чи не застоювалися...
там поки легкі завдання то я й запрсив)))

Ця публікація була підтримана командою 7 через @httr4life. Наша команда підтримує вміст, який додає спільноті.

image.png

Exactly the use of the variables vary with different languages. Moreover some languages are loosely typed and some languages are strongly typed.

Wow you have started using dart to explain the questions I think you took a start of learning dart from flutter mobile development.

Best of luck 🤞

 18 hours ago 

So I made examples in the Dart language to get used to the syntax. By the way, I really liked the color theme https://dartpad.dev/
I wanted not only to write homework, but also to practice Python/Dart languages, which I have not learned much

Yeah dart and flutter offers amazing interface and other features. You are welcome to learn much more.

Loading...

Your post has been rewarded by the Seven Team.

Support partner witnesses

@seven.wit
@cotina
@xpilar.witness

We are the hope!

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.028
BTC 63099.80
ETH 2455.59
USDT 1.00
SBD 2.58