- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
3.2. Ограниченный тип (диапазон, интервал)
Множество значений простых типов упорядоченно и конечно (разумеется, кроме вещественного типа). Если программисту необходимо сузить диапазон значений, принимаемых некоторым объектом скалярного типа, то он осуществляет это в явном виде наложением ограничения на стандартный или определенный ранее перечислимый тип, который в этом случае называется базовым. Если какая-то переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором ограниченном диапазоне, то ее можно рассматривать как переменную ограниченного типа (иногда говорят интервальный тип или тип диапазон).
Пример.Type Day = (Mo , Tu , We , Th , Fr , Sa , Su);
Mom = 10...25
Sss = ` C`...`X`;
Wd = SA...SU;
Для ограниченного типа Momбазовым является целый тип, дляSSS- символьный, дляWd- определённый ранее перечислимый типDay.
Попытка присвоить переменной ограниченного типа значение \, не входящее в заданный диапазон, приведёт к возникновению ошибки при счёте.
Таким образом,. введение ограниченных типов перекладывает проверку допустимости значений с программиста на компилятор.
Пусть, например, в разделе описания указан перечислимый тип Год:
Type Year = ( Jan, Febr, Mart, Apr, May, Jun, Jul, Aug, Sent, Okt, Nov, Dec);
А нам предстоит решать задачи, связанные только с весенним временем года. Тогда можно ввести ограниченный тип: SpringSum= Маy..Aug; который является частью перечислимого типа.
При определении ограниченного типа указываются начальные и конечные значения диапазона, разделённые двумя точками.
Общий вид описания ограниченного типа:
Typeимя типа = константа 1 .. константаN;
Общий вид описания переменных ограниченного типа:
Varимя переменной: имя типа;
Пример.
Type T = 1... 100;
Var A, B: T;
Переменные А и В могут принимать любые значения из диапазона 1..100.
При использовании ограниченного типа должно выполняться следующее
Правила:
1) обе граничные константы должны быть одинакового типа;
2) начальное значение не должно быть больше конечного;
3) тип констант может быть любой простой, кроме действительного (целый, символьный, логический, перечислимый).
Пример. К= 15 ... 70; - целый
Lit= ‘A’ ... ‘z’ ; - символьный
Summer=Jun...Aug; - переменный
Если константы имеют стандартный типа можно делать непосредственно в разделе переменных.
Пример. Var S1, S2: 1..100;
Sim : ‘A’..’R’;
Тип констант называется базовым. Над переменными ограниченного типа разрешается выполнять все операции, которые допустимы для данных его базового типа.
Пример. Если переменная К принимает только целые значения 4,5,6,7,8,9, то лучше дать описание:VarK: 4..9; чемVarK:Integer; И вот почему. В случае выхода ‘K’ за диапазон 4..9 в первом варианте (ограниченный тип) будет выдано диагностическое сообщение об ошибке. Во втором варианте (целый тип) может быть выдан неверный результат.
Целый тип описания переменных рекомендуется использовать только тогда , когда диапазон значения переменной либо заранее неизвестен, либо занимает весь допустимый в языке Паскаль диапазон для целого типа.
Пример.ВычислитьW=Aln|x| при |x| <1
W = при |x| >=1
Program usl;
Var A,X,W : Real;
Label : Error;
Begin
Writeln (‘ввести данные’);
Write (‘A=’);
Readln (A);
Write (‘X=’);
Readln (X);
If Abs (X) <1 Then Writeln (‘W=’, A*ln (Abs(X)))
Else If Sqr (X) >A Then begin Writeln (‘ошибка’);
goto Error
End.
Else Writeln (‘W=’, Sqrt (A-Sqrt(X)));
Error:End.
Пример. Составить программу для вывода возможных значений координатXиYв зависимости от № квадранта.
Program Kvadrant;
Var Number : Integer;
Begin
Writeln (‘N=’);
Readln (Number);
Case Number of
1: Writeln (‘X и Y >0/’)
2: Writeln (‘X < 0/ , Y > 0/’);
3: Writeln (‘X и Y <0/’);
4: Writeln (‘X >0/ , Y <0/’);
End;
End.
Пример. Вывод первых дести натуральных чисел в возрастающем порядке.
Program Num 10;
Const KN = 10;
Var N:Integer;
Begin
For N:=1 To KN Do
Write (N:6);
Writeln;
End.
Program Num 10;
Const KN = 10;
Var N:Integer;
Begin
N:=0;
Rеpeat
N:=N+1;
Write (N);
Until N>=KN;
End.
Пример. Определитьк,при котором функциястановится меньше или равнаа.
Program Inter;
Var X,A,P:Real;
K: Integer;
Begin
Writeln (‘ввести X,A’);
Read (X,A);
K:=1;
P:=X;
Write P/K >A Do
Begin
K: = K+1;
P: = P*X;
End;
Writeln (‘K = ‘, K);
End.
Program Inter;
Var X,A,P : Real;
K: Integer;
Begin
Writeln (‘Ввести X,A’);
Readln (X,A);
K: = 0;
P: = 1;
Repeat
K : = K+1;
P : = P*X;
Until P/K <=A;
Write(‘K = ‘,K);
End.
Пример. Вычислить сумму бесконечного ряда с точностью до члена ряда, меньшего Е:Z= 1+
Рекуррентная формула Yn=Yn-1*X/n
Program Ryad;
Var X, Eps,Y,Z:Real;
N:Integer;
Begin
Writeln (‘Ввести X, Eps’);
Readln (‘X, Eps’);
N: = 0’
Y: = 1;
Z: = 1;
While Y > = Eps Do Begin
N: = N+1;
Y: = Y*X/N;
Z: = Z+Y;
End;
Write(‘Z= ‘Z);
End.