- •Долинер л.И., Данилина и.И., Пашкова р.Р., Емельянов д.А. Языки и системы программирования
- •Содержание
- •Теоретическая работа а. Что такое «программирование»
- •1. Что такое «программа» и как ее исполняет компьютер
- •2. Что такое “Среда программирования Turbo Pascal”
- •Вопросы для контроля
- •Лабораторная работа 1. Знакомство со средой turbo pascal
- •1. Как начать работу со средой Turbo Pascal
- •1.1. Структура каталогов среды Turbo Pascal
- •1.2. Запуск среды программирования Turbo Pascal
- •1.3. Структура экрана после запуска среды
- •1.4. Вход в меню
- •1.5. Среда Turbo Pascal как рабочий стол программиста
- •1.6. Работа со страницами
- •1.7. Компиляция и исполнение программ
- •2. Резюме
- •Вопросы для контроля
- •Лабораторная работа 2. Простейшие программы на языке pascal, или как это делается...
- •1. Структура программы на языке Pascal
- •2. Простейшие операторы
- •2.1. Резервирование памяти для работы
- •2.2. Запись данных в память, или оператор присваивания
- •2.3. Вывод данных на экран дисплея
- •2.4. Форматированный вывод информации
- •Теоретическая работа б. Введеhие в язык пpогpаммиpоваhия pascal
- •1. Алфавит языка
- •1.1. Символы, используемые в идентификаторах
- •1.2. Разделители
- •1.3. Специальные символы
- •1.4. Неиспользуемые символы
- •2. Структура программы
- •3. Типы данных
- •3.1. Целый тип
- •3.2. Вещественный тип
- •3.3. Символьный тип
- •3.4. Логический тип
- •3.5. Строковый тип данных
- •3.5. Пример описания данных
- •4. Команда присваивания
- •4.1. Операции
- •4.2. Стандартные функции
- •4.3. Запись выражений
- •5. Простейшие команды ввода и вывода информации
- •5.1. Вывод информации
- •5.2. Ввод информации
- •Вопросы для контроля
- •Лабораторная работа 3. Как организовать диалог
- •1. Команда ввода данных
- •2. Библиотека Crt
- •2.1. Определение цвета символов
- •2.2. Определение цвета фона
- •2.3. Очистка экрана
- •Вопросы для контроля
- •Лабораторная работа 4. Графика в языке pascal (первое знакомство)
- •1. Включение графического режима
- •2. Библиотека Graph
- •Задачи для самостоятельной работы. Линейные алгоритмы
- •Лабораторная работа 5. Операции с целыми и вещественными числами
- •Теоретическая работа в. Алгоритмические конструкции: условный оператор
- •4.1. Составной оператор
- •4.2. Условные операторы
- •4.2.1. Команда ветвления
- •5. Сложные условия
- •5.1. Что такое True и False
- •5.2. Логический тип данных
- •5.3. Сложные условия
- •6. Оператор выбора case
- •Лабораторная работа 6. Операторы ветвления и выбора
- •1. Что такое ветвление и как оно организуется в языке Pascal?
- •2. Условный оператор if
- •2.1. Теория
- •2.2. Практика
- •Контрольное задание
- •3. Оператор выбора case
- •3.1. Теория
- •3.2. Практика
- •Теоретическая работа г. Введение в систему типов языка pascal
- •1. Стандартные типы данных
- •2. Перечислимый тип
- •3. Ограниченный тип данных
- •4. Множества
- •5. Вопросы для самоконтроля
- •Теоретическая работа д. Циклы с параметром: быстрое начало
- •1. Когда используется цикл с параметром
- •2. Форма записи цикла с параметром
- •3. Вычисление сумм
- •4. Выборки
- •5. Максимумы и минимумы
- •Лабораторная работа 7. Циклы с параметром
- •Лабораторная работа 8. Как нарисовать забор
- •Лабораторная работа 9. Звездное небо и прочие странности
- •1. Получение случайного числа
- •2. Рисование точек в графическом режиме
- •Лабораторная работа 10. Проектирование программ и процедуры
- •1. Зачем нужна технология программирования
- •2. Знакомство с технологией проектирования “сверху вниз”
- •Решение Часть 1. Уточнение постановки задачи (эскиз)
- •Часть 2. Первый вариант решения
- •Часть 3. Уточнение решения
- •Часть 4. Уточнение решения
- •Часть 5. Уточнение решения
- •Часть 6. Уточнение решения
- •Это вам пригодится
- •Теоретическая работа е. Конструкции цикла в языке pascal
- •Оператор цикла с параметром
- •2. Цикл с предусловием while
- •3. Цикл с постусловием repeat
- •4. Вопросы для самоконтроля
- •Лабораторная работа 11. Разные конструкции цикла
- •1. Теория
- •1.1. Цикл со счетчиком (for)
- •1.2. Цикл с предусловием (while)
- •1.3. Цикл с постусловием (repeat)
- •2. Практика
- •Вопросы для контроля
- •Лабораторная работа 12. Как управлять движением на экране дисплея, или след слона
- •Теоретическая работа ж. Построение графиков функций
- •Лабораторная работа 13. Построение графиков функций
- •Лабораторная работа 14. Дополнительные возможности при работе с графикой
- •Теоретическая работа г. Динамические объекты: считывание картинок в память и вывод их на экран
- •Лабораторная работа 15. Как делается движущееся изображение
- •Теоретическая работа д. Использование страниц памяти для организации движения объектов по экрану
- •Как рисовать сложные картинки
- •Лабораторная работа 16. Мультипликация с использованием страниц видеопамяти
- •Лабораторная работа 17. Технология представления картинок в виде числового массива
- •Лабораторная работа 18. Движение объектов по многоцветному фону
- •1. Как вывести на экран картинку формата pcx
- •2. Технология движения объектов по многоцветному фону
- •Лабораторная работа 19. Мыши и модули
- •I. Как работать с мышью
- •1.1. Как работает манипулятор "мышь"
- •1.2. Начинаем программировать управление мышью
- •2. Модули
- •Implementation {начало раздела реализации}
- •Лабораторная работа 20. Работа со строковыми переменными
- •1. Теория
- •1.1. Описание строковых переменных
- •1.2. Сравнение строк
- •1.3. Операции со строками
- •2. Практика
- •Вопросы для контроля
- •Лабораторная работа 21. Работа с символьными переменными -1
- •Лабораторная работа 22. Работа с символьными переменными - 2
- •Лабораторная работа 23. Процедуры - 1
- •1. Теория
- •2. Практика
- •Лабораторная работа 24. Процедуры - 2
- •Лабораторная работа 25. Строковый редактор
- •1. Что такое «строковый редактор»
- •2. Зачем писать строковый редактор
- •3. Несколько вспомогательных задач
- •4. Постановка задачи на разработку
- •5. Необходимая информация для написания процедуры
- •6. Подсказка: алгоритм работы строкового редактора
- •Лабораторная работа 26. Поиск среднего и другие неожиданности
- •Лабораторная работа 27. Как работать с массивами: первые шаги
- •1. Теория
- •2. Практика
- •Вопросы для контроля
- •Лабораторная работа 28. Массивы и деловая графика
- •Теоретическая работа е. Строковые массивы. Алгоритмы поиска
- •Лабораторная работа 29. Строковые массивы. Алгоритмы поиска
- •Лабораторная работа 30. Нечисловые индексы в массиве
- •Теоретическая работа ж. Сортировка массивов
- •Лабораторная работа 31. Сортировка массивов
- •Лабораторная работа 32. Программа обслуживания конькобежных соревнований
- •Теоретическая работа з. Двумерные и многомерные массивы
- •Вопросы для контроля
- •Лабораторная работа 33. Шахматный турнир
- •Лабораторная работа 34. Подпрограммы - функции
- •1. Теория
- •2. Практика
- •Лабораторная работа 35. Работа с текстовыми файлами -1
- •1. Теория
- •1.1. Что такое текстовый файл
- •1.2. Принцип работы с текстовыми файлами
- •2. Практика
- •Лабораторная работа 36. Работа с текстовыми файлами - 2
- •Вопросы для контроля
- •Лабораторная работа 37. Работа с типизированными файлами - 1
- •1. Теория
- •2. Практика
- •Лабораторная работа 38. Работа с типизированными файлами - 2
- •1. Теория : тип данных «запись»
- •2. Практика
- •Лабораторная работа 39. Работа с типизированными файлами как с файлами прямого доступа
- •1. Теория
- •2. Практика
- •Лабораторная работа 40. Дополнительные возможности, или что можно еще натворить...
- •1. Что можно делать с файлами и каталогами
- •2. Процедуры и функции библиотеки dos
- •2.1. Работа с часами и календарем
- •2.2. Работа с каталогами и файлами
- •2.3. Типы и константы модуля dos для работы с файлами
- •3. Практика
- •Приложение 1 Зарезервированные слова Turbo Pascal
- •Приложение 2 Знаки пунктуации в языке Pascal
- •Приложение 3 Операции в языке Pascal
- •3.1. Арифметические операции
- •3.2. Логические операции
- •3.3. Операции отношения
- •Приложение 4 Стандартные функции языка Pascal
- •4.1. Арифметические функции
- •4.2.Функции преобразования типов
- •4.3. Функции для величин порядкового типа
- •Приложение 5 Команды pедактоpа сpеды Turbo Pascal 7.0
- •5.1. Команды перемещения курсора
- •5.2. Команды поиска фрагментов
- •5.3. Команды вставки и удаления информации
- •5.4. Команды работы с блоками информации
- •5.5. Клавиши быстрого управления средой Turbo Pascal 7.0
- •Список рекомендуемой литературы
2. Практика
Задание 1
Скопируйте в Ваш каталог файлы array_1.pas и array_2.pas из каталога PAS_TXT. Запустите среду Turbo Pascal.
Задание 2
Составить программу, в которой:
а) всем элементам массива присваивается заданное целое значение (количество элементов массива - не более 50);
б) всем элементам массива присваивается вводимый текст;
в) каждому элементу массива с нечетным индексом присваивается его номер, а элементу с нечетным индексом - его номер с противоположным знаком;
г) элементам массива, стоящим на четных местах, присваивается символ "@" , на нечетных местах - "#".
д) каждому элементу, стоящему на 1-м, 4-м, 7-м и т.д. местах, присваиваться число 0, остальным - число 3, и все элементы массива выводятся на экран дисплея.
Задание 3
Загрузите в новое окно программу из файла array_1.pas. Эта программа позволяет ввести последовательность из 15 чисел и вывести их в обратном порядке. Разберитесь в том, как работает эта программа. Выполните задание, написанное в конце программы (после END.)
Задание 4
Модифицируйте программу из файла array_1.pas так, чтобы сначала печатались в строчку все положительные числа, а в следующей строке - все отрицательные.
Задание 5
Загрузите файл array_2.pas. Модифицируйте программу, размещенную в этом файле, так, чтобы она запрашивала не только массы, но и названия компонентов и печатала их в рецепте. Имейте в виду, что элементами массива могут быть переменные любого типа, в том числе и строковые. Для этой программы Вам потребуется два массива - один, как и прежде, числовой (Real) для хранения масс, а другой строковый (String[...]) - для хранения названий.
Задание 6
Напишите программу для вычисления дисперсии (и обязательно сохраните - она нам еще понадобится!).
Задание 7*
Напишите программу, которая вводит фамилию и возраст посетителей поликлиники, а по окончании ввода печатает отдельные списки больных до 18 лет, от 18 до 50 лет и старше 50 лет.
Подсказка
По-видимому, в этой задаче Вам понадобится один массив для хранения возраста, а еще один - для хранения фамилий...
Задание 8
Выйдите из среды Turbo Pascal. Удалите все файлы с расширением .bak, а также файлы array_1.pas и array_2.pas.
Вопросы для контроля
Что такое массив? В каких случаях необходимо использовать массивы?
Что такое размерность массива?
Что такое элемент массива? Индекс массива?
Какие типы данных могут использоваться в качестве индексов для массивов?
Как ввести массив чисел?
Постройте правильные объявления на Паскале для девяти массивов (если это можно) по их словесным описаниям:
а) массив, содержащий десять строк с максимальной длиной 15, пронумерованных числами от 1 до 10;
б) массив из 19 вещественных чисел;
в) ряд целых чисел, пронумерованных от 1950 до 1992;
г) ряд целых чисел, пронумерованных от -6 до 4;
д) целочисленный ряд, индексами которого служат буквы от а до f.
Дан массив, описанный следующим образом:
var a : array[1..6] of integer;
i,j,q : integer;
В массив записаны следующие данные:
-
1
7
2
-1
3
0
4
4
5
15
6
3
Укажите, какими станут эти значения после выполнения каждого из приведенных ниже фрагментов программ:
а) |
q:=a[4]+a[1]; a[5]:=q; |
г) |
i:=2; j:=i+3; a[i]:=a[j]+a[j+1]; |
б) |
a[4]:=a[2]+a[2+1]; a[1]:=a[7-1]+a[7-2]; |
д) |
for i:= to 5 do a[i]:=a[i+1]; |
в) |
j:=4; a[3]:=a[j]+a[j-1]; a[2]:=a[j+1]; |
е) |
j:=1; a[5]:=a[j]+1+a[j+1]. |
Определить значение массива b после выполнения каждого из следующих фрагментов:
Type week=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, Sum);
var b : array [week] of integer;
day : week;
a) for day:= Monday to do Sunday b[day]:=0;
б) b[Monday]:=1;
for day:= Monday to Friday do
b[succ(day)]:=b[day]*2;
в) b[Sum]:=0;
for day:= Monday to do Sunday do
begin
b[day]:=ord(day);
b[Sum]:=b[Sum]+b[day]
end;
г) b[сумма]:=946;
for day:= Friday downto Monday do
b[day]:=b[Sum]-10.
Приведенная ниже программа WINDING, обрабатывая показанные здесь данные, завершилась аварийно. Объясните, почему. Объясните, как можно избежать ошибки:
Данные: 5 111 32 27 87
Program WINDING;
var numb : array[1..4] of integer;
i,n : integer;
begin
read(n); for i:=1 to n do
read(numb[i]); . . .
end.
Дан массив а, описанный следующим образом:
var a : array ['a'..'d'] of real;
i : char;
Выберите, какой из предложенных фрагментов обеспечит ввод данных в массив:
а) read(a);
б) for i:='a' to 'd' do read(a[i]);
в) read(a['a'..'d']);
г) for i:='a' to 'd' do readln(a[i]);
Выберите, как будут представлены данные на входе для выбранного Вами фрагмента:
а) 10,20,30,40 д) 10
б) 10 20 30 40 20
в) 10;20;30;40 30
г) 10203040 40
Какие из следующих задач нужно решать с использованием массивов (под "нужно решать" будем понимать ситуацию, при которой решение задачи существенно упрощается):
а) определить сумму числовой последовательности;
б) определить максимальное из заданных чисел;
в) определить среднее арифметическое элементов данной последовательности;
г) определить, сколько элементов последовательности больше среднего значения данной последовательности;
д) упорядочить числовую последовательность;
е) упорядочить фамилии по алфавиту.
Какая максимальная размерность (т.е. максимальное количество индексов) массива допустима в языке Pascal?
Каково максимально допустимое количество элементов в массиве? Чем оно определяется?