Меню
Разработки
Разработки  /  Информатика  /  Уроки  /  9 класс  /  Методическая разработка TURBO PASCAL. Типы данных.

Методическая разработка TURBO PASCAL. Типы данных.

Методическая разработка конспектов уроков предназначена для изучения темы «Turbo Pascal» в старших классах общеобразовательной школы.
03.11.2019

Содержимое разработки









Методическая разработка

TURBO PASCAL.

Типы данных.





Выполнила Елизаркина Евгения

Викторовна.







Новокузнецк, 2019г.

Пояснительная записка.

Методическая разработка конспектов уроков предназначена для изучения темы «Turbo Pascal» в старших классах общеобразовательной школы.

Перед изучением темы учащиеся должны:

  1. Знать:

  • Алфавит Turbo Pascal.

  • Структуру программы Turbo Pascal.

  1. Уметь:

  • Запускать и выходить из программы Turbo Pascal.

  • Записывать основную программу на языке Turbo Pascal.

После изучения темы учащиеся должны:

1. Знать:

        • Какие типы данных существуют в программе Turbo Pascal;

        • Основные отличия типов данных.

2. Уметь:

        • Распознавать основные типы данных.

        • Решать элементарные задачи на языке Turbo Pascal.

        • Составлять и записывать программы на языке Turbo Pascal.

Требования к аппаратному программному обеспечению.

В процессе изучения темы потребуется компьютерный класс, оснащённый IBM совместными с компьютерами на базе процессоров Pentium, имеющих не менее 16 Мб памяти, на которых следующее программное обеспечение:

1. Программа Turbo Pascal.

Таблица поурочного планирования.

Тема

Тип урока

Количество часов

1

Типы данных.

Лекция

2

3

Решение задач

Фронтальная лабораторная работа

1

4

Решение задач.

Индивидуальная лабораторная работа

1

5

Контрольная работа по теме «Типы данных».

Контрольная работа

1


Урок № 1.

ТИПЫ ДАННЫХ

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

Турбо Паскаль характеризуется разветвленной структурой типов данных.

Структура типов данных.

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

ПРОСТЫЕ ТИПЫ

К простым типам относятся порядковые и вещественные типы.

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

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

Порядковые типы.

К порядковым типам относятся целые, логический, символьный, перечисляемый и тип-диапазон. К любому к них применима функция ORD(X), которая возвращает порядковый номер значения выражения Х. Для целых типов функция ORD(X) возвращает само значение Х, т.е. ORD(X)=X для Х, принадлежащего любому целому типу. Применение ORD(X) к логическому, символьному и перечисляемому типам даёт положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 255 (символьный), от 0 до 65535 (перечисляёмый). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ORD(X) зависит от свойств этого типа.

К порядковым типам можно также применять функции:

PRED(Х) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ORD(X)-1), т.е.

ORD(PRED(X))= ORD(X) -1

SUCC(X)- возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ORD(X)+1, т.е.

ORD(SUCC(X))=ORD(X)+1.

Например, если в программе определена переменная

Var

C : Char;

Begin

C := ’5’ ;

End.

то функция PRED(С) вернет значение ‘4’, а функция SUCC(С)- значение ‘6’.

Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция PRED(Х) не определена для левого, а SUCC(X)- для правого конца этого отрезка.

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

Целые типы

Название

Длина, байт

Диапазон значений

Byte

1

0…255

ShortInt

1

-128…+127

Word

2

0…65535

Integer

2

-32768…+32767

LongInt

4

-2 147 483 648…+2 147 483 647

При использовании процедур и функций с целочисленными параметрами следует руководствоваться «вложенностью» типов, т.е. везде, гдё может использоваться WORD, допускается использование ВУТЕ (но не наоборот), в LONGINT «входит» INTEGER, который, в свою очередь, включает в себя SHORTING.

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

Var

a : Integer;

x, y: Real;

Begin

a := 32767; {Максимально возможное значение типа Integer}

x := a + 2; {Переполнение при вычислении этого выражения}

y := LongInt (a)+2; {Переполнения нет после приведения переменной к более

мощному типу}

Writeln (x:10:0, y:10:0);

End.

В результате прогона программы получим

-32767 32769

Логический тип. Значениями логического типа может быть одна из предварительно объявленных констант FALSE (ложь) или TRUE (истина). Для них справедливы правила:

Ord (False) = 0;

Ord (True) = 1;

False

Succ(False)=True;

Pred(True) =False.

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

Var

L: Boolean;

Begin

For l := False to true do

Символьный тип. Значением символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0...255. Это число служит кодом внутреннего представления символа, его возвращает функция ORD.

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

type

colors = (red, while, blue);

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

Tуре

TуреMonth=(jan, feb, mar, may, jun, jul, aug, sep, okt, nov, dec);

Var

Month: TуреMonth;

Begin

…….

If Month = aug then writeln(′Хорошо бы поехать к морю′);

…….

End.

Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе - 1 и т.д. Максимальная мощность перечисляемого типа составляет 65536 значений, поэтому фактически перечисляемый тип задаёт некоторое подмножество целого типа WORD и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями 0, 1 и т.д.

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

tуре

соlоrs = (blасk, red, white);

оrdеnal = (оnе, twо, thrее);

Days = (mоndау, tuesdау, wеdnesdау);

С точки зрения мощности и внутреннего представления все три типа эквивалентны:

Оrd (blасk)=0, …, оrd(white)=2;

Оrd (one)=0, …, оrd (thrее)=2;

Оrd (mоndау), …, оrd (wеdnesdау)=2.

Однако, если определены переменные

Var

Col : colors;

Num: ordenal;

Day : days;

то допустимы операторы

Col := black;

Num:= succ (two);

Day := pred (tuesday);

но недопустимы

Col:=one;

Day:=black;

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

Col:=one;

Col:=colors(0);

Разумеется присваивание

Col:= 0;

будет недопустимым.

Переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:

var

соl = (blасk, white, green);

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

Тип-диапазон задается границами своих значений внутри базового типа:

. знач.... знач.

Здесь . знач. - минимальное значение типа-диапазона;

. знач. - максимальное его значение.

Например:

Type

Digit = ′0′..′9′;

Dig2 = 48..57;

Тип-диапазон необязательно описывать в разделе ТУРЕ, а можно указывать непосредственно при объявлении переменной, например:

Var

Date:1..31;

Month:1..12;

Lshr:′A′..′Z′;

При определении типа-диапазона нужно руководствоваться следующими правилами:

• два символа «..» рассматриваются как один символ, поэтому между ними недопустимы пробелы;

• левая граница диапазона не должна превышать его правую границу.

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

tуре

Days = (mо, tu, wе, th, fr, sa,su);

WeekEnd = sa..su;

Var

W: WeekEnd;

Begin

……….

W:=sa;

……….

End;

то ORD(W) вернет значение 5 , в то время как PRED(W) приведет к ошибке.

В стандартную библиотеку Турбо Паскаля включены две функции, поддерживающие работу с типами-диапазонами:

HIGH(Х) - возвращает максимальное значение типа-диапазона, к которому принадлежит переменная х;

LOW(Х) -возвращает минимальное значение типа-диапазона.

Следующая короткая программа выведет на экран строку

-32768….32767

Var k: integer;

Begin

Writeln(Low(k),′…′,High(k));

End;

Вещественные типы

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

Длина, байт

Название

Количество значащих цифр

Диапазон десятичного порядка

6

Real

11…12

-39…+38

8

Double

15…16

-324…+308

10

Extended

19…20

-4951…+4932

8

comp

19…20

-2*1063+1…+2*1063-1


СТРУКТУРИРОВАННЫЕ ТИПЫ

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

Массивы

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

Описание типа массива задастся следующим образом:

= ARRAY [] ОF

Здесь - правильный идентификатор;

ARRAY, ОF - зарезервированные слова (массив, из);

- список из одного или нескольких индексных типов разделенных запятыми; квадратные скобки, обрамляющие список требование синтаксиса;

- любой тип Турбо Паскаля.

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

Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:

Var

a,b: array[1..10] of real;

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

Tуре

Mat = array [0..5] of array [-2..2] of array [char] of byte;

Такую запись можно заменить более компактной:

Tуре

Mat = array [0..5, -2..2, char] of byte;

Записи

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

Структура объявления типа записи такова:

= RECORD END

Здесь - правильный идентификатор;

RECORD, END - зарезервированные слова (запись, конец);

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

Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например:

Tуре

BirthDay = record

Day, month: byte;

Year : word

End;

Var

a, b: BirthDay;

…..

В этом примере тип BIRTHDAY (день рождения) есть запись с полями DAY, MANTH и УЕАR (день, месяц и год); переменные А и В содержат записи типа BIRTHDAY.

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

а := b;

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

a.day:=27;

b.year:=1939;

Множества

Это наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется Турбо Паскалем. Количество – элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащее элементов, называется пустым).

Описание типа множества имеет вид:

= SЕТ ОF

Здесь - правильный идентификатор;

SЕТ, ОF - зарезервированные слова (множество, из);

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

Строки

Тип STRING (строка) в Турбо Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов ARRAY[0..N] ОF СНАR, однако, в отличие от последнего, количество символов в строке-переменной может меняться от 0 до N, где N - максимальное количество символов в строке. Значение N определяется объявлением типа STRING[N] и может быть любой константой порядкового типа, но не больше 255 . Турбо Паскаль разрешает не указывать N, в этом случае длина строки принимается максимально возможной, а именно N=255

Строка в Турбо Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива ARRAY[0..N] ОF СНАR, например:

Var st: string;

Begin

………

If st [5] = ′A′ then

End;

Совместимость типов

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

Два тика считаются совместимыми, если:

• оба они есть один и тот же тип;

• оба вещественные;

• оба целые;

• один тип есть тип-диапазон второго типа;

• оба являются типами-диапазонами одного и того же базового типа;

• оба являются множествами, составленными из элементов одного и того же базового типа;

• оба являются упакованными строками (определены с предшествующим словом РАСКЕD) одинаковой максимальной длины;

● один тип есть тип-строка, а другой - тип-строка, упакованная строка или символ

● один тип есть любой указатель, а другой - нетипизированный указатель;

● один тип есть указатель на объект, а другой - указатель на родственный ему объект;

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

Совместимость типов приобретает особое значение в операторах присваивания. Пусть Т1 - тип переменной, а Т2 - тип выражения, т.е. выполняется присваивание Т1:=Т2. Это присваивание возможно в следующих случаях:

• Т1 и Т2 есть один и тот же тип и этот тип не относится к файлам или массивам; файлов, или записям, содержащим поля-файлы, ила массивам таких записей;

• Т1 и Т2 являются совместимыми порядковыми типами и значение Т2 лежит в диапазоне возможных значений Т1;

• Т1 и Т2 являются вещественными типами и значение Т2 лежит в диапазоне возможных значений Т1;

• Т1 - вещественяьтй тип и Т2 - целый тип;

• Т1 - строка и Т2 - символ;

• Т1 - строка и Т2 - упакованная строка;

• Т1 и Т2 - совместимые упакованные строки;

• Т1 и Т2 - совместимые множества и все члены Т2 принадлежат множеству возможных значений Т1;

• Т1 и Т2 - совместимые указатели;

• Т1 и Т2 - совместимые процедурные типы;

• Т1 - объект и Т2 его потомок.

Урок № 3.

Тема урока: Решение задач.

Учащимся предлагается решить четыре задачи при помощи учителя:

Задача 1.

Даны два числа. Вывести на экран их сумму, разность и произведение.

program primer1;

var a, b:integer;

s, p, r :integer;

begin

writeln ('Введите а и b:');

readln (a, b);

s := a+b;

R := a-b;

P := a*b;

Writeln ('Сумма=', S,' Разность (а-b) =', R, ' Произведение=', P);

end.

Вопрос к классу: Какие значения а и b можно вводить в этой программе? Какого типа получится результат, если а и b типа integer?

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

Задача 2.

Вывести на экран строку: «Мама мыла раму».

program primer2;

var

s: string;

begin

s := 'Maма мыла раму';

writeln (s);

end.

Пример 3.

Записать программу вычисления значения выражения 32767+2.

program primer3;

var

a: integer;

x, y :real;

begin

a :=32767;{Максимально возможное значение типа Integer}

x :=a+2;{Переполнение при вычислении этого выражения!}

y :=longint (a)+2;{Переполнения нет после приведения переменной к более мощному типу}

writeln (x:10:0,y:10:0);

end.

Пример 4.

Вывести на экран массив с элементами 5 6 10 255.

program primer4;

var

a: array [1..4] of byte;

begin

a [1] :=5;

a [2] :=6;

a[3] :=10;

a[4] :=255;

writeln (a[1]:4, a[2]:4, a[3]:4, a[4]:4);

end.

Урок 4.

Тема урока: Решение задач.

Учащимся предлагается решить задачи самостоятельно:

Задача 1.

Даны два числа -32800 и 5000. Вычислить их произведение.

Решение:

program zadacha1;

var

a,b,x:longint;

begin

a:=-32800;

b:=5000;

x:=a*b;

writeln(x);

end.

Задача 2.

Вывести на экран массив с элементами -5,6 66,25 10 0,255.

Решение:

Program zadacha2;

Var

a:array[1..4] of real;

Begin

a[1]:=-5.6;

a[2]:=66.25;

a[3]:=10,5;

a[4]:=0.255;

Writeln(a[1]:6:1,a[2]:6:2,a[3]:6:1,a[4]:6:3);

end.

Задача 3.

Даны два катета прямоугольного треугольника. Найти его гипотенузу.

Решение:

program zadacha3;

var a,b,gip:real;

begin

writeln('Введите два катета а и b:');

readln(a,b);

gip:=sqrt(sqr(a)+sqr(b));

writeln('гипотенуза=',gip:5:2);

end.

Урок 5.

Тема урока: Контрольная работа по теме «Turbo Pascal. Типы данных».

Вариант 1.

1. Напишите все типы данных, которые вы знаете.

Ответ: Порядковые

Вещественные

Целые

Логические

Символьные

Перечисляемые

Тип-диапазон

Структурированные

Указатели

Строки

Процедурные

Объекты

Массивы

Записи

Множества

Файлы

2. Чем отличаются порядковые типы от вещественных?

Ответ:

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

3. Выведите на экран две строчки из песни «В лесу родилась ёлочка».

Решение:

program zadacha3;

var s,s1:string;

begin

s:='В лесу родилась ёлочка';

s1:='В лесу она росла';

writeln(s);

writeln(s1);

end.

Вариант 2.

1. Напишите все типы данных, которые вы знаете.

Ответ: Порядковые

Вещественные

Целые

Логические

Символьные

Перечисляемые

Тип-диапазон

Структурированные

Указатели

Строки

Процедурные

Объекты

Массивы

Записи

Множества

Файлы

2. Укажите какой тип данных записан:

а) Var st: string;

b) Var

Date:1..31;

Ответ:

а) строковый тип;

b) тип-диапазон.

3. Вывести на экран массив с элементами 5660 -6 32810 -25555.

Решение:

Program zadacha;

Var

a:array[1..4] of longint;

Begin

a[1]:=5660;

a[2]:=-6;

a[3]:=32810;

a[4]:=-25555;

Writeln(a[1]:5,a[2]:3,a[3]:6,a[4]:7);

end.

Вариант 3.

1. Напишите все типы данных, которые вы знаете.

Ответ: Порядковые

Вещественные

Целые

Логические

Символьные

Перечисляемые

Тип-диапазон

Структурированные

Указатели

Строки

Процедурные

Объекты

Массивы

Записи

Множества

Файлы

2. Укажите какой тип данных записан:

а) a, b: array[1..10] of real;

b) tуре

соlоrs = (blасk, red, white);

Ответ:

а) массив;

b) перечисляемый.

3. Даны два числа 56089 и 20021. Вычислить их произведение.

Решение:

program primer1;

var a,b,p:longint;

begin

writeln('Введите a и b:');

readln(a,b);

p:=a*b;

writeln('Произведение=',p);

end.

Критерии оценки:

При правильном ответе на 2 вопроса и правильном решении задачи ставится оценка – «5»;

При правильном ответе на 1 вопрос и решении задачи ставится оценка– «4»;

При выполнении одного задания ставится – «3».

Литература:

1. Можаров М.С. Языки и методы программирования. Часть первая. TURBO PASCAL/Можаров М.С. Учебное пособие. 2-е издание, перераб. И доп.- Новокузнецк, Изд-во НГПИ, 2001.

2. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс./Фаронов В.В. Учебное пособие. Издание 7-е, переработанное.-М.: «Нолидж», издатель Молгачева С.В., 2001.

3


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

Современные педагогические технологии в образовательном процессе

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
1000 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Методическая разработка TURBO PASCAL. Типы данных. (146 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт