Инфоурок Информатика Другие методич. материалыРеферат "Операции, функции, выражения в средах Python и Lazarus"

Реферат "Операции, функции, выражения в средах Python и Lazarus"

Скачать материал

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Мордовский государственный педагогический университет им. М. Е. Евсевьева

Физико-математический факультет

Кафедра физики, информационных технологий и методик обучения

 

 

РЕФЕРАТ

На тему: «Операции, функции, выражения в средах Python и Lazarus»

 

 

 

         Работу выполнил:

Студент 4 курса группы МДФ-119

Физико-математического факультета

Юдин Илья Сергеевич

 

Работу проверил:

Кандидат физико-математических наук, доцент

Кормилицына Татьяна Владимировна

 

 

 

 

 

 

 

Саранск ­­– 2022

Содержание

1. Введение

2.

2.1

2.2

         2.2.1

         2.2.2

2.2.3

         2.2.4

2.2.5

         2.2.6

2.2.7

         2.2.8

2.2.9

         2.2.10

3.

3.1

3.2

         3.2.1

3.2.2

3.2.3

3.2.4

3.2.5

        

 

 

 

 

 

 

 

 

 

 

 

Введение

Прежде всего, следует напомнить, что изучение языка программирования представляет собой знакомство с формальными правилами записи алгоритмов для их последующего выполнения компьютером. Формальность сия проистекает из самих принципов, заложенных в архитектуру вычислительных устройств, и жесткости математической логики. Поэтому, постарайтесь воспринять все довольно строгие правила как неизбежность, настроить себя на серьезную, скрупулезную, порой сложную работу. Однако не стоит бояться, расстраиваться и сетовать на судьбу: немного аккуратности, внимания, знания предыдущего материала - и вы уже программист.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pascal.

Основные понятия.

Как и любой алгоритм, являющийся, как вы помните, последовательностью инструкций, программа на языке Паскаль состоит из команд (операторов), записанных в определенном порядке и формате.

Команды позволяют получать, сохранять и обрабатывать данные различных типов (например, целые числа, символы, строки символов, т.д.). Однако кроме команд в записи программы участвуют еще так называемые "служебные слова". Это и есть элементы формальности, организующие структуру программы. Их не так много, но их значение трудно переоценить. Служебные слова можно использовать только по своему прямому назначению. Переопределять их не разрешается.

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

Основная структура программы.

Правила языка Паскаль предусматривают единую для всех программ форму основной структуры:

Program <Имя программы>;

<Раздел описаний>

Begin

<Тело программы>

End.

Здесь слова Program, Begin и End являются служебными. Правильное и уместное употребление этих слов является обязательным.

Угловые скобки в формате указывают на то, что вместо них при реальном программировании должно быть подставлено конкретное значение. Сама запись программы в принципе может производиться вообще в одну стоку. При этом ее части должны отделяться друг от друга хотя бы одним пробелом. Однако, такая запись неудобна для чтения, недостаточно наглядна, поэтому я рекомендую придерживаться приведенной структуры, а в теле программы по возможности записывать по одному оператору в строке.

Имя программы выбирается программистом самостоятельно в соответствии с правилами построения идентификаторов.

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

1. Описание меток (Label).

2. Описание типов (Type).

3. Описание констант (Const).

4. Описание переменных (Var).

5. Описание процедур и функций (Procedure, Function).

При отсутствии необходимости в каком-либо виде объектов, соответствующий подраздел может быть опущен.

Алфавит языка.

Основу любого языка составляет алфавит, то есть конечный, фиксированный набор символов, используемых для составления текстов на данном языке (в нашем случае - программ). Конечно, стройность картины немного портит наличие диалектов, создающихся стихийно и очень часто включающих в себя апокрифические (неканонические) буквы и знаки. В программировании эта проблема решается введением понятия "стандарт языка". Оно практически неприменимо к языкам человеческим, вечно развивающимся и изменяющимся. Мы с вами в основном будем говорить о той самодостаточной части языка Паскаль, которая входит в различные его компьютерные реализации в неизменном виде. В плане изучения, я не вижу большого смысла излагать вам строгие правила стандарта, хотя такие существуют. Ограничимся некоторыми замечаниями, раскрывающими все же формальности употребления символов в языке Паскаль.

Итак, алфавит языка Паскаль составляют:

1) буквы латинского алфавита;

2) арабские цифры;

3) специальные знаки.

Использование символов первой группы чаще всего вопросов не вызывает, но свои тонкости здесь имеются. Во-первых, это употребление заглавных и строчных букв. Большинство существующих трансляторов не различают буквы разных регистров. Таким образом, записи "progRaM" и "PROGram" будем считать идентичными. Во-вторых, некоторые символы латиницы и кириллицы совпадают по начертанию. Нельзя ли вместо буквы "К" латинской написать "K" русскую? Ответ: в тетради (если вы их сможете различить) - пожалуйста, в программе на ЭВМ - ни в коем случае. На вид они может быть и похожи, но уж коды-то у них совершенно разные, а компьютер, как вам известно, оперирует внутри себя не буквами, а их числовыми кодами.

По поводу привычных арабских цифр сказать можно только то, что с их помощью записываются не только числа. Цифры в качестве обыкновенных символов могут использоваться в различных других конструкциях языка.

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

Наиболее часто употребляемым специальным символом является пробел (в значимых местах мы будем обозначать его в записях знаком "V"). Его использование связано с форматами основной структуры программы, разделов описаний, операторов. Не следует путать наличие пробела с отсутствием символа.

. конец программы, разделение целой и дробной частей вещественного числа (десятичная точка), разделение полей в переменной типа Record;

, разделение элементов списков;

.. указание диапазона;

: используется в составе оператора присваивания, а также для указания формата вывода в операторе Writeln;

; отделяет один раздел программы от другого, разделяет операторы;

' используется для ограничения строковых констант;

- + * / ( ) арифметические знаки (используются по своему назначению);

< > знаки отношений;

= используется в составе оператора присваивания, в разделах описаний констант и типов, используется как знак отношения (равно);

@ имя специального оператора определения адреса переменной, подпрограммы;

^ используется для именования динамических переменных;

{} ограничение комментариев в программе;

[ ] заключают в себе индексы элементов массивов;

_ символ подчеркивания используется также как любая буква, например, в идентификаторах - вместо пробела;

# обозначение символа по его коду;

$ обозначение директивы компилятора, обозначение шестнадцатеричного числа.

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

Идентификаторы.

Имена операторов, переменных, констант, типов величин, имя самой программы назначаются программистом и называются в Паскале идентификаторами. Существуют правила, которым должны отвечать все идентификаторы:

идентификатор должен быть уникальным, то есть одним и тем же именем разные объекты не могут быть названы;

идентификатор имеет ограничение по длине (зависит от конкретной реализации языка на компьютере);

идентификатор может состоять только из символов латинского алфавита, цифр и знака подчеркивания ("_");

идентификатор не может начинаться с цифры.

Константы.

Из всех подразделов описаний сейчас мы рассмотрим только описание констант и переменных, остальные - позже.

Вообще говоря, в Паскале константами являются любые явно заданные в программе данные (например, 7493, 'привет', 54.899). Следует обратить ваше внимание на то, что при записи числовых констант с дробной частью эта часть отделяется от целой не запятой, как, возможно, вы привыкли, а точкой. Для записи очень больших по модулю или очень малых (близких к нулю) чисел существует возможность записи их в так называемой экспоненциальной форме. С такой записью вы встречались в математике и физике, но называли ее стандартным видом числа.

Пример: 2 . 4 5 6 7 Е - 0 6

^мантисса ^порядок

Здесь буква "Е" отделяет мантиссу (совокупность значащих цифр числа с десятичной точкой после первой) от порядка (показателя степени десятки в стандартном виде числа). Вам предстоит научиться как читать числа в таком виде, так и записывать.

Константы, представляющие собой строковые величины, заключаются в апострофы.

Если одна и та же величина используется в программе несколько раз, то удобнее было бы обозначить ее каким-нибудь именем и использовать это имя везде, где требуется записать соответствующую константу. Кроме сокращения размера исходного текста программы, это позволит избежать случайных ошибок, а также упростит отладку программы. Описание именованных констант начинается служебным словом Const. Далее следуют записи вида: <Идентификатор>=<значение>;

Пример:

Const

Pi=3.14;

Name1='Татьяна';

Name2='Виктор';

R21=6.33187E+03;

W_W_W=934122;

Оператор присваивания. Арифметические выражения.

Самым простым действием над переменной является занесение в нее величины соответствующего типа. Иногда говорят об этом, как о присвоении переменной конкретного значения. Такая команда (оператор) в общем виде выглядит на языке Паскаль следующим образом:

<Имя переменной>:=<Выражение>;

Выражение, указанное справа от знака ":=", должно приводить к значению того же типа, какого и сама переменная, или типа, совместимого с переменной относительно команды присваивания. Например, переменной типа Real можно присвоить значение типа Integer или Word (впрочем, наоборот делать нельзя). Выражение будет сначала вычислено, затем, его результат будет положен в ячейки памяти, отведенные для переменной.

Что же представляет собой выражение на языке Паскаль? Многое зависит от типа выражения. Рассмотрим сначала выражения арифметические, то есть те, результатом которых является число.

В состав арифметического выражения на языке Паскаль могут входить:

числовые константы;

имена переменных;

знаки математических операций;

математические функции и функции, возвращающие число;

открывающиеся и закрывающиеся круглые скобки.

Правила построения выражений напоминают математические с некоторыми уточнениями. Выражение записывается в одну строку (никакой многоэтажности), между операндами обязательно должен стоять знак операции (Запись "2x" - не допускается), знаки некоторых операций и названия некоторых функций отличны от привычных вам.

Операции:

+ сложение;

- вычитание;

/ деление;

* умножение;

MOD остаток от деления (записывается так: A MOD B; читается: остаток от деления A на B); эта операция применима только к целым числам;

DIV целочисленное деление (записывается так A DIV B; читается: результат деления A на B без дробной части); эта операция тоже применяется только для целых операндов.

Аргументы функций всегда записываются в круглых скобках:

SIN(X) sin x;

COS(X) cos x;

ARCTAN(X) arctg x;

ABS(X) абсолютное значение x (в математике - |x|);

SQR(X) возведение x в квадрат;

SQRT(X) извлечение квадратного корня;

TRUNC(X) отбрасывание дробной части х;

ROUND(X) округление х до ближайшего целого числа;

После выполнения второго оператора присваивания в участке памяти, отведенном под переменную R, окажется результат указанного выражения, однако, к сожалению, узнать его мы не сможем, поскольку пока не имеем возможности "заглянуть" в память машины, вывести значение переменной хотя бы на экран.

Составной оператор

Этот оператор, строго говоря, оператором не является. Дело в том, что также как арифметические действия иногда бывает необходимо заключать в скобки, последовательности команд (операторов) тоже иногда требуют объединения. Это позволяют сделать так называемые операторные скобки. Формат (общий вид) составного оператора таков:

Begin

<Оператор 1>;

<Оператор 2>;

......

<Оператор N>

End;

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

Обратите внимание на то, что точка с запятой перед End может не ставиться.

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

Операторы ввода и вывода информации

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

Взаимодействие устройств обработки и хранения информации с внешней средой (хотя бы с пользователем) является совершенно необходимым. За такой интерфейс в языке Паскаль отвечают операторы ввода-вывода информации. Эти инструкции позволяют ввести аргументы, параметры расчетов во время выполнения программы (а не на этапе ее написания), осуществить вывод рассчитанных данных в понятном человеку виде.

Сначала операторы ввода (форматы операторов):

Read(<Список ввода>);

Readln(<Список ввода>);

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

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

Примечание: данные при вводе разделяются пробелами.

Разница между работой процедур Read и Readln (от Read line) состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln - с новой строки.

Для вывода информации в Паскале также есть две команды:

Write(<Список вывода>);

Writeln(<Список вывода>);

Такой формат использования Write и Writeln позволяет выводить на экран монитора данные из списка вывода. Элементами списка вывода могут являться имена переменных, выражения, константы. Прежде чем вывести на экран компьютер значения выражений сначала вычислит. Элементы списка, также как и в операторах ввода, разделяются запятыми.

Различие между двумя операторами вывода таково: после выполнения оператора Writeln (от Write line) происходит переход на новую строчку, а после выполнения инструкции Write, переход на новую строчку не происходит и печать по последующим командам вывода Write или Writeln будет происходить на той же строчке. При вызове оператора Writeln без параметров просто происходит переход на новую строчку.

Приведем пример использования операторов ввода и вывода:

Program Inteface;

Var

R,S : Real;

Begin

Write('Введите радиус круга '); {Печать на экране просьбы о вводе}

Readln(R); {Ввод значения в переменную R с клавиатуры}

S:=4*ARCTAN(1)*SQR(R); {Вычисление площади круга (pR2)}

Writeln('Площадь круга радиусом ',R,' равна ',S)

End.

Эта программа запрашивает у пользователя значение радиуса круга, обеспечивает возможность ввести его значение, рассчитывает и выводит на экран величину площади круга с таким радиусом. Таким образом, появляется возможность, не внося изменений в текст программы, вводить различные значения радиуса и получать, соответствующие им значения площади круга. Для этого достаточно несколько раз запустить программу. Также эта программа демонстрирует следующее правило: выдача результатов должна быть прокомментирована так, чтобы был ясен смысл напечатанных чисел. Действительно, ведь можно было бы ограничиться Writeln(S), но значение выведенного программой числа в этом случае было бы ясно только тому, кто эту программу написал.

Метки. Оператор безусловного перехода.

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

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

Label 1, 2, 8;

Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием.

Пример:

6: Writeln(14/2);

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

Goto <метка>;

Оператор, к которому происходит переход должен быть помечен данной меткой.

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

Условный оператор

Одной из основных алгоритмических структур является ветвление (альтернатива).

Если условие выполняется, то будет выполнена инструкция "1", если нет, то - инструкция "2". Несмотря на то, что в схеме присутствуют два действия, выполнено будет только одно, так как условие либо ложно, либо истинно. Третьего не дано. Такая схема позволяет решать задачи, в которых в зависимости от сложившихся обстоятельств требуется совершить то или иное действие. Нет никакого сомнения, что число задач такого рода огромно. Более того, очень сложно придумать реально значимое задание, алгоритм выполнения которого содержал бы в себе простое прямое следование команд. Даже примитивный пример, взятый из курса математики, как вы увидите, не может быть решен без использования ветвления. Итак, необходимо вычислить значение выражения y=1/x. Вам известно, что данная функция не всегда имеет значение, то есть не для всех значений аргумента существует значение результата. Наша задача так составить алгоритм, чтобы исполнитель ни в коем случае не встал в тупик, даже при получении нуля в качестве аргумента. Сформулировать это на естественном языке не трудно:

1. Получить значение x.

2. Если x=0, то сообщить, что выражение значения не имеет, иначе - вычислить y как 1/x.

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

Если <усл.> {Если выполняется условие}

то <действие 1> {то выполнить действие № 1 }

иначе <действие 2> {иначе - выполнить действие № 2 }

все

Как это записать на Паскале? Да точно так же, только по-английски.

Формат условного оператора на языке Паскаль:

If <условие>

Then <оператор 1>

Else <оператор 2>;

Обратите внимание на то, что в Then- и Else- части стоит только один оператор. Но что делать, чтобы решить задачу, в которой по выполнению или невыполнению условия нужно совершить не одно, а несколько действий? Здесь приходит на помощь уже известный вам составной оператор. В операторные скобки можно заключить любое количество операторов.

Вариант условного оператора в этом случае:

If <условие>

Then Begin <группа операторов 1> end

Else Begin < группа операторов 2> end;

Знак "точка с запятой" не ставится перед служебным словом Else, но операторы в группах, естественно, отделяются друг от друга этим знаком.

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

В простых условиях могут применяться знаки операций сравнения: >(больше), <(меньше), =(равно), <>(не равно), >=(больше или равно), <=(меньше или равно).

Примеры простых условий: A=5 {Значение переменной А равно 5}

(C+D3)>=(D1*(45-2)) {Значение выражения в левой части больше либо равно значению выражения из правой части}

S<>'ABC' {Значение переменной S не равно строковой константе 'ABC'}

Приведем пример решения еще одной задачи: "Из двух чисел выбрать наибольшее".

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

Program Example;

Var A,B,C : Real; {A,B - для хранения аргументов, C - результат}

Begin

Writeln('Введите два числа');

Readln(A,B); {Вводим аргументы с клавиатуры}

If A>B Then C:=A Else C:=B; {Если A>B, то результат - A, иначе результат - B}

Writeln(C); {Выводим результат на экран}

End.

Еще один классический пример: "По заданным коэффициентам решить квадратное уравнение". Эта задача сложнее, поэтому перед тем как писать программу составим алгоритм, записав его в виде блок-схемы.

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

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

Program Sq1;

Var A, B, C, D, X1, X2 : Real;

Begin

Writeln ('Введите коэффициенты квадратного уравнения');

Readln (A,B,C);

D:=B*B-4*A*C;

If D<0 Then Writeln ('Корней нет! ')

Else

Begin

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)

End

End.

Интересно, что в качестве оператора, который выполняется по выполнению или невыполнению условия, может выступать условный же оператор. В этом случае говорят о вложенности условных операторов. Я настоятельно рекомендую при решении такого рода задач составлять блок-схему алгоритма в тетради. Только потом, при составлении программы, вам остается лишь аккуратно прописывать сначала всю Then- часть, а затем переходить к Else- части. Обычно при записи условных операторов на языке Паскаль (особенно при множественных ветвлениях) команды записывают уступом вправо и вниз. Это повышает наглядность, и, поверьте, снижает потери времени на отладку.

Для иллюстрации решим еще одну задачу: "решить уравнение вида A*x^2 + B*x + C = 0". Прошу не путать с квадратным уравнением, для которого нам было известно, что коэффициент А не равен нулю. Здесь же коэффициенты могут быть любыми числами. Исходя из элементарных математических рассуждений, получаем следующий алгоритм:

Program Sq2;

Var A, B, C, D, X, X1, X2 : Real;

Begin

Writeln ('Введите коэффициенты уравнения (A, B, C) ');

If A=0 Then

If B=0 Then

If C=0 Then Writeln('X - любое число')

Else Writeln('Корней нет! ')

Else Begin X:=-C/B; Writeln('X=',X:8:3) End

Else

Begin

D:=B*B-4*A*C;

If D<0 Then Writeln ('Корней нет! ')

Else

Begin

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)

End

End

End.

Цикл. Виды Циклов.

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

Как вы понимаете, повторять одни и те же действия можно и при помощи оператора безусловного перехода. Если записать эти действия в программе одно за другим, а в конце поставить оператор перехода к началу этого блока. Однако таким образом можно получить только программу, которая работает вечно (зацикливается). Этого можно избежать, используя совместно с оператором перехода условный оператор, поставив выполнение перехода в зависимость от выполнения некого условия. Таким образом, мы получим структуру условного перехода и возможность организации конечного цикла. Вообще говоря, так мы можем решить практически любую задачу, требующую реализации циклического алгоритма. Конечно же, при помощи одного только топора можно построить дом. Поставим перед собой вопросы: "А будет ли этот дом красив? Сколько времени и сил можно сэкономить, используя всевозможные специальные инструменты?". Создатель языка Паскаль Никлаус Вирт также задался этими вопросами и решил их в пользу расширения языка тремя специальными возможностями организации циклов. Для чего? - Для удобства, краткости, простоты чтения программы и, не побоюсь этого слова, красоты. Итак, существует три вида цикла, имеющих собственные операторы на языке Паскаль для их записи. Эти виды имеют собственные условные названия: "Пока", "До", "С параметром". Друг от друга они несколько отличаются и используются каждый для своего класса задач.

Цикл "ПОКА"

Группа операторов, называемая "телом цикла", судя по этой схеме, будет выполняться пока истинно условие цикла. Выход из цикла произойдет, когда условие перестанет выполняться.

Если условие ложно изначально, то тело цикла не будет выполнено ни разу. Если условие изначально истинно и в теле цикла нет действий, влияющих на истинность этого условия, то тело цикла будет выполняться бесконечное количество раз. Такая ситуация называется "зацикливанием". Прервать зациклившуюся программу может либо оператор (нажав Ctrl+C), либо аварийный останов самой программы, в случае переполнения переменной, деления на ноль и т.п., поэтому использовать структуру цикла следует с осторожностью, хорошо понимая, что многократное выполнение должно когда-нибудь заканчиваться.

На языке Pascal структура цикла "Пока" записывается следующим образом:

While <условие> Do <оператор>;

Правда, лаконично? По-русски можно прочитать так: "Пока истинно условие, выполнять оператор". Здесь, так же как в формате условного оператора, подразумевается выполнение только одного оператора. Если необходимо выполнить несколько действий, то может быть использован составной оператор. Тогда формат оператора принимает такой вид:

While <условие> Do

Begin

<оператор #1>;

<оператор #2>;

<оператор #3>;

. . .

End;

Цикл "ДО"

Этот вид цикла отличается от предыдущего в основном тем, что проверка условия повторения тела цикла находится не перед ним, а после. Поэтому цикл "До" называют циклом "с постусловием", а "Пока" - "с предусловием".

Обратите также внимание на то, что новая итерация (повторное выполнение тела цикла) происходит не тогда, когда условие справедливо, а как раз тогда, когда оно ложно. Поэтому цикл и получил свое название (выполнять тело цикла до выполнения соответствующего условия).

Интересно, что в случае, когда условие цикла изначально истинно, тело цикла все равно будет выполнено хотя бы один раз. Именно это отличие "до" от "пока" привело к тому, что в программировании они не подменяют друг друга, а используются для решения задач, к которым они более подходят.

Формат цикла на языке Pascal:

Repeat

<оператор #1>;

<оператор #2>;

<оператор #3>;

. . .

Until <условие>;

Читается так: "Выполнять оператор #1, оператор #2. : до выполнения условия".

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

Цикл "С параметром".

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

Форматов у этого вида цикла предусмотрено два:

For <И.П.>:=<Н.З.> To <К.З.> Do <оператор>;

For <И.П.>:=<Н.З.> Downto <К.З.> Do <оператор>;

Здесь И.П. - имя переменной-параметра, Н.З. - его начальное значение, К.З. - соответственно конечное значение параметра. В качестве начального и конечного значений

Читается данная структура так: "Для переменной (далее следует ее имя) от начального значения до конечного выполнять оператор (являющийся телом цикла)". Иногда цикл с параметром даже называют "Для" или "For". В первом случае параметр с каждой итерацией увеличивается на единицу, во втором - уменьшается.

Выполняется этот цикл по следующему алгоритму:

1. переменной-параметру присваивается начальное значение;

2. выполняется тело цикла;

3. переменная-параметр автоматически увеличивается на 1 (в первом случае формата);

4. если параметр превышает конечное значение, то происходит выход из цикла, иначе - переход к пункту 2.

Примечание: при использовании Downto параметр автоматически уменьшается на 1, а выход из цикла происходит тогда, когда параметр становится меньше конечного значения.

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

Вообще говоря, цикл "Пока" является универсальным, то есть любая задача, требующая использования цикла, может быть решена с применением этой структуры. Циклы "До" и "С параметром" созданы для удобства программирования.

Пример.

Найти сумму квадратов всех натуральных чисел от 1 до 100.

Решим эту задачу с использованием всех трех видов циклов.

I. С использованием цикла "Пока".

Program Ex1;

Var

A : Integer;

S : Longint;

Begin

A:=1; S:=0;

While A<=100 Do

Begin

S:=S+A*A;

A:=A+1

End;

Writeln(S)

End.

II. С использованием цикла "До".

Program Ex2;

Var

A : Integer;

S : Longint;

Begin

A:=1; S:=0;

Repeat

S:=S+A*A;

A:=A+1

Until A>100;

Writeln(S)

End.

III. С использованием цикла "С параметром".

Program Ex3;

Var

A : Integer;

S : Longint;

Begin

S:=0;

For A:=1 To 100 Do S:=S+A*A;

Writeln(S)

End.

Теперь вам известны все основные алгоритмические структуры языка Паскаль. Комбинируя их, возможно запрограммировать решение любой задачи, конечно, если таковое существует. Тем не менее, изучение языка на этом не закачивается, так как для написания хороших программ по утверждению уважаемого Никлауса Вирта (за время моей работы у меня не появилось оснований в этом сомневаться) нужны кроме алгоритмических, еще удобные структуры данных. В рассматриваемом языке таких структур множество, для каждого вида определены свои команды и операции. К их рассмотрению мы и переходим.

 

 

 

Python

Обзор особенностей.

Python, в отличие от многих языков (Pascal, C++, Java, и т.д.), не требует описания переменных. Они создаются в месте их инициализации, т.е. при первом присваивании переменной какого-либо значения. Значит, тип переменной определяется типом присваиваемого значения. В этом отношении Python напоминает Basic.

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

2. В таких языках как Pascal, C, C++ организация списков представляла некоторые трудности. Для их реализации приходилось хорошо изучать принципы работы с указателями и динамической памятью. И даже имея хорошую квалификацию, программист каждый раз заново реализуя механизмы создания, работы и уничтожения списков, мог легко допустить трудноуловимые ошибки. Ввиду этого были созданы некоторые средства для работы со списками. Например, в Delphi Pascal имеется класс TList, реализующий списки; для С++ разработана библиотека STL (Standard Template Library), содержащая такие структуры как векторы, списки, множества, словари, стеки и очереди. Однако такие средства имеются не во всех языках и их реализациях.

Одной из отличительных черт Python является наличие таких встроенных в сам язык структур как тьюплы (tuple), списки (list) и словари (dictionary), которые иногда называют картами (map). Рассмотрим их подробней.

Тьюпл. Он чем-то напоминает массив: состоит из элементов и имеет строго определенную длину. Элементами могут быть любые значения - простые константы или объекты. В отличие от массива, элементы тьюпла не обязательно однородны. А тем, что отличает тьюпл от списка (list) является то, что тьюпл не может быть изменен, т.е. мы не можем i-тому элементу тьюпла присвоить что-то новое, и не можем добавлять новые элементы. Таким образом, тьюпл можно назвать списком-константой. Синтаксически тьюпл задается путем перечисления через запятую всех элементов, и все это заключено в круглые скобки:

(1, 2, 5, 8)

(3.14, ‘ string ’, -4)

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

t = (0,1,2,3,4)

print t[0], t[-1], t[-3]

Результат: 0 4 2

Таким образом, тьюпл можно было назвать вектором-константой, если бы его элементы всегда были однородными.

Список. Хорошим, частным примером списка может служить строка (string) языка Turbo Pascal. Элементами строки являются одиночные символы, ее длина не фиксирована, имеется возможность удалять элементы или, напротив, вставлять их в любом месте строки. Элементами же списка могут быть произвольные объекты не обязательно одного и того же типа. Чтобы создать список, достаточно перечислить его элементы через запятую, заключив все это в квадратные скобки:

[3, 5.14, ‘s’]

[‘string’, (0,1,8), [1,1]]

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

l = [1, ‘s’, (2,8), [0,3,4]]

print l[0], l[1], l[-2], l[-1][0]

Результат: 1 s (2,8) 0

Словарь. Напоминает тип запись (record) в Pascal или структуры (structure) в С. Однако, вместо схемы «поле записи»-«значение» здесь применяется «ключ»-«значение». Словарь представляет собой набор пар «ключ»-«значение». Здесь «ключ» - константа любого типа (но преимущественно применяются строки), он служит для именования (индексирования) некоторого соответствующего ему значения (которое можно менять). Словарь создается путем перечисления его элементов (пар "ключ"-"значение", разделенных двоеточием), через запятую и заключения всего этого в фигурные скобки. Для получения доступа к некоторому значению необходимо, после имени словаря, записать соответствующий ключ. Пример:

d = {'a': 1, 'b': 3, 5: 3.14, 'name': 'John'}

d['b'] = d[5]

print d['a'], d['b'], d[5], d['name']

Результат: 1 3.14 3.14 John

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

d['new'] = 'new value'

print d

Результат: {'a':1, 'b':3, 5:3.14, 'name':'John', 'new':'new value'}

3. Python в отличие от Pascal, C, C++ не поддерживает работу с указателями, динамической памятью и адресную арифметику. В этом он похож на Java. Как известно, указатели служат источником трудноуловимых ошибок, и работа с ними относится больше к программированию на низком уровне. Для обеспечения большей надежности и простоты они небыли включены в Python.

4. Одним из особенностей Python является то, как происходит присваивание одной переменной другой, т.е. когда по обе стороны от оператора "=" стоят переменные.

Следуя Тимоти Бадду ([1]), будем называть семантикой указателей случай, когда присваивание приводит лишь к присваиванию ссылки (указателя), т.е. новая переменная становится лишь другим именем, обозначающим тот же участок памяти что и старая переменная. При этом изменение значения, обозначаемого новой переменной, приведет к изменению значения старой, т.к. они, фактически, означают одно и то же.

Когда же присваивание приводит к созданию нового объекта (здесь объект - в смысле участка памяти для хранения значения какого-либо типа) и копированию в него содержимого присваиваемой переменной, этот случай назовем семантикой копирования. Таким образом, если при копировании действует семантика копирования, то переменные по обе стороны от знака "=" будут означать два независимых объекта с одинаковым содержанием. И здесь последующее изменение одной переменной никак не скажется на другой.

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

a = 2; b = a; b = 3

print 'семантика копирования: a=', a, 'b=', b

a=[2,5]; b = a; b[0] = 3

print 'семантика указателей: a=', a, 'b=', b

Результат:

семантика копирования: a= 2 b= 3

семантика указателей: a= [3,5] b= [3,5]

Для тех из вас, кто хочет знать, в чем тут дело, я приведу другой взгляд на присваивание в Python. Если в таких языках как Basic, Pascal, C/C++ мы имели дело с переменными-«емкостями», и хранимыми в них константами (числовыми, символьными, строковыми - не суть важно), а операция присваивания означала «занесение» константы в присваиваемую переменную, то в Python мы уже должны работать с переменными-«именами» и именуемыми ими объектами. (Замечаете некоторую аналогию с языком Prolog?) Что же такое объект в Python? Это все то, чему можно дать имя: числа, строки, списки, словари, экземпляры классов (которые в Object Pascal и называются объектами), сами классы (!), функции, модули и т.д. Так вот, при присваивании переменной некоторого объекта, переменная становится его «именем», причем таких «имен» объект может иметь сколько угодно и все они никак не зависят друг от друга.

Теперь, объекты делятся на модифицируемые (мутируемые) и неизменные. Мутируемые - те, которые могут изменить свое «внутреннее содержание», например, списки, словари, экземпляры классов. А неизменные - такие как числа, тьюплы, строки (да, строки тоже; можно переменной присвоить новую строку, полученную из старой, но саму старую строку модифицировать не получится).

Так вот, если мы пишем:

a=[2,5]; b = a; b[0] = 3

Python это интерпретирует так:

дать объекту «список [2,5]» имя a;

дать этому объекту еще одно имя - b;

модифицировать нулевой элемент объекта.

Вот и получилась «псевдо» семантика указателей.

И последнее, что стоит сказать насчет этого: хотя нет возможности изменения структуры тьюпла, но содержащиеся в нем мутируемые компоненты по-прежнему доступны для модификации:

t = (1, 2, [7,5], 'string')

t[0] = 6 # так нельзя

del t[1] # тоже ошибка

t[2][1] = 0 # допустимо,

# теперь третья компонента - список [7,0]

t[3][0] = 'S' # ошибка: строки не мутируемы

5. Весьма оригинальным является то, как в Python группируются операторы. В Pascal для этого служат операторные скобки begin-end, в C, C++, Java - фигурные скобки {}, в Basic применяются закрывающие окончания конструкций языка (NEXT, WEND, END IF, END SUB).

В языке Python все гораздо проще: выделение блока операторов осуществляется путем сдвига выделяемой группы на один или более пробелов или символов табуляции вправо относительно заголовка конструкции, к которой и будет относиться данный блок. Например:

if x > 0:

print ‘ x > 0 ’

x = x - 8

else:

print ‘ x <= 0 ’

x = 0

Тем самым, хороший стиль записи программ, к которому призывают преподаватели языков Pascal, C++, Java и т.д., здесь приобретается с самого начала, поскольку по-друг

Описание языка. Управляющие конструкции.

if <условие1>: <оператор1>

[elif <условие2>: <оператор2>]*

[else: <оператор3>]

Оператор «если». Часть в квадратных скобках является необязательной. Следующий за скобками символ «*» означает, что заключенная в скобки часть может быть записана неоднократно одна за другой.

Здесь, при истинности <условия1> будет выполнен <оператор1> и проигнорированы ветки elif и else. В противном случае, если истинно <условие2>, то выполняется <оператор2>, ветка else игнорируется. Иначе выполняется <оператор3>.

while <условие>: <оператор1>

[else: <оператор2>]

Цикл «пока». <Оператор1> будет выполняться все время, пока истинно <условие>. При нормальном завершении цикла, т.е. без применения break, выполнится <оператор2>.

for <переменная> in <список>: <оператор1>

[else: <оператор2>]

Цикл «для». <Переменная> пробегает все элементы <списка> и для каждого текущего значения <переменной> выполняется <оператор1>. При нормальном завершении цикла, т.е. без применения break, выполнится <оператор2>.

break

Осуществляет немедленное завершение циклов while и for.

continue

Вызывает немедленное выполнение следующей итерации циклов while и for.

return [<результат>]

Осуществляет возврат из функции или метода класса, возвращая значение <результат>.

5.Обработка исключительных ситуаций.

try: <оператор1>

[except [<исключение> [,<переменная>] ]: < оператор2>]

[else <оператор3>]

Выполняется <оператор1>, если при этом возникла исключительная ситуация <исключение>, то выполняется <оператор2>. Если <исключение> имеет значение, то оно присваивается <переменной>.

В случае успешного завершения <оператора1> выполняется <оператор3>.

try: <оператор1>

finally: <оператор2>

Выполняется <оператор1>. Если не возникло исключений, то выполняется <оператор2>. Иначе выполняется <оператор2> и немедленно инициируется исключительная ситуация.

raise <исключение> [<значение>]

Инициирует исключительную ситуацию <исключение> с параметром <значение>.

Исключения - это просто строки (string). Пример:

my_ex = ‘bad index’

try:

if bad:

raise my_ex, bad

except my_ex, value:

print ‘ Error ’, value

6. Объявление функций.

def <имя_функции> ([<список_параметров>]):

<тело_функции>

Здесь <тело_функции> - последовательность операторов, выровненных по тексту правее слова «def».

<список_параметров> в самом общем виде выглядит так:

[ [,]* ] [ = [,=]* ] [, *]

Здесь - идентификатор переменной; - некое значение.

Параметры , за которыми следует «=» получают значения по умолчанию.

Если список заканчивается строкой « * », то id присваивается тьюпл (tuple) из всех оставшихся аргументов, переданных функции.

Объявление классов.

class <имя_класса> [( <предок1> [,<предок2>]* )]:

<тело_класса>

Здесь <тело_класса> может содержать присваивания переменным (эти переменные становятся атрибутами, т.е. полями класса) и определений функций (являющихся методами класса).

Первым аргументом метода всегда является экземпляр класса, который вызывает данный метод (или к которому применяется метод). По соглашению, этот аргумент называется «self». Специальный метод __init__() вызывается автоматически при создании экземпляра класса.

Пример:

class cMyClass:

def __init__(self, val):

self.value = val

#

def printVal (self):

print ‘ value = ’, self.value

#

# end cMyClass

obj = cMyClass (3.14)

obj.printVal ()

obj.value = « string now »

obj.printVal ()

Результат:

value = 3.14

value = string now

8. Операторы для всех типов последовательностей
(списки, тьюплы, строки).

len (s) - возвращает длину s.

min (s), max (s) - наименьший и наибольший элементы s, соответственно.

x in s - истина (1), если s включает в себя элемент равный x, иначе - ложь (0).

x not in s - ложь если s включает x, иначе истина.

s+t - слияние s и t.

s*n, n*s - n копий s, слитых вместе (например, ‘*’ * 5 - это строка ‘*****’).

s[i] - i-тый элемент s, где i отсчитывается с 0.

s[i:j] - часть элементов s начиная с i до j-1 включительно. Либо i, либо j, либо оба параметра могут быть опущены (i по умолчанию равен 0, j - длине s).

9. Операторы для списков (list).

s[i] = x - i-тый элемент s заменяется на x.

s[i:j] = t - часть элементов s от i до j-1 заменяется на t (t может быть также списком).

del s[i:j] - удаляет часть s (также, как и s[i:j] = []).

s.append (x) - добавляет элемент x к концу s.

s.count (x) - возвращает количество элементов s, равных x.

dex (x) - возвращает наименьший i такой, что s[i]==x.

sert (i,j) - часть s, начиная с i-го элемента, сдвигается вправо, и s[i] присваивается x.

s.remove (x) - то же, что и del s[ dex(x) ] - удаляет первый элемент s, равный x.

s.reverse () - записывает строку в обратном порядке.

s.sort () - сортирует список по возрастанию.

10. Операторы для словарей (dictionary).

len (a) - количество элементов а.

a[k] - элемент с ключом k.

a[k] = x - присвоить элементу с ключом k значение x.

del a[k] - удалить a[k] из словаря.

a.items () - список тьюплов пар (ключ, значение).

a.keys () - список ключей а.

a.values () - список значений а.

a.has_key (k) - возвращает 1, если а имеет ключ k, иначе 0.

11. Файловые объекты.

Создаются встроенной функцией open() (ее описание смотрите ниже). Например: f = open (‘mydan.dat’, ‘r’). Методы:

f.close () - закрыть файл.

f.read ([size]) - читает байт из файла и возвращает в виде строки. Если отсутствует, то читает до конца файла.

f.readline () - читает целиком одну строку из файла.

f.readlines () - читает строки до конца файла и возвращает список прочитанных строк.

f.seek (offset, mode) - устанавливает позицию в файле с которого будет произведено чтение. - смещение относительно:

начала файла (при mode == 0 - по умолчанию);

текущей позиции (при mode == 1);

конца файла (при mode == 2).

f.tell () - возвращает текущую позицию в файле.

f.write (str) - записывает строку в файл.

Другие элементы языка и встроенные функции.

print [ [,]* [,] ] - выводит значения , в стандартный вывод. Ставит пробел между аргументами. Если запятая в конце перечня аргументов отсутствует, то осуществляет переход на новую строку.

abs (x) - возвращает абсолютное значение x.

apply (f, <аргументы>) - вызывает функцию (или метод) f с < аргументами >.

chr (i) - возвращает односимвольную строку с ASCII кодом i.

cmp (x, y) - возвращает отрицательное, ноль, или положительное значение, если, соответственно, x <, ==, или > чем y.

divmod (a, b) - возвращает тьюпл ( a/b, a%b ), где a/b - это a div b (целая часть результата деления), a%b - это a mod b (остаток от деления).

eval (s) - возвращает объект, заданный в s как строка (string). S может содержать любую структуру языка. S так же может быть кодовым объектом, например: x = 1; incr_x = eval («x+1»).

float (x) - возвращает вещественное значение равное числу x.

hex (x) - возвращает строку, содержащую шестнадцатеричное представление числа x.

input (<строка>) - выводит <строку>, считывает и возвращает значение со стандартного ввода.

int (x) - возвращает целое значение числа x.

len (s) - возвращает длину (количество элементов) объекта.

long (x) - возвращает значение типа длинного целого числа x.

max (s), min (s) - возвращают наибольший и наименьший из элементов последовательности s ( т.е. s - строка, список или тьюпл )

oct (x) - возвращает строку, содержащую представление числа x.

open (<имя файла>, <режим> = ‘r’) - возвращает файловый объект, открытый для чтения. <режим> = ‘w’ - открытие для записи.

ord (c) - возвращает ASCII код символа (строки длины 1) c.

pow (x, y) - возвращает значение x в степени y.

range (<начало>, <конец>, <шаг>) - возвращает список целых чисел, больших либо равных <начало> и меньших чем <конец>, сгенерированных с заданным <шагом>.

raw_input ([<текст>]) - выводит <текст> на стандартный вывод и считывает строку (string) со стандартного ввода.

round (x, n=0) - возвращает вещественное x, округленное до n-го разряда после запятой.

str (<объект>) - возвращает строковое представление <объекта>.

type (<объект>) - возвращает тип объекта. Например:

if type(x) == type(‘’): print ‘ это строка ’

xrange (<начало>, <конец>, <шаг>) - аналогичен range, но лишь имитирует список, не создавая его. Используется в цикле for.

 

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Реферат "Операции, функции, выражения в средах Python и Lazarus""

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Специалист по кредитованию

Получите профессию

Технолог-калькулятор общественного питания

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 668 258 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 02.12.2022 701
    • DOCX 68.4 кбайт
    • 16 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Юдин Илья Сергеевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Юдин Илья Сергеевич
    Юдин Илья Сергеевич
    • На сайте: 1 год и 6 месяцев
    • Подписчики: 0
    • Всего просмотров: 1714
    • Всего материалов: 2

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Технолог-калькулятор общественного питания

Технолог-калькулятор общественного питания

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Управление сервисами информационных технологий

Менеджер по управлению сервисами ИТ

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Сейчас обучается 26 человек из 19 регионов
  • Этот курс уже прошли 34 человека

Курс повышения квалификации

Теоретические и методологические основы преподавания информатики с учётом требований ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 152 человека из 49 регионов
  • Этот курс уже прошли 1 719 человек

Курс профессиональной переподготовки

Математика и информатика: теория и методика преподавания в образовательной организации

Учитель математики и информатики

500/1000 ч.

от 8900 руб. от 4150 руб.
Подать заявку О курсе
  • Сейчас обучается 680 человек из 79 регионов
  • Этот курс уже прошли 1 816 человек

Мини-курс

Психология детства и подросткового возраста

3 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 103 человека из 48 регионов
  • Этот курс уже прошли 72 человека

Мини-курс

Основы духовно-нравственной культуры народов России: особенности преподавания

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 26 человек из 17 регионов
  • Этот курс уже прошли 33 человека

Мини-курс

Инвестиционные проекты: оценка, эффективность и стратегии

8 ч.

1180 руб. 590 руб.
Подать заявку О курсе