Просмотр содержимого документа
«Реферат на тему :" ОПЕРАТОР ПРИСВАИВАНИЯ, ВВОД И ВЫВОД ДАННЫХ В СРЕДАХ PYTHON И LAZARUS"»
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М. Е. ЕВСЕВЬЕВА»
Факультет физико-математический
Кафедра физики, информационных технологий и методик обучения
РЕФЕРАТ
ОПЕРАТОР ПРИСВАИВАНИЯ, ВВОД И ВЫВОД ДАННЫХ В СРЕДАХ PYTHON И LAZARUS
Автор работы ________________________________________ Т. М. Левкина
Направления подготовки 44.03.05 Педагогическое образование
Профиль Физика. Информатика
Руководитель работы
доцент, канд. физ-мат наук_________________________ Т. В. Кормилицына
Оценка __________
Саранск 2022
Содержание
Введение 3
Оператор присваивания в среде Python 4
Ввод и вывод данных в среде Python 8
Функция print() 8
Функция input() 9
Оператор присваивания в среде Lazarus 10
Ввод и вывод данных в среде Lazarus 12
Ввод данных 12
Вывод данных 13
Вывод в окно сообщения ShowMessage 13
Вывод в поле вывода (Label) 13
Введение
Python — высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Язык является полностью объектно-ориентированным в том плане, что всё является объектами. Необычной особенностью языка является выделение блоков кода пробельными отступами. Синтаксис ядра языка минималистичен, за счёт чего на практике редко возникает необходимость обращаться к документации. Сам же язык известен как интерпретируемый и используется в том числе для написания скриптов. Недостатками языка являются зачастую более низкая скорость работы и более высокое потребление памяти написанных на нём программ по сравнению с аналогичным кодом, написанным на компилируемых языках, таких как C или C++.
Lazarus - бесплатная кроссплатформенная визуальная интегрированная среда разработки (IDE) для быстрой разработки приложений (RAD) с использованием компилятора Free Pascal. Его цель - предоставить простую в использовании среду разработки для программистов, работающих на языке Object Pascal, который максимально приближен к Delphi.
Разработчики программного обеспечения используют Lazarus для создания консольных приложений с собственным кодом и графическим пользовательским интерфейсом (GUI) для настольных компьютеров, а также для мобильных устройств, веб-приложений, веб-сервисов, визуальных компонентов и функциональных библиотек для ряда различных платформ, включая Mac, Linux и Windows.
Оператор присваивания в среде Python
Оператор присваивания имеет следующую форму: v=expr, где
v – имя переменной;
expr – выражение, в общем случае представляющее собой совокупность литералов разных типов, переменных, вызовов функций, соединенных между собой знаками операций.
Переменные в языке Python не требуют явного объявления и для них не указывается изначально тип данных. Python относится к языкам программирования с динамической типизацией переменных. Переменные появляются, когда им присваивают значение, и автоматически уничтожаются при выходе из области видимости. Поэтому при работе оператора присваивания переменная получает не только значение выражения, но и его тип.
Имена (идентификаторы) (англ. names, identifiers) переменных языка Python (), так же как и во многих других языках программирования (Pascal, C, Java, JavaScript и др.) могут содержать только латинские буквы, цифры и знаки подчеркивания и начинаться или с буквы, или со знака подчеркивания. Отметим, что в качестве идентификаторов не следует использовать зарезервированные (ключевые) слова (англ. keywords) языка Python. Список ключевых слов можно получить, например, с помощью встроенной системы помощи. Имена в языке Python зависят от регистра и не имеют ограничений по числу символов.
При выполнении оператора присваивания интерпретатором осуществляются следующие действия:
вычисляется значение выражения, указанного справа от знака равенства, и определяется тип выражения;
полученное значение заносится в свободные ячейки памяти;
создается переменная, указанная слева от знака равенства, которая, являясь ссылкой на данные (объект), занесенные в память, получает значение и тип этих данных, например:
n=7
n
7
type (n)
.
При выполнении оператора del указанная переменная перестает ссылаться на данные в памяти и, таким образом, теряет свое значение:
del n
n
NameError: name 'n' is not defined
Данные в памяти, на которые не указывает ни одна ссылка, в последствии очищаются автоматически с помощью системных средств сборки мусора.
При присваивании переменной значения другой переменной создается еще одна ссылка на существующие данные:
s1= 'some value'
s2=s1
s2
'some value',
и при удалении первой ссылки вторая сохраняет свое значение:
del s1
s1
NameError: name 's1' is not defined
s2
'some value'.
Python допускает множественное присвоение:
s5=s4=s3=s2
s5
'some value'.
Числа и строки в языке Python являются неизменяемыми типами данных. Это означает следующее: для переменных указанных типов нельзя изменить значение данных, хранящихся в памяти, на которые они ссылаются. При присваивании переменной нового значения
n=7
id (n)
505894400
n=25
id (n)
505894688.
происходит следующее – прежнее значение не изменится (оно будет в последствии автоматически удалено системой сборки мусора), а новое значение будет занесено в новую область памяти и теперь на него будет указывать ссылка n, что подтверждает встроенная функция id(), которая показывает, что значение адреса переменной n стало другим. Т.е. происходит не изменение значения объекта, а создание нового объекта с новыми данными и адресом.
Оператор присваивания имеет несколько расширенных вариантов, приведенных в таблице.
Оператор
Пример использования
Эквивалентная форма
Соответствующий
метод
+=
x+=y
x=x+y
x.__iadd__(y)
-=
x-=y
x=x-y
x.__isub__(y)
*=
x*=y
x=x*y
x.__imul__(y)
/=
x/=y
x=x/y
x.__itruediv__(y)
//=
x//=y
x=x//y
x.__ifloordiv__(y)
%=
x%=y
x=x%y
x.__imod__(y)
**==
x**=y
x=x**y
x.__ipow__(y)
x
x=x
x.__ilshift__(y)
=
x=y
x=xy
x.__irshift__(y)
&=
x&=y
x=x&y
x.__iand__(y)
|=
x|=y
x=x|y
x.__ior__(y)
^=
x^=y
x=x^y
x.__ixor__(y)
В языке Python операторы обычно отделяются друг от друга символами перевода на новую строку, т.е. каждый оператор занимает одну строку программы. Мы этого до сих пор придерживались и будет поступать так в дальнейшем. Но синтаксисом языка также разрешается помещать несколько операторов на строке, разделяя их точкой с запятой:
z1=5; z2=3.7; z3=1.5e-1.
Также разрешается располагать оператор на нескольких строках, разделяя отдельные части оператора символами обратного слэша:
x=z1+ \
z2+ \
z3 \
x
8.85.
Ввод и вывод данных в среде PythonФункция print()
Функция print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) осуществляет вывод данных objects в потоковый файл. При этом:
все неименованные аргументы value, ... преобразуются в строки;
между ними вставляются строки-разделители, заданные именованым аргументом sep (по умолчанию – пробелы, т.е. sep=' ');
в конце вывода добавляется строка завершения, заданная именованым аргументом end, (по умолчанию – символ новой строки, т.е. end='\n');
файл вывода задается с помощью именованого аргумента file (по умолчанию file='sys.stdout'). Он должен иметь метод write(string);
необходимость буферизации обычно определяется файлом, но если именованый аргумент flush (введенный в версии Python 3.3), равен True, то принудительно выполняется потоковый режим (по умолчанию flush=False).
Все именованные аргументы должны быть строками. Если именнованный аргумент не задан или имеет значение None, принимается значение, указанное для него по умолчанию. Если ни один из неименнованных аргументов не указан, будет осуществлен вывод строки end .
Пример вывода двух значений без использования ключевых слов sep и end:
Функция input([prompt]) – при наличии необязательного аргумента prompt выводит его в стандантный поток вывода (англ. standard output). Затем считывет данные из стандартного устройства ввода (англ. standard intput) и преобразует их в строки, убирая замыкающие символы новой строки (англ. trailing newline).
Отметим, что функция input() объединила в себе две функции, которые используются во второй версии языка Python – собственно функцию input() и функцию raw_input(), которая не поддерживается версиями 3.x языка Python.
В примере показан ввод двоичного целого числа и числа с плавающей точкой:
x= int ( input ( "Введите двоичное число " ),2)
y= float ( input ( "Введите число с плавающей точкой " ))
Кроме того, осуществлено преобразование введенных значений с помощью соответствующих конструкторов в целый тип и тип с плавающей точкой. Это необходимо делать в случаях, когда введенные значения будут использоваться для выполнения операций с числами, поскольку при вводе все значения преобразуются в строки.
Оператор присваивания в среде Lazarus
Значения переменным присваиваются с помощью оператора присваивания
:=
То есть, двоеточие и знак "равно", следующий сразу за ним, без пробелов. Присвоение происходит справа-налево: вначале вычисляется значение, указанное ПОСЛЕ этого оператора, затем оно присваивается переменной, указанной ДО оператора присваивания. Например:
var
i: integer; //объявили переменную с типом integer - целое число
begin
i:= 3; //присвоили этой переменной значение 3
Значение, которое присвоено переменной, может быть и сложным, составным. Можно указать не просто значение, а целое выражение, причем использовать в нем предыдущее значение самой переменной! Пример:
var
i: integer;
begin
i:= 3;
i:= 2 * 5 + 36 * i; //сложное выражение
Тут объявили целочисленную переменную i. Этой переменной присвоили значение 3. Потом мы присвоили новое значение, которое сначала высчитывается компьютером из сложного выражения, а затем только присваивается переменной. Какое же значение теперь в i? Из уроков математики знаем, что сначала вычисляются такие операторы, как умножение и деление, а только потом - сложение и вычитание. То есть, сначала высчитывается 2 * 5 = 10 (для компьютера знак "*" - это умножение, если кто-то не знает). Затем вычисляется 36 * i, а i - это 3, делали это присваивание строчкой выше. Так что получаем 36 * 3 = 108. Затем складываем эти значения: 10 + 108 = 118. Именно столько и попадет, в конце концов, в переменную i.
Здесь у кого-то может возникнуть вопрос: а почему автор советовал давать переменным осмысленные имена, а сам назначил простое имя i? Вопрос справедливый, отвечу так. Это – не реальная программа со множеством подпрограмм и переменных, это простой пример с одной переменной, и мы в любом случае, не запутаемся. Кроме того, переменная была назначена не для какой-то конкретной цели, а лишь для демонстрации присваивания ей значения. Поэтому и имя у переменной простое.
В программе также присваивали переменной не просто значение, а составное выражение:
MyName:= 'Привет, ' + Edit1.Text + '!';
Здесь строку "Привет, " соединяли с тем, что хранилось в поле ввода Edit1, добавляли восклицательный знак, а результат уже присваивали переменной MyName. Обратите внимание, что после слов "Привет" мы вписали не просто запятую, а запятую с последующим пробелом. Если бы не указали этот пробел, то в результате текст сливался бы, а это не очень красиво:
Привет,Дмитрий!
Ввод и вывод данных в среде LazarusВвод данных
Функция InputBox() выводит на экран диалоговое окно, в котором можно ввести данные.
Аргументами этой функции являются три строки, а значением функции – строка введенная пользователем.
В общем виде строка программного кода с использованием функции InputBox выглядит так:
Переменная := InputBox(‘Заголовок’, ‘Подсказка’, ‘Значение по умолчанию’);
где:
Переменная – переменная строкового типа, значение которой должно быть получено от пользователя;
Заголовок – текст заголовка окна;
Подсказка – текст поясняющего сообщения;
Значение по умолчанию – текст, который будет находиться в поле ввода, когда окно появиться на экране.
Например,
n := InputBox(‘Ввод числа’, ‘Введите число:’, ‘ ‘);
Если пользователь щелкнет по кнопке ОК, то значением функции станет строка, введенная пользователем в текстовое поле. Если пользователь щелкнет по кнопке Cancel, то значением функции станет строка «Значение по умолчанию».
Значение функции InputBox всегда строкового типа (String), поэтому в случае, если нужно ввести число, то введенная строка должна быть преобразована в число при помощи соответствующей функции преобразования.
В качестве примера возьмем задачу пересчета веса из фунтов в килограммы
Ввод исходных данных из окна ввода и последующее преобразование данных может выглядеть так:
funtStr:= InputBox(‘Фунты-килограммы’,’Введите вес в фунтах:’,’ ‘);
funtFloat:=StrToFloat(funtStr);
Вывод данных
Результат работы программы чаще всего выводят в окно сообщения ShowMessage или в поле вывода (компонент Label).
Вывод в окно сообщения ShowMessage
Для вывода результата используется процедура ShowMessage(). Она выводит на экран диалоговое окно с текстом и командной кнопкой OK.
Общий вид инструкции вызова процедуры ShowMessage:
ShowMessage(‘Сообщение’);
где Сообщение – текст, который будет выведен в окне.
Например, для того чтобы вывести результат в программе пересчета веса из фунтов в килограммы, можно использовать следующую строку кода:
ShowMessage(‘Вес в килограммах: ‘+ FloatToStr(kg));
Вывод в поле вывода (Label)
Компонент TLabel(Поле вывода), в который будет осуществляться вывод, устанавливают на форме во время разработки. Содержание этого поля определяется значением свойства Caption.
Для того чтобы вывести результаты в это поле, нужно в программном коде поместить оператор присваивания, который будет изменить значение свойства Caption на нужное вам значение.
Например, для того чтобы вывести результат в поле вывода Label1 в рассмотренной выше задаче, нужно использовать следующий оператор присваивания: