Сергей Иванов

Основы псевдокода

Как вы уже знаете, псевдокод - это способ показать структуру алгоритма без каких-либо рисунков или объяснений. Теперь важно выяснить, как выглядит наш собственный псевдокод.

В этой теме мы договоримся о нескольких правилах: как присваивать переменную, как печатать вывод, как создать простую ветвь "if-else". Мы надеемся, что вы уже знаете некоторые языки программирования, поэтому вам будет легко научиться читать наш пользовательский псевдокод. И помните: чем больше вы смотрите на псевдокод, тем легче его понять!

Переменные и присвоение

Обратите внимание, что каждая строка в нашем алгоритме - это одно действие. Действия выполняются последовательно.

Давайте начнем изучать наш язык с базовых конструкций, таких как переменные и присваивание. Посмотрите на пример ниже:

a = 93

Здесь мы создаем переменную с именем a и присваиваем ей целое число 93. Синтаксис довольно прост: имя переменной - слева, значение - справа, оператор присваивания - между ними. Давайте рассмотрим другие примеры:

b = 3.14
s = "Hello"

Здесь мы присваиваем переменной b число с плавающей точкой 3.14, а переменной s - строку Hello. Для простоты мы не используем типы: не объявляем, что переменная s - строка, а переменная b - число с плавающей точкой.

Иногда возникает необходимость инициализировать несколько переменных последовательно. Для этого мы будем использовать следующий синтаксис:

a = 3
b = "text"
c = 5.5

или более короткую версию:

a, b, c = 3, "text", 5.5

Здесь переменная a равна 3, переменная b - это строка text, а переменная c - 5.5.

Если вам нужно изменить значение переменной, вы можете присвоить ей другое значение:

a = 3
a = 5

Сначала вы объявляете переменную a и присваиваете ей значение 3. Следующее действие присваивает переменной a значение 5. Следовательно, после этого фрагмента a равно 5.

Также вы можете присвоить значение одной переменной другой переменной:

a = 1.5
b = a

Сначала вы присваиваете 1.5 переменной a. Следующее действие присваивает значение a переменной b. После этого фрагмента a равно 1.5, и b также равно 1.5.

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

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

a = input() // a это число
b = input() // b это строка 

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

В некоторых задачах нам необходимо отправить данные на экран. Для этой задачи мы будем использовать следующий синтаксис:

s = "Hello"
print(s)

Здесь мы присваиваем переменной s строку Hello. Затем, чтобы напечатать ее, мы используем ключевое слово print с переменной s в круглых скобках. Довольно просто и естественно.

Комментарии

Еще один важный момент - как писать комментарии. Комментарий не является частью программы, это просто текст, который вы оставляете для себя или других читателей. Мы обозначаем комментарии знаком //. Например:

// это комментарий
a = 10  // присвоение 10 переменной a
b = 42  // другое задание

Комментарии можно писать как на отдельной строке, так и сразу после утверждений.

Арифметические операции

Почти любая программа требует обработки числовых данных. Для этого мы используем арифметические операции. В нашем псевдокоде они выглядят следующим образом:

a = 7
b = 2

sum = a + b // сложение, сумма равна 9
dif = a - b // вычитание, dif равно 5
 
prod = a * b // умножение, prod равно 14
quot = a / b // деление, quot равно 3,5
rem = a mod b // деление по модулю, rem равно 1
quot_int = a div b // целочисленное деление, quot_int равно 3

Чтобы выполнить арифметическую операцию с двумя числами, мы пишем первое слева, второе справа, а оператор между ними. Если мы хотим присвоить результат одной из переменных, мы используем следующий синтаксис:

a = 3
b = 5

a = a + b
a = a - b  

То же самое относится к умножению и делению.

Реляционные и логические операторы

Вы также можете использовать эти реляционные операторы в своем псевдокоде:

a == b // a равно b
a != b // a не равно b
a < b // a меньше b
a <= b // a меньше или равно b
a > b // a больше b
a >= b // a больше или равно b

Все эти операции возвращают true или false.

В случае сложного условия можно использовать логические операторы. and возвращает true, только если оба условия истинны. or возвращает false, только если оба условия ложны. not просто инвертирует значение. Это работает следующим образом:

true and true == true
true and false == false
false and true == false
false and false == false

true or true == true
true or false == true
false or true == true
false or false == false

not true == false
not false == true

Условные утверждения

Еще один часто используемый тип конструкции - условные утверждения. Давайте рассмотрим пример:

a = 3

if a < 5 then:
    print(a)

Здесь мы создаем переменную a и инициализируем ее числом 3. Затем мы проверяем, меньше ли a, чем 5, и если это так, то выводим его на экран. Синтаксис понятен: за ключевым словом if следует условие, и все последующие строки (которые отступают глубже, чем строка if) выполняются только в том случае, если условие истинно. Если вам нужно объединить несколько условий, вы можете использовать операторы and, or и not:

a = 10 
b = 20

if (a == 10 and b == 20) or not (a == 20 and b == 10) then:
    print(a)
    print(b)

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

Теперь после условия if можно поместить ветвь else. Эта ветвь будет выполнена, если условие будет false. Ниже показан пример с конструкцией if-else:

a = -3

if a > 0 then:
    print("positive")
else:
    print("negative or zero") // вывод

Кроме того, вы можете использовать ветвь elif. Оператор elif - это просто сокращение от else if. Программа проверяет это условие, если первое условие ложно:

a = -5

if a > 0 then:            // false
    print("positive")
elif a == 0 then:         // проверка
    print("zero")
else:
    print("negative")     // вывод 

Здесь мы проверяем, больше ли a 0, затем проверяем, равно ли оно 0, используя ветвь elif, и, наконец, выполняем последнюю ветвь else. Ниже показан тот же код без ветви elif:

a = -5

if a > 0  then:               
    print("positive")
else:
    if a == 0  then:          
        print("zero")
    else:
        print("negative") 

Резюме

Мы рассмотрели такие конструкции, как переменные, присваивание, арифметические операции и другие. Этих основ уже достаточно, чтобы выразить некоторые алгоритмические идеи.

https://hyperskill.org/learn/step/19510