- •Оглавление
 - •1. 2. Среда Турбо-Паскаль
 - •1. 3. Структура языка Турбо-Паскаль
 - •1. 4. Типы переменных
 - •Var a1, a2 : array [ 1 . . 1000 ] of real ;
 - •Var m1: array[1..200] of integer; a1: array[100..200] of real;
 - •Var t1,t2:Date_m; c1:Ruch_b; s1:Lat_b; a1,a2:Otmetka; b:Ball;
 - •1. 5. Структура программы
 - •1. 6. Операции и стандартные функции
 - •1. 7. Операторы Турбо-Паскаля
 - •Составной оператор Begin "операторы" end;
 - •1. 7. 1. Операторы ввода/вывода данных
 - •Операторы вывода данных на экран Write("сп"); или Writeln("сп");
 - •X1, y1, z1: integer; xb, yb, zb: boolean;
 - •Var n, X, y: real;
 - •1. 7. 2. Оператор выбора
 - •0..9: Writeln('однозначное');
 - •1. 7. 3. Условный оператор
 - •If "условие" Then "оператор1" Else "оператор2";
 - •Var V : integer; Then
 - •If Writeln(a2)
 - •1. 7. 4. Оператор цикла с параметром
 - •Var a, s, Sn, I, n: word;
 - •Var s, Sn, pr: real; I, n: integer;
 - •Var y, X, a, dx: real; I, j: integer;
 - •Var a1, a2, n1, s, g: longint; bb: boolean;
 - •1. 7. 5. Операторы цикла с условием
 - •Var y, y1, X, eps, a, k: real; n: Word;
 - •1. 7. 6. Операторы ограничения и прерывания цикла
 - •1. 7. 7. Оператор перехода к метке
 - •Var b, a: longint;
 - •1. 8. Блок - схемы алгоритмов
 - •1. 9. Составление диалоговых программ
 - •Var I, n, n1: integer;
 - •1. 10. Массивы
 - •1. 10. 1. Линейные массивы
 - •1. 10. 2. Работа с элементами переменной строкового типа
 - •1. 10. 3. Двумерные массивы
 - •Var a: array[1..30, 1..7] of byte;
 - •2 S[2] Массив a: a[2, 1] a[2, 2] a[2, 3] a[2, 4] . . . A[2, j] . . . A[2, m]
 - •1. 10. 4. Создание баз данных с использованием массивов записей
 - •I: byte;
 - •1. 10. 5. Работа с большими массивами
 - •I, j: word;
 - •1. 11. Текстовые файлы
 - •Var c: char; j, I: word;
 - •1. 12. Разработка функций и процедур
 - •1. 12. 1. Описание функций и процедур
 - •Viz(Dat); { вызов процедуры } Readln end.
 - •Var z: r_1000; x1, x2: real; n: word;
 - •Var X: m_30х30_r; I, j, n, m: byte;
 - •Var a, b, c, ha, hb, hc: real;
 - •Var p, s: real;
 - •Var y, y1, x1: real;
 - •Var a, k, y: real; I: longint;
 - •1. 12. 2. Рекурсивные функции и процедуры
 - •Var n_1: Longint; I: word;
 - •Var ch: char; I: word;
 - •Var n, n1: integer;
 - •1. 13. Разработка модулей
 - •Interface
 - •1. 14. Модуль сrt
 - •1. 14. 1. Управление экраном в текстовом режиме
 - •InsLine; Вставка пустой строки.
 - •1. 14. 2. Управление клавиатурой
 - •Var n : word; f, dx, X, y, I, j, xm, ym : byte;
 - •1. 14. 3. Работа с символьными переменными
 - •Var r: registers;
 - •X, y, I, xm, ym: byte;
 - •1. 14. 4. Работа со строковыми переменными
 - •1. 14. 5. Управление звуковыми сигналами
 - •1. 15. Модуль Graph
 - •1. 15. 1. Инициализация графического режима
 - •InitGraph(Gd, Gm, 'way');
 - •1. 15. 2. Простейшие графические процедуры и функции
 - •Var X, y, VX, Vy, p: array[1..N] of integer; ch: char;
 - •I1, i2, zx, zy, ax, ay, I, k: integer;
 - •1. 15. 3. Рисование геометрических фигур
 - •1. 15. 3. 1. Построение заполненных фигур
 - •Var I, x1, y1, x2, y2, Gd, Gm : integer;
 - •1. 15. 3. 2. Работа с линиями
 - •1. 15. 3. 3 Создание графических узоров
 - •1. Перемещение фигуры.
 - •2. Масштабирование фигуры.
 - •3. Симметричное отображение фигуры.
 - •4. Штриховка углов.
 - •Var xx1, xx2, yy1, yy2, I: integer; k: real;
 - •5. Использование рекурсии.
 - •Var gD, gM, n, X, y, x1, y1, k: integer; dl, ugol, ugol_0, s, I: real;
 - •6. Создание узоров построением зеркальных отображений фигуры.
 - •Var I, j : integer;
 - •Var I, j : integer;
 - •1. 15. 3. 4. Работа с текстом в графическом режиме
 - •Var Gd, Gm, k, X, y, Size: integer; s: string;
 - •1. 15. 5. Мультипликация
 - •1. 15. 5. 1. Мультипликация с запоминанием части экрана
 - •Var Gd, Gm, I, j, k, Size, X, y, Xmax, Ymax: Integer;
 - •1. 15. 5. 2. Мультипликация с чередованием видеостраниц
 - •1. 15. 5. 3. Мультипликация с управлением движения образа
 - •1. 15. 5. 4. Модификация контурного изображения
 - •Var Gd, Gm, I, j, k, n, xc, yc, r, m: integer;
 - •X, y, x1, y1, x2, y2: array[1..12] of integer; alfa: real;
 - •Глава 2. Программирование в среде Турбо - Паскаль
 - •2. 1. Геометрические построения на плоскости
 - •2. 1. 1. Построение графиков функций
 - •0  Left, right  GetMaxX
 - •Interface
 - •Var right, left, down, up: integer; k_xy, kx, ky, x_max, x_min, y_max, y_min: double; { описание глобальных переменных }
 - •Implementation
 - •Var XX, yy: word; xg_m, yg_m:integer;
 - •Var xg0, yg0:integer;
 - •1 Спираль a*fi 0 ... 8 -1 1 3 -
 - •4 Логарифмическая a*Exp(b*fi) -3 ... 3 -1 1 -1 0 1
 - •5 Спираль a*fi2 - b -8 ... 8 -1 1 2 0 1 2
 - •6 Роза a*Sin(b*fi) 0 ... 8 -1 1 2 целые и
 - •12 Строфоида a*Cos(2*fi)/Cos(fi) 0,1 ... 1,5 -3 -2 1 -
 - •13 Циссоида a*Sin2(fi)/Cos(fi) 0,1 ... 1,5 -1 1 2 -
 - •2. 1. 2. Графическое решение уравнений
 - •2. 1. 3. Уравнение прямой на плоскости
 - •2. 1. 4. Построение касательных и нормалей к плоским кривым
 - •2. 1. 5. Двумерные преобразования координат
 - •Var z: real;
 - •Var alfa: real;
 - •I_r; picture;
 - •2. 1. 6. Проецирование пространственного изображения тела на плоскость
 - •2. 2. Некоторые задачи физики
 - •2. 2. 1. Механика
 - •Var x3, y3, l, Lc, sa, ca, s3, c3: double;
 - •2. 2. 2. Оптика и свет
 - •2. 2. 3. Электростатика и электромагнетизм
 - •2. 3. Математическое моделирование физических процессов
 - •2. 4. Моделирование многовариантных задач с использованием графов
 - •2. 5. Программы математических расчетов
 - •2. 5. 1. Численное решение уравнений
 - •2. 5. 2. Аппроксимация по методу наименьших квадратов
 - •2. 5. 3. Численный расчет интегралов
 - •2. 5. 4. Сортировка одномерных массивов
 - •Список литературы
 
УДК 681. 3
Сидоров М. Е. , Трушин О. В.
Школа работы на IBM PC. Часть 2. Уфа, 1996. с.
ISBN
Книга написана для начинающих программистов: учащихся старших классов, студентов. Для освоения изложенного материала необходимо наличие компьютера IBM PC, пакета Turbo-Pascal 7.0, и выполнение описанных в книге заданий непосредственно при чтении.
Цель этой книги - "плавное" вхождение в область программирования с постепенным усложнением заданий и алгоритмов. Первые задания имеют программы -"шаблоны", позволяющие начинающим программистам преодолеть психологический барьер изложения мыслей на алгоритмическом языке. Последующие задания имеют блоки операторов, поясняющие "изюминку" программы, которые следует модифицировать. Следует изучить приведенные примеры ("шаблоны") операторов и четко знать для чего служит каждый оператор. Большинство изложенных заданий являются оригинальными разработками авторов, особенно по модулям CRT и GRAPH. Приводятся также "стандартные" и известные интересные программы и задания.
Краткое изложение материала предполагает наличие "учителя", могущего прокомментировать "узкие места", привести дополнительные примеры, задания и контрольные вопросы (в том числе и по "шаблонам"), способствующие усвоению материала. Авторы не стремились к полному описанию языка, поэтому некоторые типы данных, специфические операции и процедуры, не нашедшие практического приложения, не рассматриваются. Авторы использовали все свои знания и опыт для создания познавательных практических заданий, способных вызвать интерес к результатам рутинного программирования. Освоение изложенного в книге материала позволит Вам перейти к профессиональному изучению алгоритмического языка Turbo-Pascal с использованием "толстых" книг, а также Help-описания.
Программирование в среде FoxPro изложено в виде примеров программ, позволяющих освоить основные команды и иметь представление о назначении команд FoxPro. Эта глава предназначена для студентов университетов.
Авторы выражают благодарность учителям информатики Сидоровой Н. Л. и Трушиной Д. В. за помощь при подборе и апробации материала для данной книги.
Разделы 1.15, 2.1.1, 2.1.5, 2.3, 2.5 и глава 3 написаны к. т. н. Трушиным О. В. ,
разделы 1.1 - 1.14, 2.1 - 2.2 и 2.4 написаны к. т. н. Сидоровым М. Е.
Общая редакция текста выполнена Сидоровым М. Е.
Оглавление
Стр.
Глава 1. Алгоритмический язык Турбо-Паскаль . . . . . . . . . . . . . . . 5 1. 1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . 5 1. 2. Среда Турбо-Паскаль . . . . . . . . . . . . . . . . . . . . . . . . 5 1. 3. Структура языка Турбо-Паскаль . . . . . . . . . . . . . . . . . . 8 1. 4. Типы переменных . . . . . . . . . . . . . . . . . . . . . . . . . 9 1. 5. Структура программы. . . . . . . . . . . . . . . . . . . . . . . . 13 1. 6. Операции и стандартные функции. . . . . . . . . . . . . . . . . . 14 1. 7. Операторы Турбо-Паскаля . . . . . . . . . . . . . . . . . . . . . 17 1. 7. 1. Операторы ввода/вывода данных . . . . . . . . . . . . . . . . 17 1. 7. 2. Оператор выбора. . . . . . . . . . . . . . . . . . . . . . . . . 21 1. 7. 3. Условный оператор. . . . . . . . . . . . . . . . . . . . . . . . 22 1. 7. 4. Оператор цикла с параметром. . . . . . . . . .. . . . . . . . 27 1. 7. 5. Операторы цикла с условием. . . . . . . . . . . . . . . . . . . 32 1. 7. 6. Операторы ограничения и прерывания цикла . . . . . . . . . . 35 1. 7. 7. Оператор перехода к метке. . . . . . . . . . . . . . . . . . . 36 1. 8. Блок - схемы алгоритмов. . . . . . . . . . . . . . . . . . . . . 37 1. 9. Составление диалоговых программ . . . . . . . . . . . . . . . . . 39 1. 10. Массивы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 40 1. 10. 1. Линейные массивы. . . . . . . . . . . . . . . . . . . . . . .. . . 40 1. 10. 2. Работа со элементами переменной строкового типа. . . . . .. . . 44 1. 10. 3. Двумерные массивы . . . . . . . . . . . . . . . . . . . . . .. . . 45 1. 10. 4. Создание баз данных с использованием массивов записей . . . . 48 1. 10. 5. Работа с большими массивами. . . . . . . . . . . . . . . . .. . . 49 1. 11. Текстовые файлы. . . . . . . . . . . . . . . . . . . . . . . . .. . . 50 1. 12. Разработка функций и процедур . . . . . . . . . . . . . . . . .. . . 55 1. 12. 1. Описание функций и процедур . . . . . . . . . . . . . . . . . . 55 1. 12. 2. Рекурсивные функции и процедуры. . . . . . . . . . . . . . . . 60 1. 13. Разработка модулей . . . . . . . . . . . . . . . . . . . . . . . . . 64 1. 14. Модуль CRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 1. 14. 1. Управление экраном в текстовом режиме. . . . . . . . . . . . . 67 1. 14. 2. Управление клавиатурой . . . . . . . . . . . . . . . . . . .. . . 68 1. 14. 3. Работа с символьными переменными. . . . . . . . . . . . . . . 73 1. 14. 4. Работа со строковыми переменными. . . . . . . . . . . . . . . . 76 1. 14. 5. Управление звуковыми сигналами. . . . . . . . . . . . . . . . . 77 1. 15. Модуль Graph. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 79 1. 15. 1. Инициализация графического режима. . . . . . . . . . . . . . 79 1. 15. 2. Простейшие графические процедуры и функции . . . . . . . . 80 1. 15. 3. Рисование геометрических фигур . . . . . . . . . . . . . . . . 88 1. 15. 3. 1. Построение заполненных фигур . . . . . . . . . . . . . . . 88 1. 15. 3. 2. Работа с линиями. . . . . . . . . . . . . . . . . . . . . . . 91 1. 15. 3. 3. Создание графических узоров. . . . . . . . . . . . . . . . . . . . 94 1. 15. 4. Работа с текстом в графическом режиме. . . . . . . . . . . . . . . . 102
Стр.
1. 15. 5. Мультипликация. . . . . . . . . . . . . . . . . . . . . . . . . 104 1. 15. 5. 1. Мультипликация с запоминанием части экрана. . . . . .. . . 104 1. 15. 5. 2. Мультипликация с чередованием видеостраниц. . . . . .. . . 107 1. 15. 5. 3. Мультипликация с управлением движения образа. . . . . . . 108 1. 15. 5. 4. Модификация контурного изображения. . . . . . . . . . . . 109
Глава 2. Программирование в среде Турбо-Паскаль. . . . . . . . .. 111 2. 1. Геометрические построения на плоскости. . . . . . . . . . . . . . 111 2. 1. 1. Построение графиков функций. . . . . . . . . . . . . . . . . . 111 2. 1. 2. Графическое решение уравнений. . . . . . . . . . . . . . . . . 118 2. 1. 3. Геометрические построения на плоскости . . . . . . . . . . . . 118 2. 1. 4. Построение касательных и нормалей к плоским кривым . . . . 119 2. 1. 5. Двумерные преобразования координат. . . . . . . . . . . . . . 121 2. 1. 6. Проецирование пространственного изображения тела на плоскость. . 126 2. 2. Некоторые задачи физики . . . . . . . . . . . . . . . . . . . . . . . . . 128 2. 2. 1. Механика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 2. 2. 2. Оптика и свет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 2. 2. 3. Электростатика и электромагнетизм. . . . . . . . . . . . . . . . . 138 2. 3. Математическое моделирование физических процессов . . . . . . . . 140 2. 4. Моделирование многовариантных задач с использованием графов. . 147 2. 5. Программы математических расчетов. . . . . . . . . . . . . . . . . 150 2. 5. 1. Численное решение уравнений. . . . . . . . . . . . . . . . . . . . 150 2. 5. 2. Аппроксимация по методу наименьших квадратов. . . . . . . . . 152 2. 5. 3. Численный расчет интегралов. . . . . . . . . . . . . . . . . 153 2. 5. 4. Сортировка одномерных массивов. . . . . . . . . . . . . . 156
Глава 1. Алгоритмический язык Турбо-Паскаль
1. 1. Общие сведения
Алгоритмический язык Паскаль разработан профессором Цюрихского технологического института Никлаусом Виртом в 1969-71 годах для обучения студентов структурному программированию. Идеи, заложенные в основу создания языка, позволили фирме Borland International значительно расширить алгоритмические средства языка, а удобный интерфейс (меню команд) и высокая скорость компиляции (процесса перевода текста программы в машинные коды) сделали язык Турбо-Паскаль (Turbo-Pascal) одним из самых распространенных среди начинающих и профессиональных программистов.
Процесс программирования начинается, как правило с составления алгоритма - последовательности операций, описывающих процесс решения задачи. Графическая запись алгоритма представляется в виде блок-схемы. Составление алгоритма заключается в логическом описании процесса решения задачи и требует знания элементов математической логики. Следует отметить, что программированию предшествует важнейший этап - постановка задачи. Постановка задачи может включать широкий спектр вопросов (разработка математических и физических моделей, вывод расчетных формул и т. п. ). Программист должен четко представлять явление или формулу, которые он алгоритмизирует.
Программирование заключается в записи алгоритма на языке программирования и отладке программы. Текст программы записывается в текстовом редакторе, затем программа компилируется - переводится транслятором (переводчиком) в машинные коды и запускается на выполнение. Процесс отладки программы начинается с выявления:
- синтаксических ошибок в тексте ( неверно записанных операторов ),
- ошибок при выполнении программы ( недопустимые математические действия, операции с числами, превосходящими предельные значения ),
- алгоритмических ошибок ( неверно составлен или запрограммирован алгоритм ),
и заканчивается, как правило написанием новой программы, поскольку каждый программист знает, что программу можно усовершенствовать до бесконечности, а отлаженную программу лучше не изменять.
