Уроки 49–50 · 2 урока · Н. И. Тайлаков (общий редактор), А. Б. Ахмедов, М. Д. Пардаева, А. А. Абдуганиев, У. М. Мирсанов. Информатика и информационные технологии, 10 класс, 1-е издание. «Extremum-Press», Ташкент, 2017
49
Изменение типа данных
Учебник: с. 106–110
ЦельРазличает типы данных (Integer, Real, String), изменяет тип с помощью StrToInt, IntToStr, StrToFloat и FloatToStr и объявляет локальные переменные внутри процедуры.
Новые слова
StrToInt: преобразует текстовую строку в целое число · StrToIntStrToFloat: преобразует текстовую строку в вещественное число · StrToFloatлокальная переменная: переменная, объявленная в процедуре и доступная только в ней · lokal o‘zgaruvchivar: раздел, в котором объявляются переменные и их типы · var
Объяснение
Число в Edit на самом деле является текстом, поэтому перед вычислением его нужно преобразовать в число: Delphi не позволяет напрямую присваивать выражение одного типа переменной другого типа. Для целых чисел используются StrToInt (текст в число) и IntToStr (число в текст), для вещественных – StrToFloat и FloatToStr. Промежуточные результаты вычисления хранятся в переменных: они объявляются в разделе var под заголовком процедуры, например var r: Real; или var i, m, n, s: Integer; Такая переменная локальна: она работает только внутри этой процедуры и исчезает, когда процедура заканчивается. Если в Edit вместо числа введена буква или вещественное число записано с неверным разделителем (запятая вместо точки или наоборот), StrToInt и StrToFloat выводят сообщение об ошибке, поэтому объясните пользователю в Label, как вводить. FloatToStr выдаёт результат с разделителем из настроек компьютера.
Примеры
Куб: в Edit1 находится длина ребра a. procedure TForm1.Button1Click(Sender: TObject); ⏎ var a: Integer; ⏎ begin ⏎ a := StrToInt(Edit1.Text); ⏎ Label1.Caption := 'Hajm: ' + IntToStr(a * a * a); ⏎ Label2.Caption := 'Sirt: ' + IntToStr(6 * a * a); ⏎ end; При a = 4: Hajm: 64, Sirt: 96.
Факториал: procedure TForm1.Button2Click(Sender: TObject); ⏎ var i, n, f: Integer; ⏎ begin ⏎ n := StrToInt(Edit2.Text); ⏎ f := 1; ⏎ for i := 1 to n do ⏎ f := f * i; ⏎ Label3.Caption := 'Faktorial: ' + IntToStr(f); ⏎ end; При n = 6: 1·2·3·4·5·6 = 720; Faktorial: 720. Тип Integer хранит числа до 2 147 483 647, поэтому n не должно превышать 12 (13! слишком велик). Для круга используйте r := StrToFloat(Edit1.Text); FloatToStr(Pi * r * r) – Pi – готовая константа.
Работа в классе
«Калькулятор»: пара создаёт приложение с двумя Edit; кнопка показывает сумму, разность и произведение в трёх Label; они проверяют, какое сообщение выдаёт приложение при неверном вводе.
Упражнения
1
Какая функция преобразует текст в целое число?
StrToInt
2
Если a = 5, чему равно 6 * a * a?
150
3
При n = 5 чему равно f в конце при f := f * i (f начинается с 1, i = 1..n)?
120
4
Почему локальную переменную нельзя использовать в другой процедуре?
Она существует только пока выполняется процедура, в которой объявлена, и исчезает, когда та заканчивается.