Skip to content

Latest commit

 

History

History
executable file
·
186 lines (131 loc) · 10.3 KB

01_Variables_typing_flowcharts.md

File metadata and controls

executable file
·
186 lines (131 loc) · 10.3 KB

Урок 1. Переменные, блок-схемы, типизация

Все в программировании структурировано, подчиняется логике, алгоритмизированно.

Написание программы требует в первую очередь не знания языка, а умения строить логические цепочки, связывать события между собой, т.е. строить алгоритмы.

Для построения алгоритмов рекомендуется использовать блок-схемы. Первое время студентам настоятельно рекомендуется строить блок-схемы даже для самых простых задач, далее - только для тех, которые кажутся им сложными.

Блок-схемы

Блок-схемой называется графическое представление алгоритма. В блок-схеме шаг или последовательность шагов алгоритма представляется в виде блока, а между блоками устанавливаются связи.

Начало и конец алгоритма изображаются скругленными прямоугольниками, обычные действия - прямоугольниками, условия - ромбами, ввод и вывод данных - параллелограммами. Для более подробного ознакомления с блок-схемами читайте википедию на эту тему, и см. правило 2.

Для примера построим блок-схему алгоритма написания программы. Рекомендуется использовать Google Drawings (для этого создаем почту gmail, заходим на google drive, new->more->google drawings document)

Переменные в PHP: определение, типы данных

Переменной называется поименованная область в памяти, где хранятся данные. Переменная имеет тип и имя. Имена переменных в PHP всегда начинаются со знака доллара. Для того, чтобы создать переменную и записать в нее значение, используется оператор присвоения (=). У каждой переменной в php в текущий момент времени может быть только один тип.

Типом переменной называется тот вид данных, который на данный момент может хранить переменная. Все виды данных в языках программирования можно отнести к двум группам: скалярные (простые) типы данных и структурированные (составные) типы данных.

На этом уроке мы работаем только со скалярным типом данных integer (целые числа) и структурированным типом данных string(строка), представляющим собой последовательность символов. Подробнее структурированные типы данных будут рассмотрены на следующих уроках.

Далее представлены переменные различных скалярных (простых) типов:

$my_integer = 4;     //целые числа
$my_float = 4.12;    //дробные числа
$my_str = 'aaa';     //символы
$my_bool = true;     //правда или ложь, булева алгебра

Нестрогая динамическая типизация

PHP - язык со слабой динамической типизацией.

Динамическая типизация означает, что одну и ту же переменную можно сначала инициализировать строкой, потом числом, потом булевым значением, и так далее. Языки со статической типизацией, как язык C, Java, подобного не позволяют.

Слабая типизация означает, что язык сам меняет тип переменной в зависимости от ее использования. К примеру, если прибавить к числу строку, в которой записано число, язык автоматически прибавит число, находящееся в строке. Слабая типизация является причиной многочисленных ошибок.

Простейшие математические операции

Над целыми и дробными числами доступны математические операции умножения (+), деления(/), вычитания(-), сложения(+), возведения в степень(**) и получение остатка от деления(%):

$int1 = 4;
$int2 = 8;
$result = $int1 + $int2;  // $result = 12
$result = $int2 - $int1;  // $result = 4
$result = $int1 * $int2;  // $result = 32
$result = $int2 / $int1;  // $result = 2
$result = $int2 ** $int1; // $result = 4096
$result = $int2 % $int1;  // $result = 0

Ввод и вывод данных

Для вывода данных используются функции

echo, print, print_r, var_dump

Мы познакомимся с этими функциями позже, пока нам достаточно знать следующее:

$int1 = 4;
$str1 = "8";
echo $int1;   //выведет 4
echo 'text'; //выведет text
echo "text"; //выведет text
echo '$str1';//выведет $str1
echo "$str1";//выведет 8

Первая программа

В качестве первой программы мы напишем небольшой скрипт. Скрипт будет получать на вход суммы денег, суммировать их и прекратит свою работу, когда сумма превысит тысячу (к примеру, долларов США). Каждую введенную сумму скрипт будет распределять по шести "конвертам":

  • Конверт на "необходимые траты и нужды" получает 55% всех средств.
  • Конверты на "финансовую свободу", "образование", "резерв и больше покупки" и "развлечения" получают по 10% средств.
  • Конверт "на подарки" получает оставшиеся 5% средств

Для удобства работы с программой она будет разбита на небольшие куски. Внутри программы есть комментарии на английском языке, а вне кода куски программы прокомментированы на русском.

Инициализация переменных конвертов и коэффициентов:

<?php
//First program: envelops.php

//initializing empty envelops
$necessityEnvelop = 0; //NEC, необходимые траты
$freedomEnvelop = 0;   //FFA, финансовая свобода
$educationEnvelop = 0; //EDU, образование
$longTermEnvelop = 0;  //LTSS, резерв и на большие покупки
$playEnvelop = 0;      //PLAY, развлечения
$giveEnvelop = 0;      //GIVE, подарки

//initializing percent rate
$necRate = 0.55;
$ffaRate = 0.1;
$eduRate = 0.1;
$ltssRate = 0.1;
$playRate = 0.1;
$giveRate = 0.05;

Вывод приглашения в консоль:

//initializing expected income, expected necessity and other amounts
$expectedIncome = 1000;

//invitation, greetings etc.
echo "Hello.\n
We gonna fill your envelops by the money you input here!\n
Please input your amounts of money income and see the results.\n
Press Ctrl+c to exit script.
\n\n Enter the amount please:";

Основной цикл работы программы:

//initializing handler for standard input
$handle = fopen ("php://stdin","r");
$sum = 0;
while ($sum < $expectedIncome) {
    $line = fgets($handle);
    $sum += $line;

    $necessityEnvelop += $line * $necRate;
    $freedomEnvelop += $line * $ffaRate;
    $educationEnvelop += $line * $eduRate;
    $longTermEnvelop += $line * $ltssRate;
    $playEnvelop += $line * $playRate;
    $giveEnvelop += $line * $giveRate;

    echo "\n Enter the amount please:";
}

Строка

$handle = fopen ("php://stdin","r");

означает следующее: в переменную $handle будут поступать данные со стандартного потока ввода (из консоли), а строка

$line = fgets($handle);

означает "считать в переменную $line одну строку из консоли".

Результирующий вывод данных:

//final output

echo "At the end we have:\n
    Necessity Envelop has:                       $necessityEnvelop 
    Financial Freedom Envelop has:               $freedomEnvelop
    Education Envelop                            $educationEnvelop
    Long Term Saving for Spending Envelop has:   $longTermEnvelop
    Play Envelop has:                            $playEnvelop
    Give Envelop has:                            $giveEnvelop
    _______________________________________________________________

    Thanks for using our software :)"
    

Полезные cсылки

Домашнее задание

Правила для студентов

Второй Урок