Гарний був курс, особливо початківцям. Адже їм нерідко все дається важко, так як перший раз зі всім стикаються. А тут саме основам слід приділяти велике значення. Багато хто не любить псевдокод/алгоритми блок схеми. Але вони вкрай важливі, я сам з цим зіштовхнувся коли розв'язував складну задачу і довелося таки складати блок- схему.
Розкажіть про свій досвід роботи з програмуванням, це був ваш перший раз? Вам це здалося складним? Яка була ваша улюблена частина курсу?
В останні роки школи у нас з'явився предмет ОІОТ - основи інформатики і обчислювальної техніки, часто цей курс вівся без комп'ютерів, іноді з калькуляторами. А іноді з комп'ютерами. Моїй школі пощастило - в нас комп'ютери були. Мені, як і напевне всім, комп'ютери сподобалися. Дискети лише у вчителя, та й то лиш декілька ігр. А вмикаєш комп'ютер і одразу там Бейсик. То ж так я і познайомився з програмуванням. В ті часи не те що інтернету, книг не було. А якщо була книга -то якийсь один із сотень діалектів Бейсика. Та я ще в школі писав програми, психологічні тести, програма-тест з математики. Не скажу що складно, навпаки було легко. Легко було й в інституті, щоправда я вчився не на програміста, а на вчителя. Тому ми вчили це все не так глибоко. Та й мов тоді було не так багато. Найкраще, і мені найбільше подобається мова С. А от вже С++ давалася мені з труднощами, і сучасний її варіант доволі глибокий - але я вчу ії потроху.
В цьому курсі мені сподобалася третя частина. А, ще мені сподобалася програма PseInt - жаль лиш вона навіть не англомовна. В тертій частині, де мова йде про операції, особливо про логічні операції та логічні змінні. Цікавим біло завдання де треба було розв'язати задачу на логічних змінних а не на if
Додайте функції множення та ділення до калькулятора курсу. Поясніть, як ви це зробили.
#include <stdio.h>
double add(double number1, double number2);
double subtract(double number1, double number2);
double multiply(double number1, double number2);
double divide(double number1, double number2);
int main()
{
double number1, number2;
int choice;
do
{
printf("+-----------------------+\n");
printf("| Simple Calculator |\n");
printf("+-----------------------+\n");
printf("| 1. Add |\n");
printf("| 2. Subtract |\n");
printf("| 3. Multiply |\n");
printf("| 4. Divide |\n");
printf("| 5. Exit |\n");
printf("+-----------------------+\n");
printf("Enter your choice: ");
scanf("%d", &choice);
if (choice >= 1 && choice <= 4)
{
printf("Enter two numbers: ");
scanf("%lf %lf", &number1, &number2);
}
switch (choice)
{
case 1:
printf("Result: %.2lf\n", add(number1, number2));
break;
case 2:
printf("Result: %.2lf\n", subtract(number1, number2));
break;
case 3:
printf("Result: %.2lf\n", multiply(number1, number2));
break;
case 4:
if (number2 == 0)
printf("Error: Division by zero is not allowed.\n");
else
printf("Result: %.2lf\n", divide(number1, number2));
break;
case 5:
printf("Good bye...\n");
break;
default:
printf("Invalid choice, please try again.\n");
}
} while (choice != 5);
return 0;
}
double add(double number1, double number2)
{ return number1 + number2; }
double subtract(double number1, double number2)
{ return number1 - number2; }
double multiply(double number1, double number2)
{ return number1 * number2; }
double divide(double number1, double number2)
{ return number1 / number2; }
Перш за все я додав пункти меню для Множення та Ділення, далі в оператор вибору switch()
я додав ще два випадки відповідно до пунктів меню. А потім я дописав дві функції. Після створення основної програми, додавання нових пунктів меню - доволі легко. Єдине що слід тепер перевіряти - це ділення на нуль.
ФІНАЛЬНИЙ ПРОЕКТ: Створення симулятора банкомату. Спочатку він повинен надіслати користувачеві запит на PIN-код доступу, цей PIN-код – 12345678. Після успішної перевірки PIN-коду він має показати меню, яке дозволяє: 1. переглядати баланс, 2. вносити гроші, 3. знімати гроші, 4. виходити. Касир не повинен дозволяти зняти більше залишку, ніж є. Використовуйте всі вивчені структури та функції.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define PIN 12345678
void Menu();
void Balance(double balance);
bool check_pin();
double Deposit(double balance);
double Withdraw(double balance);
int main()
{
if (!check_pin())
{
printf("Invalid PIN. Access denied.\n");
return 0;
}
int option;
double balance = 1000.0;
do
{
Menu();
printf("Please choose an option: ");
scanf("%d", &option);
switch (option)
{
case 1:
Balance(balance);
break;
case 2:
balance = Deposit(balance);
break;
case 3:
balance = Withdraw(balance);
break;
case 4:
printf("Thank you for using our ATM service. Have a great day!\n");
break;
default:
printf("Invalid selection. Please try again.\n");
}
printf("\n");
} while (option != 4);
return 0;
}
void Menu()
{
printf("+-----------------------------+\n");
printf("| ATM Options |\n");
printf("+-----------------------------+\n");
printf("| 1. Check Account Balance |\n");
printf("| 2. Add Funds |\n");
printf("| 3. Withdraw Funds |\n");
printf("| 4. Exit |\n");
printf("+-----------------------------+\n");
}
void Balance(double balance)
{
printf("Your current account balance is: $%.2f\n", balance);
}
double Deposit(double balance)
{
double deposit;
printf("Enter the amount you wish to deposit: $");
scanf("%lf", &deposit);
if (deposit > 0)
{
balance += deposit;
printf("Successfully added $%.2f. Updated balance: $%.2f\n", deposit, balance);
}
else
{
printf("Invalid deposit amount. Please enter a positive number.\n");
}
return balance;
}
double Withdraw(double balance)
{
double withdraw;
printf("Enter the amount you wish to withdraw: $");
scanf("%lf", &withdraw);
if (withdraw > 0 && withdraw <= balance)
{
balance -= withdraw;
printf("Successfully withdrew $%.2f. Remaining balance: $%.2f\n", withdraw, balance);
}
else if (withdraw > balance)
{
printf("Insufficient funds. Your current balance is $%.2f.\n", balance);
}
else
{
printf("Invalid amount. Please enter a positive number.\n");
}
return balance;
}
bool check_pin()
{
int seret;
printf("Enter your 8-digit PIN to proceed: ");
scanf("%d", &seret);
if (seret == PIN)
{
printf("Access granted. Welcome!\n\n");
return 1;
}
return 0;
}
Головна програма починається з з виклику функції перевірки пін-коду, якщо він не вірний - програма завершується.
Далі починається цикл роботи з банкоматом.
На початку виводимо меню - хоч вивід меню не потребує ніякої логіки - лише вивід тексту, використання в цьому місці функції дає можливість зосередитися на роботі циклу, а не виводі меню.
Далі вводимо пункт меню після чого оператор вибору здійснює виконання відповідного коду як реакції на наш вибір.
Можна було б навіть цей вивід зробити викликами функції
case 4:
printf("Thank you for using our ATM service. Have a great day!\n");
break;
default:
printf("Invalid selection. Please try again.\n");
}
Тоді читаючи код ми не відволікаємося на деталі, а сприймаємо роботу циклу на більш високому рівні. Це одна із головних переваг функцій.
switch (option)
{
case 1:
Balance(balance);
break;
case 2:
balance = Deposit(balance);
break;
case 3:
balance = Withdraw(balance);
break;
case 4:
GoodByeExit();
break;
default:
InvalidSelecTryAgain();
}
Ще одна вагома перевага у використанні функцій - повторне використання коду, наприклад Deposit() та Withdraw() можна було використати аналогічно для іншого банкомату, чи пристрою що працює з додаванням ти зняттям коштів.
Запрошую прийняти участь,
@daprado1999 @roland222 @hudamalik20 @alexanderpeace @aneukpineung78
Дякую за уроки, сподіваюся зустрінемося в новому, 21 сезоні.