Урок 2

Блоки кода

Программа исполняется не по принципу “Делай все подряд”, а блоками. Блок кода — это код, который выполняется последоватьно от начала до конца. Что бы конкретный блок выполнился, его надо вызвать. Вызов — это обращение к конкретной области кода, памяти или иных ресурсов. В разных языках программирования блоки кода выделяются по-разному. Где то зарезервированными сломами begin и end, где то фигурными скобками { и }. В языке Python для обозначения блоков используются отступы (знак табуляции или 4 символа пробела).

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

Где же применяются блоки? Обычно ими выделяют код, который относится к функциям, условным операторам, циклам и тд. Т.е тот код, который должен исполниться только в случае обращения.

Пример:

#Это однострочный комментарий, он игнорируется интерпритатором
#Комментарии служать как помощь, пояснение или напоминания для самих разработчиков
#Код ниже исполнится в любом случае, так как перед ним нет никаких отступов
print ("Hello world!")
#Далее идет условный оператор, так же на первом уровне.
if True: #Знаком двоеточие обозначают начало кода, который относится в данной конструкции
	#Как можно заметитть, появился отступ
	#значит этот код выполнится только в случае, если в условии if будет значение True
	print ("Этот код выполнится, только в случае True в операторе if")
	print ("Вторая команда оператора if")
	a=3
	b=3
	if a==b:
		#Следующий if
		#Следующий уровень
		#Код выполнится ТОЛЬКО в случае, если в этом if мы получаем True
		print ("a = b") 
#Этот код уже на первом уровне, значит он будет исполняться в любом случае
print ("Этот текст напечатается всегда")

Циклы

Не редко случаются ситуации, когда необходимо один и тот же код выполнить множество раз. Это можно сделать разными способами: написал подряд один и тот же код, сделать сложные и ветвящиеся if-ы и тд. Но стоит помнить, что чем больше и сложнее код, тем он хуже работает, тем проще допустить в нем ошибку и тем сложнее его поддерживать. По этому правильно использовать ЦИКЛЫ.

Цикл — по сути это повторы выполнеия одних и тех же шагов. Есть два основных типа циклов: while и for

Цикл while

Пример:

a=10
while a>0:
	#Отступ. Значит код ниже относится к циклу
	print (a)
	a-=1

Цикл while выполняется пока услове его выполнеия равно True.

В примере выше переменной a присвоено значение 10. Затем запускается цикл while в котором сравнивается значение a с нулем. Если а больше 0, то мы выводим текущее значение a, и следующим шагом вы вычитаем из текущего значения a единицу. Затем мы возвращаемся в начало цикла и вновь сравниваем с 0. Если вновь число больше 0 — повторяем все шаги. И так до тех пор, пока после выполнения a-=1 переменная a не станет равно 0. В этом случае на этапе сравнения мы получим False и цикл прекратит свое выполнения (шаги не будут выполнены)

В результате вывод программы будет:

10
9
8
7
6
5
4
3
2
1

Конструкция -= — это сокращенное вычитание. Так же может быть +=, *=, /=. Формат:
<переменная, которую мы модифицируем> += <число, на которую мы изменяем эту переменную>

Есть дополнительные операторы для управления циклом. Кратко о них:

Оператор continue — используется для перехода на следующий шаг, с пропуском всех оставшихся оператов в цикле

Оператор break — выход из цикла, не смотря на то, что условие выхода не достигнуто

Пример:

a=10
while True: #Запуск бесконечного цикла, так как всегда будет True
	if a==5: #Если а равно 5, то присваеваем значение 3 и переходим на следующий шаг
		a=3
		print ("Пора бы пропустить уже хотя бы шажок")
		continue
	print (a)
	a-=1
	if a==-1:
		print ("ну хватит уже")
		break

Результат:

10
9
8
7
6
Пора бы пропустить уже хотя бы шажок
3
2
1
0
ну хватит уже

Такой резудльтат, потому что каждый шаг цикла мы вовдим число а и уменьшем его на единицу. В случае, если оно равно 5 то выведется текст и значению a присвоется 3. После того, как значение а станет равно -1 произойдет выход из цикла.

Цикл for

Цикл for является аналогом цикла while. Отличие лишь в том, что while работает до тех, пока условие выполнения True, а фор перебирает значения в каком либо списке. Выполнение цикла заканчиваются, когда в списке не останется непройденных элементов.

Пример:

for i in <list>:
	#команды, которые будут выполняться в цикле

В качестве списка можно использовать как созданный ранее, так и воспользоваться командой из прошлого урока range()

Пример применения range(), программа выведит числа от 0 до 10 (на экран выведится число 9 последним)

for i in range(10):
	print (i)

в результате будет

0
1
2
3
4
5
6
7
8
9

Все команды что управляют циклом while так же работают с циклом for

Цикл for используется именно для переборов: перебор строк в файле, перебор объектов в любом массиве и тд. Цикл while используется когда необходимо зацикленные приложения делать, когда необходимо циклы по условиям делать и тд.

Задание:

Необходимо реализовать приложение калькулятор.
При запуске программа запрашивает действие — сложение, вычитание, умножение или деление. Так же пользователь может выйти, напечатав букву Q.
После ввода желаемого арифметического действия, программа должна запросить два числа и вывести результат этого действия

Задание 2:

Составить задачу-расчет зп сотрудников компании.
Алгоритм расчета — зная дневную ставку каждого сотрудника, вычислить сколько сотрудник заработает от 1 числа месяца до указанного. Так же необходимо учесть возможность выплаты премий (стандартная премия равна 2-м дневным ставкам, премий в месяц может быть выдано скольно угодно)

При старте программы пользователю должно отобразиться меню, где будут предложены следующий варианты:

  1. Просмотр списка сотрудников (выводит их имена и ставки)
  2. Добавление нового сотрудника (при добавлении указывается Имя и Фамилия, а так же дневная ставка)
  3. Изменить дневную ставку сотрудника
  4. Назначение премии
  5. Расчет зп до конкретной даты
  6. Обнуление месяца (по сути — сброс всех премий)

В случае выбора 4 пункта, программа должна спросить, до какого числа расчитать зарплату. Далее должен произойти расчет зп до этой даты, к этой цифре должна добавиться вся назначенная премия.

В рамках данной программы взять 1 число за понедельник

Доп задание:

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