Similar presentations:
Turbo Pascal 7.0 Программирование на языке высокого уровня
1. Turbo Pascal 7.0 Программирование на языке высокого уровня.
Луковкин Сергей Борисович,к.ф.н., доцент кафедры «Автоматика и
вычислительная техника» МГТУ
2008 г.
2. ЯПВУ (краткая справка)
Примеры: Algol, Fortran, Cobol, C, C++, Visual Basic, Java, Python,PHP, Ruby, Perl, Pascal, Delphi, C#....
Языкам высокого уровня свойственно умение работать с комплексными
структурами данных.
В большинстве из них интегрирована поддержка строковых типов, объектов,
операций файлового ввода-вывода и т. п.
Первым языком программирования высокого уровня
считается компьютерный язык Plankalkül,
разработанный немецким инженером Конрадом Цузе ещё в период 1942—
1946 гг.
Однако транслятора для него не существовало до 2000 г.
Первым в мире транслятором языка высокого уровня является ПП
(Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г.
Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим
и содержал собственный загрузчик и отладчик, библиотеку стандартных
процедур.
Транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из
модулей.
Однако, широкое применение высокоуровневых языков началось с
возникновением Фортрана и созданием компилятора для этого языка (1957).
Луковкин С.Б. МГТУ.
2
3. Историческая справка
• Язык Pascal разработан Никлаусом Виртомна кафедре информатики Стэндфордского
университета в середине 60-х годов ХХ века.
• В 1985 г. появился язык Turbo Pascal 3.0.
Затем появились его версии 4.0 … 7.0
• Delphi – система (среда) программирования,
использующая язык Object Pascal. (1995 г.)
• Другие ЯПВУ: Fortran, Basic, Visual Basic, С,
C++, Borland C++, C#, Oberon, ….
Луковкин С.Б. МГТУ.
3
4. Список литературы
• Павловская Татьяна Александровна«Паскаль» - СПб. Питер 2007.
• Фаронов В.В. TurboPascal 7.0
• ТурбоПаскаль 7.0
• Фаронов В.В. Delphi 5
• Культин Н. Самоучитель Delphi 4.0
Фото(Т.А. Павловская и Вирт)
Фото (Павловская на курсах)
Луковкин С.Б. МГТУ.
4
5. Лекция 1.
• Символы, лексемы, выражения иоператоры ТР;
• Классификация типов данных ТР;
• Структура программы на языке ТР;
Луковкин С.Б. МГТУ.
5
6. Состав языка ТР 7.0
• Символы:–
–
–
–
буквы: A-Z, a-z, _
цифры: 0 1 2 3 4 5 6 7 8 9
спец. символы: +, *, { , } , ( , ) #, …
пробельные символы
• Лексемы ( словарная единица языка):
–
–
–
–
–
константы
13
3.14 ‘Константин’
имена (идентификаторы)
Kolobok
a
_11
ключевые ( зарезервированные) слова
begin var
if
знаки операций
+
:=
разделители
; [] ,
• Выражения:
– правило вычисления значения
(a + b)*с
• Операторы:
– исполняемые
– описания
Луковкин С.Б. МГТУ.
c := a + b
var a, b : real;
6
7. Константы (Const)
Целые десятичные:
127 -89
Целые шестнадцатеричные: $FF12 $A3
Вещественные с пл. точкой: 12.34 -3.1415
Вещественные с порядком:
2.7e2 3.5E-12
Символьные:
‘z’ ‘=‘ #98 #64
Строковые:
‘Это строка’ , ‘варкалось’
Логические: TRUE и FALSE
Луковкин С.Б. МГТУ.
7
8. Имена (идентификаторы)
• имя должно начинаться с буквы или с _ ;• имя должно содержать только буквы, знак
подчеркивания и цифры;
• прописные и строчные буквы не различаются;
• длина имени практически не ограничена.
Примеры правильных имен:
Perimeter, A, x01, A13, A_and_B.
Примеры неправильных имен:
2late, Big one, Iseekю.
Луковкин С.Б. МГТУ.
8
9. Ключевые (зарезервированные) слова
• Ключевые слова — идентификаторы,имеющие специальное значение для
компилятора. Их можно использовать только
в том смысле, в котором они определены.
• Например:
• Program
begin end
• array do for
uses
• var const type label …. и т.д.
• Если ключевое слово заключено в
апострофах, то это константа: ‘Begin’
Луковкин С.Б. МГТУ.
9
10. Знаки операций
• Знак операции — один или более символов,определяющих действие над операндами.
Внутри знака операции пробелы не
допускаются. Например, целочисленное
деление записывается как div. Операции
делятся на унарные (с одним операндом) и
бинарные (с двумя).
A and B ; X >= 0.5 ; s<>0.2 ; y/z ; L div m ;
k mod n
Луковкин С.Б. МГТУ.
10
11. Операции и их приоритеты.
1.Унарная операция not, унарный минус - , взятие
адреса @.
2.
Операции типа умножения:
* / div
3.
shr.
Операции типа сложения:
+
4.
mod and shl
-
or
xor
Операции отношения:
=
<>
<
>
<=
>=
in
ПРИОРИТЕТ УБЫВАЕТ СВЕРХУ – ВНИЗ !
Луковкин С.Б. МГТУ.
11
12.
Классификация типов данных ТРСтандартные
Определяемые программистом
Простые
логические
целые
вещественные
символьный
строковый
адресный
файловые
перечисляемый
интервальный
адресные
Составные
массивы
строки
записи
множества
файлы
объекты
процедурные
типы
Порядковые: целый, логический, символьный,
перечисляемый, интервальный( тип-диапазон).
Луковкин С.Б. МГТУ.
12
13. Концепция типа данных
Тип данных определяет:• внутреннее представление данных, а
следовательно, и множество их
возможных значений;
• допустимые действия над данными
(действия - это операции или функции).
Луковкин С.Б. МГТУ.
13
14.
Структура программы на ТР.Program ИМЯ_ПРОГРАММЫ;
{$ ….} – директивы компилятора
Uses
список имён модулей;
LABEL объявление глобальных меток;
CONST объявление глобальных констант;
TYPE
объявление глобальных типов;
VAR
объявление глобальных имён;
Далее идут описания ПРОЦЕДУР или ФУНКЦИЙ
PROCEDURE ИМЯ ПРОЦЕДУРЫ;
или
FUNCTION ИМЯ_ФУНКЦИИ: тип;
Label … ; Const … ; Type … ; Var …. ; - объявление локальных меток,
констант, типов и переменных.
BEGIN ……. END; - тело процедуры или функции;
Основной блок программы
BEGIN ……. END.
Луковкин С.Б. МГТУ.
14
15.
Структура программы на TP 7.0Заголовок программы; директивы;
подключаемые модули;
Глобальные метки, константы, типы,
переменные;
Раздел процедур и функций
заголовок процедуры или функции;
локальные метки, константы, типы,
переменные;
Begin …… end;
Основная программа:
BEGIN ….
END.
Луковкин С.Б. МГТУ.
15
16. Простейшая программа на ТР 7.0
PROGRAM my_01;BEGIN
WRITELN(‘ Это моя первая программа на Turbo Pascal’);
Readln;
End.
=======================================================
Процедуры
ввода –
вывода
Луковкин С.Б. МГТУ.
Read, Readln – ввод с клавиатуры
и
Write, Writeln - вывод на экран ПК.
16
17. Структура Модуля
Unit имя;Interface
Uses
Type
Private
Public
End;
Луковкин С.Б. МГТУ.
17
18. Лекция 2.
• Логический тип данных;• Целые типы; Операции с данными целого типа;
• Стандартные процедуры и функции (для переменных
порядкового типа)
Луковкин С.Б. МГТУ.
18
19. Логические типы
• Основной логический тип данных - boolean.Величины этого типа занимают в памяти 1
байт и могут принимать два значения: true
(истина) или false (ложь). Внутреннее
представление значения false — 0 (ноль),
значения true — 1.
Для совместимости с другими языками определены типы ByteBool,
WordBool и LongBool длиной 1, 2 и 4 байта соответственно. Истинным
в них считается любое отличное от нуля значение.
• К величинам логического типа применяются
логические операции and, or, xor и not и
операции отношения.
Луковкин С.Б. МГТУ.
19
20. Логические операции
Конъюнкция(и)
Дизъюнкция
( или )
Исключающее
или
Отрицание
(нет)
a
b
a and b
0
0
0
0
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
0
Луковкин С.Б. МГТУ.
a or b
a xor b
not a
20
21.
Целые типыТип
byte
word
integer
shortint
longint
Размер
Знак
Диапазон значений
1 байт
нет
0 .. 255 (0 .. 28-1)
2 байта
нет
0 .. 65535 (0 .. 216-1)
2 байта
есть
-32768 .. 32767 (-215 .. 215-1)
1 байт
есть
-128 .. 127 (-27 .. 27-1)
4 байта
есть
-2147483648 .. 2147483647
(-231 .. 231-1)
Byte => Word => Shortint =>integer => Longint
Луковкин С.Б. МГТУ.
21
22. Операции с данными целого типа
Арифметические операцииОперация
Знак операции
сложение
+
вычитание
-
умножение
*
частное от деления
div
остаток от деления
mod
Луковкин С.Б. МГТУ.
22
23. Операции с данными целого типа (продолжение)
• Операции отношения:>
< =
<=
>= <>
• Поразрядные операции:
and, or, xor, not
• Операции сдвига: shl, shr
Луковкин С.Б. МГТУ.
23
24. Операции с данными целого типа
ПРИМЕРЫ1) Var n, k, r, q: shortint;
….
n:=17; k:=5;
q:=n div k;
r:= n mod k;
….
writeln( n < k ) ;
writeln( n > 22) ;
Луковкин С.Б. МГТУ.
24
25.
Стандартные математические функцииИмя
abs
Описание
модуль
arctan арктангенс угла
Результат
целый
Пояснения
|x| записывается abs(x)
вещественный arctg x записывается arctan(x)
cos
косинус угла
вещественный cos x записывается cos(x)
exp
экспонента
вещественный ex записывается exp(x)
ln
натуральный логарифм вещественный logex записывается ln(x)
odd
проверка на четность
логический
odd(3) даст в результате true
pred
предыдущее значение
целый
pred(3) даст в результате 2
sin
синус угла
вещественный sin x записывается sin(x)
sqr
квадрат
целый
sqrt
квадратный корень
вещественный √x записывается sqrt(x)
succ
следующее значение
целый
Луковкин С.Б. МГТУ.
x2 записывается sqr(x)
succ(3) даст в результате 4
25
26. Стандартные процедуры и функции (для переменных порядкового типа)
Имя процедурыили функции
Пояснения
inc
inc(x) — увеличить х на 1
inc(x, 3) — увеличить х на 3
dec
dec(x) — уменьшить х на 1
dec (x, 3) — уменьшить х на 3
ord
chr
ord(F) – вычисляет порядковый номер F
pred и succ
возвращают предыдущее и последующее значения
соответственно
Low и High
возвращают наименьшее и наибольшее значения
величин данного типа.
Луковкин С.Б. МГТУ.
Chr(N) – возвращает символ с порядковым номером N,
где N : byte.
26
27. Лекция 3. Вещественный и символьный типы.
• Вещественный тип. Операции.Функции.• Символьный тип. Операции.Функции.
• Стандартные математические функции
Луковкин С.Б. МГТУ.
27
28. Вещественные типы
• Внутреннее представление вещественногочисла состоит из двух частей — мантиссы и
порядка; каждая часть имеет знак.
• Существует несколько вещественных типов,
различающихся точностью и диапазоном
представления данных.
• Точность числа определяется количеством
бит, отведённых для записи мантиссы, а
диапазон — количеством бит для записи
порядка.
Луковкин С.Б. МГТУ.
28
29. Вещественные типы ТР 7.0
ТипРазмер
Значащих цифр
Диапазон значений
real
6 байт
11-12
2.9e-39 .. 1.7e+38
single
4 байта
7-8
1.5e-45 .. 3.4e+38
double
8 байт
15-16
5.0e-324 .. 1.7e+308
extended
10 байт
19-20
3.4e-4932 .. 1.1e+4923
comp
8 байт
19-20
-9.22e18 .. 9.22e18
Луковкин С.Б. МГТУ.
29
30.
Функции для работы с данными вещественного типаИмя
Описание
Randomize
Исп. для генерирования
случайных чисел.
Random
Random(N)
Равном. распр. случ.
число [0;1] или [0;N]
Pi
Trunc(x)
Round(x)
Int(x)
Frac(x)
Луковкин С.Б. МГТУ.
Примеры
Число “ПИ”
Отбрасывает дробную
часть x
Tranc(-3.1) = -3
Tranc(5.9) = 5
Округление до
ближайшего целого
Round(3.9)=4;
Round(6.5)=7;
Целая часть аргумента
( как в математике)
Дробная часть аргумента
x =Int(x)+Frac(x)
Int(0.95) = 0
Int(-1.3)= -2
Frac(2.7) = 0.7
Frac(-3.6)= 0.4
30
31. Операции с данными вещественного типа
Арифметические
+ - * /
Операции отношения
< = <= > >= <>
Возведения в степень нет ( кроме функции SQR):
Для возведения X в степень S надо выполнить
следующие действия:
XS = exp(s*Ln(X)); ( X>0 );
Луковкин С.Б. МГТУ.
31
32.
Примеры выражений ТР, использующиематематические
функции.
1) Возведение в степень: Y = xs
Y =exp(s*Ln(x))
2) Вычисление тангенса: Tg(x) = sin(x)/cos(x);
3) Вычисление логарифма с произв. основанием
Logs (x) = Ln(x)/Ln(s);
Пример:
x e0,2 2Tg (2 ) 1,6*103 * Lg ( x 2 )
y
2Tg (2 )*sec( x)
Замечания
Луковкин С.Б. МГТУ.
32
33. Контрольные вопросы 1.1
Какие из перечисленных констант являются допустимыми?1) 259
2) 0,01
3) ‘ф’
4) 1.7*e3
5)$EEC
6) ‘///’
7) $EEH
Луковкин С.Б. МГТУ.
8) 0.008E-14.2
9) 8.3e+05
10) ‘$’
11) *
12) “6”
13) ‘с’’езд’
14) -277+2
33
34. Контрольные вопросы 1.2
• Число -350 можно хранить в переменной типа:• byte word
shortint
integer real
В переменной типа byte можно хранить числа:
15
207
-12 -198
1224
Результат операции сложения целых =
Результат операции сравнения целых =
Результат вычисления выражения sin(4) – cos(6) =
Луковкин С.Б. МГТУ.
34
35. Контрольные вопросы 1.3
• вычислить при e=4, a=3:e +sqrt(e) * 1e1 / 2 * a
• Ответ: 34
Луковкин С.Б. МГТУ.
35
36. Символьный тип
• Этот тип данных, обозначаемый ключевым словомchar, служит для представления любого символа из
набора допустимых символов. Для хранения в
памяти под каждый символ отводится 1 байт.
• К символам можно применять операции отношения
(<, <=, >,>=, =, <>), при этом сравниваются коды
символов.
Примеры:
Var s,t :char; ….. s:=‘f’; t:=‘w’; writeln(s<t);
writeln(s>t)
Луковкин С.Б. МГТУ.
36
37.
ASCII table ( первые 128 символов)Луковкин С.Б. МГТУ.
37
38. Функции для работы с символьным типом данных.
ИмяОписание
Результат
Целый: ord(A) = 64
ord
порядковый номер символа из
таблицы ASCII
chr
преобразование номера в символ Символьный: Chr (64) = A
таблицы ASCII
pred
предыдущий символ
символьный: Pred(S) = R
succ
последующий символ
Символьный: Succ(X) = Y
upcase перевод в верхний регистр
Луковкин С.Б. МГТУ.
символьный
38
39. Лекция 4.
1.2.
3.
4.
Переменные
Константы
Выражения
Ввод с консоли; вывод на
консоль
5. Линейные программы.
40. Переменные
• Переменная — это величина, которая во времяработы программы может изменять свое значение.
• Все переменные, используемые в программе,
должны быть описаны в разделе описания
переменных, начинающемся со служебного слова
var.
• Для каждой переменной задается ее ИМЯ и ТИП,
например:
var
Луковкин С.Б. МГТУ.
number
x, y
option
: integer;
: real;
: char;
40
41. Типизированные константы
При объявлении можно присвоить переменнойнекоторое начальное значение
(инициализировать).
Инициализированные переменные
описываются после ключевого слова const и
могут использоваться в программе как
обычные переменные:
const
number : integer = 100;
x : real = 0.02;
option : char = ’ю’;
Луковкин С.Б. МГТУ.
41
42. Именованные константы
Вместо значений констант можно (и нужно!)использовать в программе их имена.
Это облегчает читаемость программы и
внесение в нее изменений:
const
weight = 61.5;
n = 10;
g = 9.8;
Луковкин С.Б. МГТУ.
42
43. Выражения
Выражение — правило вычисления
значения.
В выражении участвуют операнды,
объединенные знаками операций.
Операндами выражения могут быть
константы, переменные и вызовы
функций.
Операции выполняются в
соответствии с приоритетами.
Для изменения порядка
выполнения операций
используются круглые скобки.
Результатом выражения является
значение определенного типа. Этот
тип определяется типами входящих
в него операндов.
Величины, участвующие в
выражении, должны быть
совместимых типов.
Луковкин С.Б. МГТУ.
t + sin(x)/2 * x
результат имеет
вещественный тип
a <= b + 2
результат имеет
логический тип
(x > 0) and (y < 0)
результат имеет
логический тип
43
44. Оператор присваивания
• переменная := выражение;• a := b + c;
• x := 1;
• x := x + 0.5;
• вещественная переменная := целое выражение;
Луковкин С.Б. МГТУ.
44
45. Процедуры ввода-вывода
ВВОД с КОНСОЛИread(список);
readln[(список)];
Список – последовательность имён, разделённых
запятыми: Read (a,b);
Ввод значения каждой переменной выполняется так:
• значение переменной выделяется как группа символов,
расположенных между разделителями ( пробелами);
• эти символы преобразуются во внутреннюю форму
представления, соответствующую типу вводимой
переменной;
• значение записывается в ячейку памяти, определяемую
именем переменной.
Луковкин С.Б. МГТУ.
45
46. Lazarus (вывод в MEMO)
procedure TForm1.Button1Click(Sender: TObject);var i : integer;
begin
Form1.Memo1.Clear; //очистка объекта TMemo
for i:=1 to 40 do
begin
Form1.Memo1.Lines.Append(IntToStr(i));
// значение i выводиться с новой строки
end;
end;
Луковкин С.Б. МГТУ.
46
47. Lazarus
Ввод данных в программу осуществляетсяпутем изменения свойства text объекта TEdit в коде.
Например, ввод значения переменной N через TEdit1:
N : = StrToInt(Edit1.Text);
StrtoInt() – функция преобразует текстовую
информацию, введенную в Edit1,
в цифровую типа Integer
StrToFloat() – функция преобразует текстовую
информацию, введенную в Edit1,
в действительное число
Луковкин С.Б. МГТУ.
47
48. Lazarus
varstringValue : string;
floatValue : Extended;
begin
// Set up the source string containing a number representation
stringValue := '123.456E+002';
// Convert it to a floating point number
floatValue := StrToFloat(stringValue);
// And display the value
ShowMessage(stringValue+' = '+FloatToStr(floatValue));
end;
Луковкин С.Б. МГТУ.
48
49. Lazarus
varamount1, amount2, amount3 : Extended;
begin
amount1 := 1234567890.123456789; // High precision number
amount2 := 1234567890123456.123; // High mantissa digits
amount3 := 1E100;
// High value number
ShowMessage('Amount1 = '+FloatToStr(amount1));
ShowMessage('Amount2 = '+FloatToStr(amount2));
ShowMessage('Amount3 = '+FloatToStr(amount3));
end;
Луковкин С.Б. МГТУ.
49
50.
ShowMessage('Используя 8,4 = '+FloatToStrF(amount1, ffFShowMessage('Используя 4,4 = '+FloatToStrF(amount1, ff
ShowMessage('Используя 4,2 = '+FloatToStrF(amount1, ff
ShowMessage('Используя 2,4 = '+FloatToStrF(amount1, ff
// Показ в формате General
ShowMessage('');
ShowMessage('General форматирование :');
ShowMessage('');
ShowMessage('Используя 8,4 = '+FloatToStrF(amount1, ff
ShowMessage('Используя 4,4 = '+FloatToStrF(amount1, ff
ShowMessage('Используя 4,2 = '+FloatToStrF(amount1, ff
ShowMessage('Используя 2,4 = '+FloatToStrF(amount1, ff
Луковкин С.Б. МГТУ.
// Показ в формате Number
50
51. Вывод на консоль
write(список);или
writeln[(список)];
var
n : integer;
b : real;
... n:=1; b:=4.12417; …
writeln(’Значение n = ’, n:3, ’ b = ’, b:5:2,
sin(n) + b);
Значение n =
Луковкин С.Б. МГТУ.
1 b = 4.124.9614709848E+00
51
52. Правила формирования списка в процедуре вывода
Список вывода разделяется запятыми.
Список содержит выражения логических, целых, вещественных,
символьного и строкового типов.
После любого значения можно через двоеточие указать
количество отводимых под него позиций.
Для вещественных чисел можно (нужно) указать второй формат,
указывающий, сколько позиций из общего количества позиций
отводится под дробную часть числа.
Если форматы не указаны, то для вывода целого числа,
символа и строки отводится минимально необходимое для их
представления количество позиций.
Под вещественное число отводится 17 позиций, 10 из них —
под дробную часть.
Форматы могут быть выражениями целого типа.
Луковкин С.Б. МГТУ.
52
53. Примеры форматированного и бесформатного вывода
Пусть: K,P,Q – целого типа, R – вещественного, B – булевского
типа, С – символ, S – строка, _ пробел.
K=134
Write (K)
Write (K,K,K)
Write (K:6)
Write((k+k):7)
R=715.432
R= -1.919E+01
Write (R)
Write (R)
_7.1543200000E+02
_ -1.919000000E+01
R=511.04
Write (R:15)
5.110400000E+02
R=511.04
R= -46.78
Write(R:8:4)
Write(R:7:2)
511.0400
_ -46.78
C=‘X’
Write (C:3)
Write (C:2, C:4)
__X
_X___X
Луковкин С.Б. МГТУ.
134
134134134
_ _ _ 134
_ _ _ _268
53
54. Линейные программы
Это самые простые программы.Операторы таких программ
выполняются последовательно, в
том порядке, в котором они были
написаны.
Программы с ветвлениями и
циклами будут рассмотрены позже.
55. Пример линейной программы (перевод температуры из шкалы Фаренгейта в шкалу Цельсия)
tc5
(t f 32)
9
program temperature;
var tf, tc : real;
begin
write('Введите температуру по Фаренгейту = ');
readln(tf);
tc := 5 / 9 * (tf - 32);
writeln('По Фаренгейту: ', tf:6:2,
' в градусах Цельсия: ', tc:6:2);
Readln;
end.
Луковкин С.Б. МГТУ.
55
56. Пример №2 Программа перевода градусной меры угла в радианную
• Вводим величину угла в градусной мерев виде d m s.
Например 23 46 28 = 23° 46’ 28’’ .
• Переводим минуты и секунды в градусы
alf = d + m/60 + s/3600 .
• Радианная мера угла x= (p /180)*alf .
• Выводим на экран x.
• Вычисляем и выводим на экран
sin(x) и cos(x).
Луковкин С.Б. МГТУ.
56
57. Пример №3 Программа перевода радианной меры угла в градусную
• Вводим величину угла в радианах:x (x>0)
• Переводим радианную меру угла x в
градусную alf = (180/p)*x .
• Выделяем градусы, минуты и секунды:
d = int(alf);
am = Frac(alf)*60 ; m = int(am);
as = Frac(am)*60 ; s = round(as);
• Выводим на экран d m s.
Луковкин С.Б. МГТУ.
57
58. Лекция 5.
• Основные операторы Turbo Pascal.• Примеры программ с ветвлением и
циклами.
Луковкин С.Б. МГТУ.
58
59. Простейшие операторы ТР 7.0
• Составной оператор:Begin S1; S2; …. End;
• Пустой оператор:
; ;
• Безусловные операторы и функции:
Goto <метка> ;
Break – выход из цикла;
Exit – выход из подпрограммы;
Halt(n) – завершает работу программы с кодом = n.
Луковкин С.Б. МГТУ.
59
60. Операторы ветвления IF … then … else
If <выражение> then S1 else S2;Луковкин С.Б. МГТУ.
If <выражение> then S;
60
61. Операторы ветвления IF (примеры)
sx:=1;if x < 0 then sx := -1;
=======================================
if (a < b) and (a < d) then s:=‘left’
else
if (a > b) and (a > d) then s:=‘right’
else s:=‘middle’
где расположена (.) a
=======================================
if a < b then
if a < c then m := a
else m := c
else
if b < c then m := b
else m := c;
поиск min из {a,b,c}
Луковкин С.Б. МГТУ.
61
62. Пример (применение оператора if).
y-2
1
2
x
x 0
x 2 y 2 1 или y 0
y x 2
-2
program shoot;
var x, y: real;
begin
writeln(‘ Введите значения х и у:’);
readln(x, y);
if (sqr(x) + sqr(y) <= 1) or (x <= 0) and (y <= 0)
and (y >= - x - 2)
then
writeln(‘ Точка попадает в область’)
else
writeln(‘ Точка не попадает в область’);
end.
Луковкин С.Б. МГТУ.
62
63. Оператор выбора CASE
case выражение ofконстанты_1 : S1;
константы_2 : S2;
………..
константы_n : Sn;
[ else : S0; ]
end;
Луковкин С.Б. МГТУ.
63
64. Пример (CASE)
Var a: byte;……
case a of
4 : writeln(’4’);
5, 6 :
writeln(’5 или 6’);
7 .. 12: writeln(’от 7 до 12’);
end;
Луковкин С.Б. МГТУ.
64
65. Операторы циклов
• For• For
Перечисляемый
i:=A to B do <оператор>;
i:=B downto A do <оператор>;
С предусловием
• While <Условие> Do <оператор>;
С постусловием
• Repeat <тело цикла> Until <условие>;
Луковкин С.Б. МГТУ.
65
66. Блок-схема цикла For
i:=Ai<=B
нет
да
Выполнить операторы цикла
i:=i+1
Луковкин С.Б. МГТУ.
66
67. Блок-схема цикла While
УсловиеВыполняется ?
нет
да
Выполнить операторы цикла
Луковкин С.Б. МГТУ.
67
68. Блок-схема цикла Repeat … Until
Выполнить операторы цикланет
Условие
Выполняется ?
да
Луковкин С.Б. МГТУ.
68
69. Операторы циклов (комментарии)
• Операторы перечисляемого цикла могут невыполниться ни одного раза (например, если A > B
для “ For … to …“ )
• Количество выполнений операторов перечисляемого
цикла известно заранее( = B-A+1).
• Тело цикла Repeat …. Until выполняется хотя бы 1 раз в
любом случае.
• While … Do может не выполниться ни разу.
for i:= -1 to 5 do write( ‘A’);
for k:=6 downto 4 do writeln(‘W’);
M:=2; repeat writeln(‘Эх, раз …’) until M< 0;
{это цикл }
K:=4; S:=0.0; while K > 0 do begin s:=s+1/K; K:=K-1 end;
Луковкин С.Б. МГТУ.
69
70. Пример использования оператора For …. To …. Do …;
Program tabula_F; { табуляция y=k*x2 }Var a,b, k, x, y,h: real;
N,i:byte;
Begin
Write(‘ Введите k= ‘);
Readln(k);
Write(‘ Введите a,b,N= ‘); Readln(a,b,N);
h:=(b-a)/(N-1);
{шаг табуляции
функции}
writeln(' —————————');
writeln('|
X
|
Y
|');
writeln(' —————————');
For i:= 1 to N do begin
x:=a+(i-1)*h;
y:=k*sqr(x);
writeln('|', x:9:2,' |', y:9:2,' |');
end;
writeln(' —————————');
end.
Луковкин С.Б. МГТУ.
y=f(x)
a
b
x
y
70
71. Пример использования оператора while <выражение> do S;
Пример использования оператораwhile <выражение> do S;
program tabula;
var Xa, Xb, Hx, k, x, y : real;
begin
writeln('Введите Xa, Xb, Hx, k');
readln(Xa, Xb, Hx, k);
writeln(' —————————');
writeln('|
X
|
Y
|');
writeln(' —————————');
x := Xa;
while x <= Xb do begin y := k * x;
writeln('|', x:9:2,' |', y:9:2,' |');
x := x + Hx;
end;
writeln(' —————————');
end.
Луковкин С.Б. МГТУ.
y = k x
Xa
Xb
X
Y
71
72. Цикл с постусловием Repeat ….. Until …
Приближённое вычислениеA =x
1
A
xn = (xn-1 +
); xn
x.
2
xn-1
program square_root;
var A, eps, Xp, X : real;
begin
writeln('Введите аргумент и точность : ');
readln(A, eps);
If ((A <0) or (eps < 0)) then Halt(100);
X := A/2;
{ начальное приближение. Его лучше вводить.}
repeat Xp := X;
X := (Xp + A/ Xp) / 2;
until abs(X – Xp) < eps;
writeln('Корень из ', А:6:3, ' с точноcтью ', eps:7:5,
'равен ', X :9:5);
end.
Луковкин С.Б. МГТУ.
72
73. Лекция 6. Типы данных, определяемые программистом.
Типы данных,определяемые программистом
Луковкин С.Б. МГТУ.
Простые:
Составные:
Перечисляемый
и
Тип-диапазон
Массивы;
Записи;
Множества;
Файлы
73
74. Как происходит описание типов в программе?
typeимя_типа = описание_типа
...
var
имя_переменной : имя_типа
ИЛИ
var
имя_переменной : описание_типа
Луковкин С.Б. МГТУ.
74
75. Простые типы данных, определяемые программистом
ЭТО:• Перечисляемый тип
• Тип-диапазон (интервальный тип)
Луковкин С.Б. МГТУ.
75
76. Перечисляемый тип данных
typeИмя_типа = (список имен констант);
type
Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown);
…
var m, n : Colors;
…
m := Blue; n := m;
Пояснение:
Луковкин С.Б. МГТУ.
ord(Green)=2; m:=Red; n:= succ(Magenta);
76
77. Интервальный тип данных (тип-диапазон)
TypeType
имя_типа = Const_1 .. Const_2
Hour = 0 .. 23; Min = 0..59;
Cent_20 = 1901 .. 2000;
Range = -100 .. 100;
Letters = ’a’ .. ’z’;
Degree = 0 .. 360;
var r : -100 .. 100;
или
var r : Range;
Var x:Letters; …
Write(High(x),Low(x));
Луковкин С.Б. МГТУ.
77
78. Массивы
• Массив -упорядоченная совокупность однотипных
элементов, рассматриваемая как единое целое.
• Доступ к элементу массива осуществляется
указанием его индекса.
ОПИСАНИЕ типа Массив:
Type имя_типа_массива = array [тип_индексов]
of тип_элементов массива
Замечания:
Тип_индексов – любой порядковый тип (кроме LongInt)
Обычно это тип – диапазон;
Луковкин С.Б. МГТУ.
78
79. Примеры описания массивов (одномерные массивы)
typemas = array [1 .. 7] of real;
Color = array [byte] of mas;
A = array [1..10] of boolean;
Const n=50;
const K : mas = (1, 1.2, 1.4, 1.6, 1.8, 2.0,
2.2);
var
с : mas;
a, b : array [1 .. n] of integer;
Y: array [char] of byte;
M:array[2..5] of string [4] ;
…
M[2]:=‘Неуд’; M[3]:=‘Удов’; M[4]:=‘Хор’;
M[5]:=‘Отл’;
Луковкин С.Б. МГТУ.
79
80. Двумерные массивы
Vara : Array [1..3, 1..3] of Real;
или
Type Mtr = Array [1..3, 1..3] of Real;
…
Var U, W, Q : Mtr;
a11
a21
a31
a12
a22
a32
Квадратная матрица
a [3x3]
a13
a23
a33
Расположение элементов двумерного массива в памяти:
Первая строка
a11
a12
Луковкин С.Б. МГТУ.
a13
Вторая строка
a21
a22 a23
Третья строка
a31
a32
a33
80
81. Инициализация 2D-массивов
Type mas2=array[1..3, 1..4] ofinteger;
const B: mas2 = ( ( 2, 3, 1, 0),
( 1, 9, 1, 3),
( 3, 5, 7, 0) );
Const m =4; n=5;
Var a:array[1..m, 1..n] of real;
…
for i := 1 to m do
for j := 1 to n do read (a[i, j]);
Луковкин С.Б. МГТУ.
81
82. Поиск максимального элемента массива и его номера
Program Max_E; { поиск макс.элемента и его номера }const n = 10;
var a : array [1 .. n] of real;
i ,im : integer;
max : Real;
begin
writeln('Введите ', n, ' элементов массива');
for i := 1 to n do read(a[i]);
max := a[1];
im := 1;
for i := 2 to n do
if a[i] > max then begin max := a[i]; im:=i end;
writeln('Максимальный элемент: ', max:6:2, ‘ его
номер=‘, im:3)
end.
Луковкин С.Б. МГТУ.
82
83. ПРИМЕР: Количество отрицательных элементов массива и сумма всех элементов.
Program Summa_Elem;const n = 10;
var sum:real; a : array [1 .. n] of real;
i, num : integer;
begin
writeln('Введите ', n, ' элементов массива');
for i := 1 to n do read(a[i]);
sum := 0;
num := 0;
for i := 1 to n do begin
if a[i] < 0 then inc(num);
sum := sum + a[i];
end;
writeln('Отрицательных элементов: ', num);
writeln('Сумма элементов: ', sum:10:3);
end.
Луковкин С.Б. МГТУ.
83
84. Вычисление значения кусочно-непрерывной функции (вариант 20).
Луковкин С.Б. МГТУ.84
85. Схема решения задачи (вариант 20).
1) На отрезке [-4; 0) уравнение прямой y(x) = (-1/2)x;2) На отрезке [0;2) часть окружности с центром в точке
(0; 2) и радиусом R:
x2 + (y-2)2 = R2, где R=2.
Выразим y через x: (y-2)2 = 4-x2; y-2 = ±(4-x2)(1/2)
Выбираем знак «-». Это нижняя часть окружности:
y = 2-(4-x2)1/2;
3) На отрезке [2; 4) часть окружности с центром (2; 0):
Её уравнение : (x-2)2 + y2 = 4 ; y= ± (4 - (x-2)2 )1/2
Выбираем «+»: …y = +(4 - (x - 2)2 )1/2
4) На отрезке [4; 5] уравнение прямой y= -(x-4), или
y = -x+4
Луковкин С.Б. МГТУ.
85