☰ Содержание · Информатика

Изменение типа данных и контрольная работа

Уроки 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
Какая функция преобразует текст в целое число?
2
Если a = 5, чему равно 6 * a * a?
3
При n = 5 чему равно f в конце при f := f * i (f начинается с 1, i = 1..n)?
4
Почему локальную переменную нельзя использовать в другой процедуре?