Лабораторные работы по языку программирования Python
СОДЕРЖАНИЕ
ЛАБОРАТОРНАЯ (ПРАКТИЧЕСКАЯ) РАБОТА №1.
ВВЕДЕНИЕ В PYTHON
Напишите программу для решения примера (по вариантам). Предусмотрите проверку деления на ноль. Все необходимые переменные пользователь вводит через консоль. Запись |пример| означает «взять по модулю», т.е. если значение получится отрицательным, необходимо сменить знак с минуса на плюс.
Дан произвольный список, содержащий и строки и числа. Вариант 1. Выведите все четные элементы построчно. Вариант 2. Выведите все нечетные элементы построчно. Вариант 3. Выведите все четные элементы в одной строке. Вариант 4. Выведите все нечетные элементы в одной строке.
Дан произвольный список, содержащий только числа.
Вариант 1. Выведите результат сложения всех чисел больше 10. Вариант 2. Выведите результат сложения всех чисел от 1 до 10. Вариант 3. Выведите результат умножения всех чисел меньше 10. Вариант 4. Выведите результат умножения всех чисел меньше 10.
Дан произвольный список, содержащий только числа. Вариант 1. Выведите максимальное число. Вариант 2. Выведите минимальное число.
Вариант 3. Выведите среднее арифметическое (сумма всех чисел, деленная на количество элементов).
Вариант 4. Выведите число, находящееся посередине массива.
Методические рекомендации к выполнению работы
Перед выполнением заданий, ознакомьтесь с теоретическими материалами по дисциплине. В заданиях, предусмотренных по вариантам, вариант выбирается согласно номеру в журнале:
Критерии оценки знаний
Оценка 5 ставится, если безошибочно выполнены все 4 задания. Оценка 4 ставится, если безошибочно выполнены 3 задания. Оценка 3 ставится, если безошибочно выполнены 2 задания. Оценка 2 ставится, если выполнено 1 задание. Если студент не смог выполнить ни одного задания, ставится 0 баллов.
Если студент не успел выполнить задания на лабораторной (практической) работе, он может выполнить их дома и принести на следующее занятие. В этом случае оценка снижаться на 1 балл, т.е. если студент выполнил 4 задания – 4 балла, выполнил 3 задания – 3 балла,
выполнил 2 задания – 2 балла, выполнил 1 задание – 1 балл.
ЛАБОРАТОРНАЯ (ПРАКТИЧЕСКАЯ) РАБОТА №2.
Пусть задано некоторое число my_number. Пользователь вводит с клавиатуры свое число user_number.
Вариант 1. Запрашивайте у пользователя вводить число user_number до тех пор, пока оно не будет меньше my_number.
Вариант 2. Запрашивайте у пользователя вводить число user_number до тех пор, пока оно не будет равно my_number.
Вариант 3. Запрашивайте у пользователя вводить число user_number если оно равно my_number.
Вариант 4. Запрашивайте у пользователя вводить число user_number до тех пор, пока оно не будет больше my_number.
Пусть задан список, содержащий строки.
Вариант 1. Выведите построчно все строки размером от 5 до 10 символов.
Вариант 2. Выведите построчно все строки размером менее 10 символов.
Вариант 3. Выведите все строки, заканчивающиеся буковой r. Вариант 4. Выведите все строки, начинающиеся с буквы r.
Сгенерируйте и выведите:
Вариант 1. Случайную строку, состоящую из 5 символов, содержащую только заглавные буквы русского алфавита.
Вариант 2. Строку размером N символов (N вводится с клавиатуры) и состоящую из букв R.
Вариант 3. Случайную строку размером 6 символов, содержащую только цифры. Строка должна содержать хотя бы одну цифру 3.
Вариант 4. Случайную строку, состоящую из 8 символов и содержащую цифры и буквы. Строка должна содержать хотя бы одну цифру.
Вариант 1. На основе данной строки сформируйте новую, содержащую только цифры. Выведите новую строку.
Вариант 2. На основе данной строки сформируйте новую, содержащую только буквы. Выведите новую строку.
Вариант 3. На основе данной строки сформируйте новую, содержащую только буквы Л. Выведите новую строку.
Вариант 4. На основе данной строки сформируйте две новые. Первая строка содержит только цифры, вторая — только буквы. Выведите новые строки построчно.
Методические рекомендации к выполнению работы
Перед выполнением заданий, ознакомьтесь с теоретическими материалами по дисциплине.
Для генерации случайного числа нужно импортировать специальную библиотеку random (она входит в стандартный пакет языка Python). И затем использовать одну из функций этой библиотеки. Например:
printrandom.randint(1,10) #число в диапазоне от 1 до 10
Для просмотра информации о модуле, библиотеке или классе, используйте специальную функцию help(имя_модуля). Например: help(random)
Функция вычисления длины списка или строки (сколько элементов в списке или сколько символов в строке): len(строка).
В заданиях, предусмотренных по вариантам, вариант выбирается согласно номеру в журнале:
Критерии оценки знаний
Оценка 5 ставится, если безошибочно выполнены все 4 задания. Оценка 4 ставится, если безошибочно выполнены 3 задания. Оценка 3 ставится, если безошибочно выполнены 2 задания. Оценка 2 ставится, если выполнено 1 задание. Если студент не смог выполнить ни одного задания, ставится 0 баллов.
Если студент не успел выполнить задания на лабораторной (практической) работе, он может выполнить их дома и принести на следующее занятие. В этом случае оценка снижаться на 1 балл, т.е. если студент выполнил 4 задания – 4 балла, выполнил 3 задания – 3 балла,
выполнил 2 задания – 2 балла, выполнил 1 задание – 1 балл.
ЛАБОРАТОРНАЯ (ПРАКТИЧЕСКАЯ) РАБОТА №3.
Пусть дана строка, состоящая из слов, пробелов и знаков препинания. На основании этой строки создайте новую (и выведите ее на консоль):
Вариант 1. Содержащую только слова больше 5 символов.
Разделитель слов в строке — пробел.
Вариант 2. Содержащую только слова, в которых первые две буквы — «Ли».
Вариант 3. Содержащую только слова размером от 5 до 10 символов.
Вариант 4. Содержащую только слова, в которых две последние буквы — «ов».
Пусть дана строковая переменная, содержащая информацию о студентах: my_string = «Ф;И;О;Возраст;Категория;_Иванов;Иван;Иванович;23 года;Студент 3 курса;_Петров;Семен;Игоревич;22 года;Студент 2 курса».
Вариант 1. Выведите информацию в виде:
Иванов Иван Иванович
Петров Семен Игоревич
Вариант 2. Выведите информацию в виде:
Иванов Иван Иванович
Петров Семен Игоревич
Вариант 3. Выведите информацию в виде:
Студент 3 курса, 23 года
Студент 2 курса, 22 года
Вариант 4. Выведите информацию в виде: ФИО О студенте
Иванов Иван Иванович Студент 3 курса, 23 года Петров Семен Игоревич Студент 2 курса, 22 года
Пусть дана строковая переменная, содержащая информацию о студентах вида: my_string = «ФИО;Возраст;Категория;_Иванов Иван Иванович;23 года;Студент 3 курса;_Петров Семен Игоревич;22 года;Студент 2 курса;_Иванов Семен Игоревич;22 года;Студент 2 курса;_Акибов Ярослав Наумович;23 года;Студент 3 курса;_Борков Станислав Максимович;21 год;Студент 1 курса;_Петров Семен Семенович;21 год;Студент 1 курса;_Романов Станислав Андреевич;23 года;Студент 3 курса;_Петров Всеволод Борисович;21 год;Студент 2 курса».
Вариант 1. Выведите построчно информацию о студентах, чья фамилия — «Петров».
Вариант 2. Выведите построчно информацию о студентах, чей возраст — «21 год».
Вариант 3. Выведите построчно информацию о студентах, чей возраст больше «21 года».
Вариант 4. Выведите построчно информацию о студентах, чьи фамилии начинаются на букву «А» или «Б».
Пусть дана строка произвольной длины. Выведите информацию о том, сколько в ней символов и сколько слов.
Методические рекомендации к выполнению работы
Перед выполнением заданий, ознакомьтесь с теоретическими материалами по дисциплине.
В заданиях, предусмотренных по вариантам, вариант выбирается согласно номеру в журнале:
Основы программирования. Лабораторные работы
ЛР №1. «Непосредственный режим работы»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
5. Отчитайте работу преподавателю.
Основные сведения
Первая версия языка Паскаль была разработана в 1968 году. Ее разработчиком является швейцарский ученый Никлаус Вирт. Свое название язык получил в честь создателя первой механической вычислительной машины француза Блеза Паскаля. На основе языка Паскаль в 1985 г. фирма Borland выпустила версию Turbo Pascal версии 3.0. С этого времени язык Паскаль используется во всем мире в учебных заведениях в качестве первого изучаемого языка программирования.
Структура программы на Паскале. По определению стандартного Паскаля программа состоит из заголовка программы и тела программы (блока), за которым следует точка — признак концапрограммы. В свою очередь, блок содержит разделы описаний ираздел операторов.
Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и нвсе обязательно присутствуют в каждой программе.
Примеры программ. Уже было сказано, что Паскаль разрабатывался Н. Виртом как учебный язык. Основной принцип, заложенный в нем, — это поддержка структурной методики программирования. Этот же принцип лежит в основе псевдокода, который мы здесь называем Алгоритмическим языком (АЯ). По сути дела, расхождение между АЯ и Паскалем заключается в следующем: АЯ — русскоязычный, Паскаль — англоязычный; синтаксис Паскаля определен строго и однозначно в отличие от сравнительно свободного синтаксиса АЯ.
Запись программы на Паскале похожа на английский перевод алгоритма, записанного на Алгоритмическом языке. Сравните алгоритм деления простых дробей, записанный на АЯ с соответствующей программой на Паскале.
Здесь использовано следующее равенство:
Задание на лабораторную работу
Ввести и отладить программу, приведенную выше, ответить на вопросы
Контрольные вопросы:
6. Список горячих клавиш
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
5. Отчитайте работу преподавателю.
ЛР №2 «Линейные программы»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
5. Отчитайте работу преподавателю.
Основные сведения
Необходимо строгое соблюдение правил правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации. Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, после каждого оператора. Перед словом End точку с запятой можно не ставить. Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин.
Строгий синтаксис в языке программирования необходим прежде всего для транслятора. Транслятор — это программа, которая исполняется формально. Если, допустим, разделителем в списке перемен- ных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то транслятор в качестве оператора воспринимает всю часть текста программы от одной точки с запятой до другой. Если вы забыли поставить этот знак между какими-то двумя операторами, то транслятор будет принимать их за один, что неизбежно приведет к ошибке.
Основное назначение синтаксических правил — придать однозначный смысл языковым конструкциям. Если какая-то конструкция может трактоваться двусмысленно, значит, в ней обязательно содержится ошибка. Лучше не полагаться на интуицию, а выучить правила языка. В Паскале нет специальных слов для обозначения начала цикла (нц) и конца цикла (кц). На
все случаи есть универсальные слова Begin и End.
Характерной чертой данной программы является использование в тексте комментариев. Комментарий — это любая последовательность символов, заключенных в фигурные скобки <. >. Можно употреблять также следующие ограничители комментариев (*. *). Комментарий не определяет никаких действий программы и является лишь пояснительным текстом. Он может присутствовать в любом месте программы, где можно поставить пробел. Программист пишет комментарии не для компьютера, а для себя.
Комментарий придает тексту программы большую ясность. Хорошо откомментированные программы называют самодокументированными. Во многих подобных программах объем комментариев превышает объем вычислительных операторов.
Удачное использование комментариев — признак хорошего стиля
программирования.Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту ра
боту, на компьютере должны быть специальные средства программного обеспечения.
Задача № 1. Решить квадратное уравнение
Формулировка. Даны вещественные числа a, b и c, причем a отлично от 0. Решить квадратное уравнение ax 2 + bx + c = 0 или сообщить о том, что действительных решений нет.
Задача № 2. Вычислить значение функции Y(x)=e x +sin(x), при x=1.2
Задача№ 3 Записать область, изображенную на рисунке, математическим выражением. Проверить, принадлежит ли этой области точка с заданными координатами.
Координаты исследуемой точки (0,5; 1,5);
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №3 «Составление программ с DATA–READ»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
5. Отчитайте работу преподавателю.
Основные сведения:
Оператор ввода – read, readln. Оператор read при чтении данных с консоли используется крайне редко, в основном используется оператор readln. Параметры оператора – только переменные и только стандартных типов, возможно использование оператора вообще без аргументов для создания ситуации ожидания нажатия клавиши Enter. По оператору readln программа приостанавливает свою работу, ожидая ввода данных от пользователя. Пользователь набирает желаемые значения переменных, разделяя их пробелами (или Enter) и нажимает Enter. Оператор интерпретирует введенные символы, переводя их во внутреннее (машинное) представление соответствующих переменных. Если это не удается (например, вместо целого числа введены буквы), программа аварийно завершает свою работу.
Для того чтобы пользователь знал что «хочет» ввести программа, полезно перед оператором readln выводить подсказку с помощью оператора write или writeln.
write(‘Введите количество учеников в классе ‘); readln(n);
Обратите внимание на пробел перед вторым апострофом. Он сделан для того, чтобы ввод пользователя отделялся от подсказки.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №4 «Переходы и ветви»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
5. Отчитайте работу преподавателю.
Задача №1 Проверить, являются ли два натуральных числа дружественными
Формулировка. Даны два натуральных числа. Проверить, являются ли они дружественными.
Примечание: дружественными числами называются два различных натуральных числа, для которых сумма всех собственных делителей первого числа равна второму числу и сумма всех собственных делителей второго числа равна первому числу.
Например, 220 и 284 – пара дружественных чисел, потому что:
Сумма собственных делителей 220: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Сумма собственных делителей 284: 1 + 2 + 4 + 71 + 142 = 220
Формулировка. Даны два натуральных числа. Найти их наибольший общий делитель.
Примечание: наибольшим общим делителем (сокращенно пишут НОД) двух натуральных чисел m и n называется наибольший из их общих делителей. Обозначение: НОД(m, n).
Примечание 2: общим делителем двух натуральных чисел называется натуральное число, на которое натуральное число, которое является делителем обоих этих чисел.
Например, найдем НОД(12, 8):
Выпишем все делители числа 12: 1, 2, 3, 4, 6, 12;
Выпишем все делители числа 8: 1, 2, 4, 8;
Выпишем все общие делители чисел 12 и 8: 1, 2, 4. Из них наибольшее число – 4. Это и
Задача № 3 Вычислить значение функции Y для любого, заданного пользователем, значения аргумента X
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР№5 «Двойные и тройные ветви»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Основные сведения
В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления 

лять умножением в цикле;
• если у — вещественное значение, то используется следующая
математическая формула:
Задача № 1. Найти наименьшее общее кратное двух натуральных чисел
Формулировка. Даны два натуральных числа. Найти их наименьшее общее кратное.
Примечание: наименьшим общим кратным двух чисел m и n называется наименьшее натуральное число, которое делится на m и n. Обозначение: НОК(m, n)
Задача № 2. Вычислить x n
Формулировка. Даны натуральные числа x и n (которое также может быть равно 0). Вычислить x n .
Задача № 3. Даны три действительных числа. Возвести в квадрат неотрицательные из этих чисел и в четвёртую степень – отрицательные.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР№6 «Простые и арифметические циклы»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Основные сведения
Бинарные арифметические операции стандартного Паскаля описаны в табл. 3.3. В ней / обозначает целые типы, R — вещественные типы.
К арифметическим величинам могут быть применены стандар
тные функции Паскаля. Структура обращения к функции пред
Функция выступает как операнд в выражении. Например, в следующем операторе присваивания
операндами являются три функции: sin, In, cos. Их запись такая же,
как в математике. Аргументы называются фактическими параметрами и являются в общем случае выражениями арифметического
типа. Аргументы записываются в круглых скобках. Результат вычисления функции — величина соответствующего типа.
Табл. 3.4 содержит описания математических стандартных функций Турбо Паскаля. 
1. Все символы пишутся в строчку на одном уровне. Проставляются все знаки операций (нельзя пропускать знак умножения).
3. Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:
• унарная операция смены знака (-);
4. Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.
5. Часть выражения, заключенная в скобки, вычисляется в первую очередь. (Например, (А+В) * (С—D) — умножение производится после сложения и вычитания.)
Не следует записывать выражений, не имеющих математического смысла. Например, деление на нуль, логарифм отрицательного числа и т. п.
Задача № 1. Для следующей формулы записать соответствующие арифме
тические выражения на Паскале:
Задача № 2. Определить результат гадания на ромашке: любит — не любит, взяв за исходное заданное число лепестков л.
Задача № 3. Проанализировать возраст человека, чтобы отнести к одной из четырех групп: дошкольник, ученик, работник, пенсионер. Возраст вводится с клавиатуры.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №7 «Сложные циклические структуры»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1. Решить следующую систему линейных уравнений:
Задача № 2. Получить каноническое разложение числа на простые сомножители
Формулировка. Дано натуральное число n (n > 1). Получить его каноническое разложение на простые сомножители, то есть представить в виде произведения простых сомножителей. При этом в разложении допустимо указывать множитель 1. Например, 264 = 2 * 2 * 2 * 3 * 11 (программе допустимо выдать ответ 264 = 1 * 2 * 2 * 2 * 3 * 11).
Решение. Данная задача имеет достаточно красивое решение.
Из основной теоремы арифметики известно, что для любого натурального числа больше 1 существует его каноническое разложение на простые сомножители, причем это разложение единственно с точностью до порядка следования множителей. То есть, например, 12 = 2 * 2 * 2 и 12 = 3 * 2 * 2 – это одинаковые разложения.
Задача № 3. Проверить монотонность последовательности цифр числа
Формулировка. Дано натуральное число n. Проверить, представляют его ли цифры его восьмеричной записи строго монотонную последовательность. При этом последовательность из одной цифры считать строго монотонной.
Решение. Здесь нам нужно будет последовательно получить разряды восьмеричной записи числа, двигаясь по записи числа справа налево. Как мы уже знаем, последний разряд числа в восьмеричной системе счисления есть остаток от деления этого числа на 8.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №8 «Циклы с параметрами»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1. Решить квадратное уравнение заданного вида с параметром
Формулировка. Дано натуральное число n. Вывести на экран решения всех квадратных уравнений вида x 2 + 2ax – 3 = 0 для всех a от 1 до n.
Задача № 2. Вычислить факториал
Формулировка. Дано натуральное число n (которое также может быть равно нулю). Вычислить n!
Примечание: n! (факториал числа n, читается «эн факториал») – произведение всех натуральных чисел до n включительно.
Задача № 3. Вычислить число сочетаний из n по k
Формулировка. Даны натуральные числа n и k (k не превышает n). Вычислить число сочетаний из n по k.
Например, найдем все 2-элементные сочетания 3-элементного множества <1, 2, 3>. Таковыми являются <1, 2>, <1, 3>и <2, 3>. То есть, таковых сочетаний 3. При этом, например, <1, 2>и <2, 1>– одинаковые сочетания, так как они отличаются только порядком следования элементов.
Решение. Из комбинаторики известна формула:
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №9 «Решение задач»
Функции, определяемые пользователем, в языках Си и Си++
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Основные сведения
Задача № 1.
Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равными этим числам. Если можно, ответить на вопрос, является ли он остроугольным
Задача № 2.
Даны координаты вершин прямоугольника: (х1г уj), (х2, у2), (х3, уз) г (х4г у4). Определить площадь части прямоугольника, расположенной в I координатной четверти.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №10 «Использование подпрограмм в задачах»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1. Составить программу нахождения наибольшего значения из трех величин — max (я, Ь, с). Для ее решения можно использовать вспомогательный алгоритм нахождения максимального значения из двух, поскольку справедливо
равенство: max (a, b, с) = max (max (A, b), с).
Задача № 2. Составить программу на Паскале для вычисления наибольшего общего делителя для суммы, разности и произведения двух чисел..
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №11-12 «Линейные массивы»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Общие сведения:
Массивы имеют прямые аналоги в математике в виде векторов для одномерных массивов или матриц для двумерных массивов. Использование массивов становится актуальным в программе, когда есть необходимость единообразной обработки больших объемов однотипной информации (совокупность измерений в ходе эксперимента, данные об однородных характеристиках некоторых объектов предметной области, сами наборы объектов предметной области). Использование массивов для информации такого типа позволяет циклически повторять одни и те же процедуры для разных элементов, параметризуя цикл лишь индексом очередного обрабатываемого элемента.
Рассмотрим, как определяется самый массив в языке Си в самом простом – статическом одномерном – случае. Определение подобного массива выглядит следующим образом:
класс_памяти тип имя_массива [константное_выражение]
Тип задает тип элементов объявляемого массива. Элементами массива не могут быть функции (но могут быть указатели на них) и элементы типа void.
Имя_массива – идентификатор, под которым массив будет доступен в программе.
Константное_выражение в квадратных скобках задает количество элементов массива.
Инициализатор позволяет присвоить начальные значения элементам массива еще на этапе определения (необязательная часть определения).
Класс_памяти определяет, к какому классу памяти будет относиться массив (необязательная часть определения). Для массивов допустимыми являются все классы памяти, кроме регистрового.
Примеры определения массивов в программе:
int sample [I0]; //определяем массив из 5-ти целых чисел
static float mas[5]; //определяем статический массив из 5-ти вещественных
extern int m[];//описываем массив m, определенный в другом месте программы
double array[N*2]; //задаем размер массива через именованную константу
int sample [Nmax] //задаем размер массива через макроимя
Определение массива резервирует в памяти непрерывный блок размером количество_элементов_массива*размер_элемента_в байтах. Каждый элемент массива доступен под своим индексом. Важной особенностью языков Си и Си++ является индексирование элементов массива с 0. На рис.1 изображен снимок памяти для массива целых чисел из 5-ти элементов. Стрелкой показано направление возрастание адресов.
Рис.1. Одномерный массив из пяти целых чисел в памяти.
Принципиальным моментом определения массива с использованием приведенного выше синтаксиса является необходимость задать размер массива константой. Это означает, что количество элементов, под которое резервируется место в массиве, должно быть задано еще на этапе компиляции. Массивы, определенные таким способом, носят название статических. Ошибочным будет такое определение массива:
int mas[N]; //ошибка, размер массива задается не константой
Если количество элементов N, объединяемых в массив, заранее неизвестно, то придется либо определять массив заведомо большего размера, а использовать только первые N элементов (этот вариант неэффективно расходует память), либо использовать динамические массивы, на которые требование о предопределенности размера не распространяется (динамические массивы будут рассмотрены ниже в настоящих методических указаниях).
При объявлении массива константное_выражение может быть опущено в случаях, если:
— при определении массив явно инициализируется,
— массив объявлен как формальный параметр функции,
— имеет место описание массива, явно определенного в другом месте программы (ниже по тексту текущего модуля или в другом модуле).
Инициализация массива выглядит следующим образом:
Таким образом, в инициализаторе через запятую перечисляются выражения, которые будут присвоены в порядке очередности соответствующим элементам массива. Как уже отмечалось, при явной инициализации допускается не указывать размер массива, количество элементов будет определено по количеству выражений в инициализаторе:
int mas[]=<1, 2, 3, 4>; //выделяем память под 4 элемента
Размер массива в таком случае всегда можно определить, разделив размер всего массива на размер одного элемента:
int mas[5]=<1, 2, 3>; //последние два элемента не получат значения
int mas2[6]=<1, 2, 3, 4, 5, 6>; //ошибка, слишком длинный инициализатор
Обращение к элементам массива осуществляется с помощью индексированного имени. Обращение к элементу массива должно иметь вид:
Значение этого выражения равно элементу массива с индексом, равным выражению в скобках. Как уже отмечалось, первый по порядку элемент массива получает индекс 0. Таким образом, для массива mas из n элементов можно обращаться к элементам от mas[0] до mas[n-1]. Необходимо отметить, что программа не отслеживает корректность используемых при обращении к массиву индексов, поэтому если программист будет использовать некорректные значения индексов (отрицательные или большие чем n-1), то это приведет к обращению к ячейкам памяти, располагающихся перед или после массива и может нарушить целостность других объектов программы.
Выражение обращения к элементу массива является леводопустимым (если только сам массив не объявлен как константный). Поэтому выражение обращения к элементам массива можно использовать не только для получения их значения, но для изменения:
При работе с массивами в программе характерны циклы перебора всех (или какой-то части) элементов массива. Вот как, например, можно присвоить всем элементам массива случайные числа:
//в переменной Sum будет накапливать сумму
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №18- 20 «Операции с символьными переменными»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Задача № 2.
Задача № 3
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №21 «Решение математических задач»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1. Дано натуральное число п. Найти сумму первой и последней цифр этого числа.
Задача № 2.
Дано натуральное число п и пробела будет разворачиваться подсвеченный пункт в подменю или, если пункт находится на нижнем уровне, клавиша будет сворачивать подменю. Нажатием клавиши работа программы должна заканчиваться
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №31 «Объявление и создание экземпляров класса»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть при этом возможность раздельного изменения составных частей адреса, создания и уничтожения объектов этого класса.
Задача № 2.
Построить систему классов для описания плоских геометрических фигур: крута, квадрата, прямоугольника. Предусмотреть при этом методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №32 «Создание наследованного класса»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1. Создать новый объект TNeatMenu — «наследника» TMenu, который в отличие от своего «предка» будет восстанавливать вид экрана. Для этого следует добавить новое поле Store, где будет храниться прежний экран во время действия нового меню, перекрыть метод Init и добавить метод Done, восстанавливающий состояние экрана.
Задача № 2.
Составить описание класса для работы с цепными списками строк (строками произвольной длины). Обеспечить при этом выполнение операций включения в список, удаления из списка элемента с заданным значением, удаления всего списка или конца списка, начиная с указанного элемента.
Задача № 3.
Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть при этом возможность перемещения прямоугольников на плоскости, изменения их размеров, построения наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №33 «Использование кнопочных компонентов»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Определить объект TFish — аквариумная рыбка, имеющий координаты, скорость, размер, цвет и направление движения. Методами этого объекта являются:
Init — устанавливает значения полей объекта и рисует рыбку на экране методом Draw;
Draw — рисует рыбку в виде уголка с острием в точке Coord, направленным по ходу ее движения;
Look — проверяет несколько точек на линии движения рыбки, и если хотя бы одна из них отличается по цвету от воды, возвращает ей цвет и указывает расстояние до рыбки;
Run — перемещает рыбку в текущем направлении на расстояние, зависящее от ее текущей скорости. Иногда случайным образом изменяет направление движения рыбки. Если же на пути рыбки возникает препятствие, направление движения изменяется до тех пор, пока препятствие не исчезнет из ее поля зрения.
ЛР №34 «Компоненты для работы с текстом»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Составить программу обработки двунаправленных связанных списков. (Связанный список данных состоит из указателей на его начало и конец, а каждый элемент такого списка представляет собой реализацию отдельного объекта.) При этом обеспечить возможность следующих операций:
создание связанного списка (выделение для него памяти);
уничтожение связанного списка (освобождение используемой памяти);
инициализация связанного списка;
деинициализация связанного списка;
вставка элемента в середину связанного списка перед существующим элементом;
присоединение элемента к концу связанного списка;
удаление элемента из связанного списка;
возвращение первого элемента связанного списка;
возвращение последнего элемента связанного списка
ЛР №35 «Компоненты ввода и отображения чисел»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Составить описание объектного типа TMatr, обеспечивающего размещение матрицы произвольного размера, предусмотрев при этом возможность изменения числа строк и столбцов, а также вывода на экран подматрицы любого размера и всей матрицы.
Задача № 2.
Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть при этом методы вычисления значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта- многочлена, печать (вывод на экран) описания многочлена
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №36 «Компоненты диалогов и систем меню»
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Создать структуру с именем Marshrut с полями: название начального, конечного пунктов, длина маршрута. Сформировать односвязный список. Затем напечатать этот список в отсортированном по выбранному полю порядке. Затем удалить из списка информацию о тех маршрутах, которые заканчиваются в заданном пункте. И снова напечатать список.
Задача № 2.
Описать структуру с именем WORKER, с полями: фамилия, имя, должность, год поступления на работу. Сформировать односвязный список. Реализовать возможность просмотра списка, удаления элемента по фамилии, вставки нового элемента в произвольное место списка.
Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
Отчитайте работу преподавателю.
ЛР №37 «Разработка оконного приложения».
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами в настоящих указаниях и конспектах лекций.
2. Получите задание у преподавателя.
3. Сделайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
4. Составьте отчет по лабораторной работе.
Задача № 1.
Составить анкету для студентов включающую в себя следующие вопросы:
На каком факультете вы учитесь?
В какой группе вы учитесь?
Нравится ли вам учиться?
Результат содержащий всю информацию, полученную при анкетировании, должен быть представлен сразу.
Задача № 2.
Вычислить доход по вкладу. Программа должна обеспечивать расчет простых и сложных процентов. (Простые проценты начисляются в конце срока вклада. Сложные проценты начисляются ежемесячно, прибавляются к первоначальной сумме вклада и в следующем месяце проценты начисляются на новую сумму.)
делайте скриншоты (кнопка клавиатуры PrtSc) выполненных заданий в текстовом (Word) файле Фамилия_ЛР
Составьте отчет по лабораторной работе.
ABC PASCAL
Редактор
Горячие клавиши
Окно вывода
Окно ввода
Запуск и остановка программы
Пошаговое выполнение программы
Окно отладки
Del или воспользоваться командой контекстного меню окна отладки.
Структура программы
Программа на языке Pascal ABC имеет следующий вид:
program имя программы; раздел подключения модулей раздел описаний begin операторы end.
Идентификаторы и служебные слова
Служебные слова служат для оформления конструкций языка и не могут быть использованы в качестве имен. Список всех служебных слов языка Pascal ABC приведен ниже:
and array as begin break case class const constructor continue destructor div do downto else end exit external external sync file finalization for forward function if in inherited initialization is mod not of or private procedure program property protected public record repeat set shl shr sizeof string then to type unit until uses var while with xor
Целочисленные вычисления на языке Pascal
Program Prog1; var a, b : integer; begin
write(‘Введите число ‘); readln(a); b:=a*a;
writeln(‘Квадрат этого числа = ‘,b); end.
Термины:
– начало секции описания переменных
– идентификаторы (имена) различных объектов
– переменные целочисленного (integer) типа
write, writeln – операторы вывода readln – оператор ввода
Идентификатор (или имя) – последовательность английских букв и цифр, начинающаяся с буквы. Служит для обозначения различных сущностей в программе. Идентификатор не должен совпадать с ключевыми словами. В языке Pascal большие и малые буквы не различаются (в других языках программирования могут различаться).
Переменная – это величина, которая может менять свое значение. Переменная всегда должна быть явно описана как принадлежащая какому-либо типу данных.
Тип данных – множество значений, которые может принимать объект (чаще всего это переменная) данного типа. Кроме множества значений тип данных задает множество допустимых операций. Например, целочисленный тип integer определяет диапазон целых чисел от –2 147 483 648 до +2 147 483 647, в целочисленных выражениях можно применять операции сложения, вычитания и т.п.
Непосредственные константы – это числа, используемые в арифметических выражениях. Например, в операторе b:=a+1 единица – это непосредственная константа.
Правила записи целых чисел. Целые числа записываются так же, как и в математике. Цифрам может предшествовать знак «–» или «+» (последнее обычно не нужно). Пробелы между знаком и цифрами, а также между цифрами недопустимы. Примеры правильных записей чисел: 1, 123, –4567, 003, +012.
Оператор присваивания. Оператор присваивания обозначается двумя символами :=, между которыми нет пробела. Слева от знака оператора должна стоять переменная, а справа – выражение. Суть оператора заключается в вычислении выражения и присвоения получившегося значения переменной.
Примеры: a:=2; a:=2+3; a:=b*2+1;
Неправильные примеры: a+1:=a; 2:=b+3;
Очень часто используется оператор вида a:=a+1; Он не содержит ошибки. Вначале берется старое значение переменной, к нему прибавляется единица, и результат записывается в опять в переменную a. Таким образом, этот оператор увеличивает значение переменной a на единицу.
Важно следить, чтобы все переменные, используемые в правой части оператора присваивания были определены к моменту вычисления оператора. В противном случае результат будет непредсказуем.
Существует два способа задать переменной значение: оператор присваивания и оператор ввода (read или readln).
Согласование типов в операторе присваивания. Общее правило таково: тип выражения в правой части оператора присваивания должен совпадать с типом переменной в левой части оператора присваивания. Т.е. если переменная имеет тип integer, то справа должно быть выражение, значение которого есть также целое число.
Арифметическое выражение – целочисленное арифметическое выражение состоит из переменных, констант, знаков операций, скобок и вызовов функций. Правила построения выражения очень похожи те, которые употребляются в математике, за исключением деления, для которого существуют две операции, обозначаемые ключевыми словами div и mod. Надо запомнить, что знак операции умножения * никогда не опускается в отличие от алгебры. Операции имеют обычный приоритет: умножение и деление выполняется раньше, чем сложение и вычитание. Вычисление функций (см. далее) выполняется еще раньше. В остальном операции выполняются слева направо. Для изменения порядка операций используются круглые скобки. Уровень вложенности скобок не ограничен.
Бинарные [1] арифметические операции над типом integer
Операция
Обозначение
Пример
остаток от деления
Деление на цело: 5 div 2 = 2, остаток от деления нацело: 5 mod 2 = 1
Выражение в математической записи:
Выражение на Паскале (в целых числах):
Кроме бинарных операций в Паскале используются унарные [2] операции – и + (в последнем особого смысла нет). Например, в выражении –2*(–a–b) минус перед переменной a является унарной операцией, а минус перед двойкой может рассматриваться и как унарная операция и как запись отрицательной константы.
Целочисленные типы языка ABC Pascal
Размер в байтах
Диапазон
При выполнении оператора присваивания следует следить за тем, чтобы значение целочисленного выражения не вышло за допустимый диапазон целого числа. Например, если переменная a имеет тип word, то в операторе a:=512*128; произойдет ошибка, так как значение выражения является 65536, а это число больше верхней границы типа word. Отметим, что если бы переменная a описана как integer, то оператор a:=512*128; является допустимым. Без особой необходимости не следует использовать типы byte и word.
Операторы вывода – write и writeln выводят заданную информацию на консоль. Оператор writeln после этого еще и переводит курсор на следующую строку (при достижении последней строки осуществляется скроллинг). Операторы могут иметь произвольное число аргументов, разделенных запятыми. В качестве аргументов могут выступать буквальные константы (например, строки символов) и переменные стандартных типов (в т.ч. и целочисленные).
Пример: write(‘Текстовая строка’); writeln(a,b);
Форматы вывода. В операторах write и writeln можно указывать формат, определяющий число позиций, используемых для вывода целого числа на экран, например:
Это означает, что для вывода значения, хранящегося в переменной a следует зарезервировать 5 символов, т.е. если число будет не пятизначным, то при выводе оно будет дополнено слева пробелами. Если число «не помещается» в формат, он будет автоматически «растянут», так чтобы число «влезло».
Оператор ввода – read, readln. Оператор read при чтении данных с консоли используется крайне редко, в основном используется оператор readln. Параметры оператора – только переменные и только стандартных типов, возможно использование оператора вообще без аргументов для создания ситуации ожидания нажатия клавиши Enter. По оператору readln программа приостанавливает свою работу, ожидая ввода данных от пользователя. Пользователь набирает желаемые значения переменных, разделяя их пробелами (или Enter) и нажимает Enter. Оператор интерпретирует введенные символы, переводя их во внутреннее (машинное) представление соответствующих переменных. Если это не удается (например, вместо целого числа введены буквы), программа аварийно завершает свою работу.
Для того чтобы пользователь знал что «хочет» ввести программа, полезно перед оператором readln выводить подсказку с помощью оператора write или writeln.
write(‘Введите количество учеников в классе ‘); readln(n);
Обратите внимание на пробел перед вторым апострофом. Он сделан для того, чтобы ввод пользователя отделялся от подсказки.
Функция
Описание
Возвращает квадрат аргумента. Необходимо помнить о диапазоне возвращаемого значения.
Возвращает модуль (абсолютное значение) числа.
Возвращает значение, на единицу меньшее аргумента.
Возвращает значение, на единицу большее аргумента.
Возвращает TRUE, если аргумент нечетный, иначе – FALSE
Возвращает TRUE, если аргумент четный, иначе – FALSE
Возвращает символ (тип char) с кодом n.
Возвращает случайное число в диапазоне от 0 до n-1.
2 – Использование модуля CRT
Использование модуля CRT
Подключение библиотеки к программе осуществляется предложением Uses:
Program Card;
Uses CRT; < Это предложение вставляется сразу после Program >
Далее могут идти описания переменных, затем begin и тело программы.
Разберем действия отдельных процедур:
2 – Использование модуля CRT
В качестве цвета может использоваться число от 0 до 15, но лучше пользоваться определенными в модуле CRT константами:
Таблица цветов
Рассмотрим еще несколько полезных подпрограмм.
Рассмотрим использование подпрограмм этой библиотеки на примере создания заставки программы.
Program Card;
Uses CRT; < Подключить модуль CRT > begin
ClrScr; < Очистить экран >
TextColor(White); < Установить белый цвет букв >
TextBackGround(Blue); < Установить синий цвет фона >
GotoXY(36,13); < Поставить курсор в 36 колонку, 13 строку > write(‘ Привет ‘); < Вывести текст >
ReadKey; < Ожидать нажатия любой клавиши > end.
Наберите текст этой программы и выполните её.
Задание №2*:
Модуль Sounds содержит процедуры и функции для работы со звуком:
n:=LoadSound(fname) – загружает звук из файла с именем fname в оперативную память и возвращает описатель звука в целую переменную n (звуковой файл должен может иметь любой формат);
PlaySound(n) – начинает проигрывание звука с описателем n;
StopSound(n) – останавливает проигрывание звука с описателем n;
RewindSound(n) – «перематывает» звук с описателем n на начало;
DestroySound(n) – удаляет звук с описателем n из оперативной памяти, описатель звука при этом становится недействительным;
SoundLength(n) – возвращает длительность звука с описателем n в миллисекундах.
Пример использования модуля sound:
Program Player; Uses Sounds, CRT; var n: integer; begin n:=LoadSound(‘C:\WINDOWS\MEDIA\ringin.wav’); // укажите расположение файла PlaySound(n);
Sleep(SoundLength(n)); DestroySound(n); end.
Графический модуль GraphABC
Система ABC Pascal обладает великолепной графической библиотекой. Для ее модключения после заголовка программы необходимо написать Uses GraphABC. Модуль GraphABC содержит константы, типы, процедуры и функции для рисования в графическом окне. Они подразделяются на несколько групп:
Рассмотрим сразу пример:
Program Gr01;
Uses GraphABC; begin
Line(0,0, WindowWidth, WindowHeight)
Line(0,WindowHeight, WindowWidth, 0) end.
Процедура SetWindowSize устанавливает размер графического окна 256×256 пикселей. Процедура SetPenColor определяет цвет рисования линий. Функция RGB возвращает цвет, заданный своими Red, Green, Blue компонентами. Процедура Line рисует линию из точки, заданной первой парой координат, в точку, заданную второй парой координат. Функции WindowWidth и WindowHeight возвращают текущие значения ширины и высоты графического окна (следовательно, если вы поменяете размер окна в процедуре SetWindowSize, то линии все равно будут проводиться из угла в угол).
WindowHeigth
Как известно восприятие цвета у человека трехцветное. Основываясь на этом, в графических библиотеках используется именно такое трехкомпонентное представление цвета. Цвет задается с помощью функции
Функция формирует целое число (integer), которое может использоваться везде в графической библиотеке, где требуется указание цвета. Есть несколько предопределенных цветов:
clBlack – черный clPurple – фиолетовый clWhite – белый clMaroon – темно-красный clRed – красный clNavy – темно-синий clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый
clCream – кремовый clAqua – бирюзовый clOlive – оливковый clFuchsia – сиреневый clTeal – сине-зеленый clGray – серый clLime – ярко-зеленый clLightGray – светло-серый clMoneyGreen – цвет зеленых денег clDarkGray – темно-серый
Задание стиля и цвета пера
psClear psDot psDashDotDot
Текущее перо используется для рисования линий, прямоугольников, ломаных, окружностей, эллипсов, дуг и т.п.
Program Gr02;
Uses GraphABC;
Var i : integer; begin
Circle(256,256,WindowHeight div 2); end.
Задание стиля и цвета кисти
Возможные стили кисти: bsSolid bsClear bsCross bsDiagCross bsHorizontal bsBDiagonal bsVertical bsFDiagonal
Текущей кистью закрашиваются все замкнутые фигуры, контур фигур рисуется текущим пером. Чтобы нарисовать не закрашенную фигуру, используйте SetBrushColor(bsClear).
Program Gr03;
Uses GraphABC;
Var i,j : integer; begin
Rectangle(10,10,WindowWidth-10,WindowHeight-10); end.
Некоторые графические примитивы [6]
Напишите программу, использующую не менее трех процедур рисования, которая рисовала бы несложный рисунок (домик, автомобиль, и т.п.)
Пример решения задания
program avto; uses graphABC; var i : integer; begin
SetPenStyle (psClear); // верхняя часть автомобиля setBrushColor (Clgreen); rectangle (250,250,550,351);
setBrushColor (ClAqua); // окна rectangle (255,255,395,345); rectangle (405,255,545,345);
setBrushColor (Clgreen); // корпус rectangle (50,350,750,500);
setBrushColor (ClYellow); // фары rectangle (749,375,764,400); setBrushColor (ClRed); rectangle (35,375,51,400);
setBrushColor (ClLightGray); // бампер RoundRect (725,450,775,475,10,10); RoundRect (25,450,75,475,10,10);
SetPenStyle (psSolid); // двери
setBrushColor (ClBlack); // колеса Circle (200,500,50); setBrushColor (ClLightGray);

Circle (600,500,25); end. 4. Цикл for
Цикл for используется для повторения фрагментов программы заданное число раз.
for i:=N1 to N2 do оператор;
for i:=N1 to N2 do begin оператор1; оператор2;
Здесь i – индекс цикла (обязательно переменная целочисленного типа),
N1 – целочисленное выражение, определяющее нижнюю границу индекса цикла,
N2 – целочисленное выражение, определяющее верхнюю границу индекса цикла,
N2 должно быть больше или равно N1, для того чтобы цикл выполнился хоть один раз.
Алгоритм выполнения оператора такой:
if логическое условие then оператор-1 else оператор-2;
if x>0 then z:=1 else z:=–1;
if x>0 then begin
else begin z:=-1;
x:=-x; end;
Обратите внимание, что перед else точка с запятой не ставится. Точка с запятой используется только для разделения операторов друг от друга. Можно было бы и не ставить запятую после операторов x:=2*x и x:=-x, поскольку begin и end не являются операторами, а являются скобками. Паскаль будет интерпретировать 8 точку с запятой перед end, как наличие пустого оператора между ней и end.
Обратите внимание на запись “лесенкой”, она не обязательна, но весьма желательна, поскольку помогает наглядно увидеть алгоритмическую структуру программы. Правило такое: end пишем под begin.
Оператор if (сокращенная форма)
Часто встречается ситуация, когда ветвь else не нужна. В этом случае ее можно опустить.
if x 0 then writeln(‘Число положительное’)
else if n=0 then writeln(‘Число ноль’) else writeln(‘Число отрицательное’) end.
Если имеются вложенные операторы if, один из которых неполный, например:
if n>0 then if n=0 then writeln(‘У вас ноль’) else writeln(‘Число положительное’)
возникает неоднозначность: к какому if относится else. Принято, что else относится к ближайшему if, т.е. таки образом, как отражает запись данного примера. Если следовать правилу, помещая, по возможности, вложенные операторы в ветвь else, то таких ситуаций не будет.
Пример: var b : boolean;
if b then writeln(‘Все в порядке’);
Такие логические переменные называют флагами, иногда их использование оказывается очень эффективным решением.
Операции сравнения. Существует шесть бинарных [9] операций сравнения, у которых операнды могут быть самых разных типов (целые, вещественные, символьные строковые).
Эти операции весьма часто используются для построения различных логических условий. Например: if a>0 then a:=1 else a:=-1. С точки зрения языка Pascal a>0 представляет собой логическое выражение (можно написать даже так: b:=a>0, если b – переменная булевского типа).
Логические операции. Для составления сложных логических выражений могут использоваться две бинарные логические операции AND, OR и одна унарная 11 NOT.
and – результат операции истинен тогда и только тогда, когда истины оба операнда. or – результат операции истинен тогда, когда истинен хотя бы один операнд. not – имеет результат противоположный операнду.
Примеры операторов if со сложными условиями:
if (x>=0) and (x =0) and (x 1) then writeln(‘X вне диапазона 0-1’);
Обратите внимание на скобки. Операции сравнения имеют самый низший приоритет, поэтому заключены в скобки. Приоритет операции and соответствует операции умножения, or – сложению, not – унарному минусу (т.е. самый высокий).
Вложенные циклы
Довольно часто возникает ситуация, при которой в теле одного цикла встречается другой оператор цикла. Такие циклы называют вложенными циклами. Приведем простой пример. Выведем на экран таблицу умножения целых чисел от 1 до 10.
Program Table; 1 2 3 4 5 6 7 8 9 10 var i,j : integer; 2 4 6 8 10 12 14 16 18 20 begin 3 6 9 12 15 18 21 24 27 30 for i:=1 to 10 do 4 8 12 16 20 24 28 32 36 40 begin 5 10 15 20 25 30 35 40 45 50 for j:=1 to 10 do write(i*j:4); 6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
writeln 8 16 24 32 40 48 56 64 72 80 end 9 18 27 36 45 54 63 72 81 90 end. 10 20 30 40 50 60 70 80 90 100
Здесь внутри тела внешнего цикла по переменной i, находится вложенный цикл по переменной j, который выводит в операторе write (не writeln!) произведение i*j, выделяя 4 позиции для результата. Далее идет оператор writeln, который переводит курсор на новую строку. Внешний цикл повторяет 10 раз эту операцию, формируя, таким образом, 10 строк таблицы, которая приведена справа. 6. case
Оператор case
Оператор case используется для создания развилки на более чем 2 ветви. Понять его работу поможет следующий пример.
Program YourMark; < ваша отметка >var n : integer; begin
write(‘Введите вашу отметку ‘); readln(n); case n of
5 : writeln(‘Отлично’); end; end.
Обратите внимание, что оператор case заканчивается скобкой end.
Если пользователь введет отметку, не попадающую в диапазон 2-5, то никаких действий выполняться не будет. Можно, конечно, обработать и эту ситуацию. Тогда синтаксис оператора case будет такой:
Program YourMark2; < ваша отметка >var n : integer; begin
write(‘Введите вашу отметку ‘); readln(n); case n of
else writeln(‘Вы ввели недопустимую отметку!’) end; end.
Обратите внимание на отсутствие точки с запятой перед else и двоеточия после else.
Кроме единичных значений переключателя n можно указывать диапазон значений.
Program YourMark3; < ваша отметка >var n : integer; begin
write(‘Введите вашу отметку ‘); readln(n); case n of
2..3 : writeln(‘Это все очень плохо!’);
4 : writeln(‘Хорошо!’); 5..6 : writeln(‘Так держать!’)
else writeln(‘Вы ввели недопустимую отметку!’) end; end.
Обратите внимание на отсутствие точки с запятой перед else и двоеточия после else.
Операторы цикла While и Repeat … Until
Мы уже познакомились с оператором цикла for, который используется в тех случаях, когда число повторений тела цикла известно заранее. В языке Pascal существуют еще два оператора цикла, которые используются в тех случаях, когда число повторений цикла заранее не известно, либо сложно вычислимо.
Цикл While используется для повторения оператора (группы операторов) произвольное число раз, которое может быть заранее и не известно, причем проверка условия выполнения тела цикла происходит перед выполнением тела цикла.
while условие do оператор;
while условие do begin оператор1; оператор2;
Суть выполнения оператора заключается в проверке логического условия, если оно оказывается истинным, выполняются операторы тела цикла до тех пор, пока логическое условие не станет ложным. Если условие было ложным перед выполнением цикла, то операторы цикла никогда не выполняются. Если условие остается истинным всегда, то цикл никогда не закончится. Говорят, что программа зацикливается.
Цикл repeat … until похож на цикл while. Его синтаксис:
repeat оператор1; оператор2;
. until условие;
Обратите внимание, что, несмотря на несколько операторов в теле цикла, begin и end отсутствуют. Сам оператор представляет собой скобки. Цикл начинается с выполнения операторов, затем проверяется условие, если оно ложно, то цикл повторяется, а если истинно, то завершается. Если условие истинно и перед выполнением цикла, то цикл выполняется один раз. Если условие остается ложным всегда, то программа зацикливается.
Построим таблицу квадратов чисел от 1 до 10 с помощью цикла while и repeat … until. Program SquareW; var i : integer; begin i:=1 while i 10; end.
7. Циклы while и repeat until
Рассмотрим следующий пример. Необходимо построить вложенные друг в друга концентрические окружности. Радиус самой большой окружности – 400 пикселей, а радиус каждой вложенной – в два раза меньше предыдущей, т.е. 200, 100, 50, … Радиус последней – 1 пиксель.
Для решения этой задачи разумно использовать цикл while или repeat until, поскольку действительно сразу сложно понять сколько будет окружностей (хотя, конечно, можно сосчитать).

var r : integer; var r : integer; begin begin
repeat while (r>=1) do
circle(400,400,r); begin r:=r div 2; circle(400,400,r);
until r 21 ). В языке Pascal такое число можно записать в следующем виде 6.67E21, т.е. вместо ·10 в языке Pascal пишется буква E (большая или маленькая, всё равно). Приведем еще примеры записи вещественных чисел с плавающей точкой:
3E1, –2e+10, +1.234E–10, 65.2e+20.
Часть числа до буквы E называется мантиссой, а после буквы E – порядком или экспонентой.
Вывод вещественных чисел с помощью оператора write/writeln происходит обычным способом. При выводе мы можем применять форматы вывода, отделяя их от переменной двоеточием. Формат вывода может состоять из одного или двух чисел, разделенных двоеточием (см. пример). При указании двух чисел первое определяет число позиций, резервируемых для вывода всего числа, а второе – число позиций для дробной части. Если в качестве формата вывода используется одно число, то оно определяет число позиций, резервируемых для вывода всего числа, а само число выводится в формате с плавающей точкой. В этом случае рекомендуется задавать значение формата не меньше 10, так как под экспоненту отводится пять позиций и еще две позиции выделяется под знак числа и десятичную точку. Если при выводе формат числа не указывать, то Pascal попытается вывести число наиболее компактным способом. Лучше уяснить действие форматов поможет следующий пример:

begin x:=1234.567; writeln(x); writeln(x:8:3); writeln(x:8:2); writeln(x:8:1); writeln(x:12); writeln(x:14); end.
Рассмотрим еще одну программу, которая строит таблицу длин окружностей радиусами от 0.1 до 1 см с шагом 0.1 (заметьте, что для числа π используется встроенная константа pi):
Program Table; Uses CRT; var r, s : real; begin
r:=0.1; // Начальное значение repeat
s:=2*pi*r; // Вычисление длины writeln(r:3:1,s:6:2); // Вывод r:=r+0.1; // Увеличение радиуса на 0.1 until r>1.0; // Условие окончания цикла end.
Подпрограммы на языке Pascal
При решении сложных задач разумно разбить алгоритм на несколько более простых составляющих. В языке Pascal существуют специальные средства для этого – подпрограммы. Есть два вида подпрограмм: процедуры и функции. Функция получает информацию от вызывающей программы через свои параметры. Параметры, описанные в заголовке функции, называются формальными параметрами. Параметры, указанные при вызове функции называют фактическими. Типы и число фактических параметров должны соответствовать типу и числу формальных параметров. Следующий пример иллюстрирует работу функций.
Program Table;
Uses CRT; // Подключение модулей
// Описания функций, требующихся в программе
function cube(x:real):real; // возведение в куб begin cube:=x*x*x; // имени функции присваивается значение end;
function sign(x:real):integer; // вычисление знака числа begin if x>0 then sign:=1 else if x=0 then sign:=0 else sign:=-1; end;
Program ProcUse;
Uses CRT;
// вычисление длины окружности и площади круга
Procedure Pr(R,L,S:real); begin

S:=PI*sqr(R); end;
// ГЛАВНАЯ ПРОГРАММА var rad, len, area : real; begin
write(‘Введите радиус ‘); readln(rad); Pr(rad, len, area);
writeln(‘Длина окружности ‘, len); writeln(‘Площадь круга ‘, area); end.
Попробуйте выполнить данную программу. Вы обнаружите странный результат: какое бы значение радиуса вы не вводили, результат будет один и тот же: длина окружности и площадь круга будут равны 0! В чем дело?
Оказывается тот способ передачи параметров подпрограмме, который мы использовали не подходит для решения нашей задачи. Используемый до сих пор способ называется передача параметров по значению. Суть его заключается в том, что подпрограмма создает копии параметров (в другой терминологии – локальные переменные подпрограммы), в которые помещаются значения, заданные в фактических параметрах в главной программе. Т.е. по смыслу такие параметры являются входными, т.е. предназначенными для передачи информации из главной программы в подпрограмму, но не наоборот. Однако этот подход имеет тот плюс, что подпрограмма гарантирует, что она не изменит фактические параметры.
11. Способ передачи параметров
Второй способ называется передача параметров по ссылке. Изменим заголовок процедуры Pr на следующий:
Procedure Pr(R: real; var L,S:real);
Обратите внимание на появившееся ключевое слово var. Оно говорит о том, что два последних параметра процедуры будут являться изменяемыми. Для таких параметров используется другой способ сопоставления с фактическими (передаются на самом деле адреса параметров). В связи с этим необходимо запомнить, что в качестве формальных параметров, соответствующих параметрам переменным, могут использоваться только переменные, но не константы! Т.е. вызов Pr(5,6,7) ошибочен, возможно, лишь Pr(5,a,b), где a и b – вещественные переменные. Первый параметр мы оставили, как и раньше, обычным параметром, передаваемым по значению.
Выполним теперь программу. Работает!
МАССИВЫ
Тема имеет исключительно важное значение
В практике программирования часто встречаются задачи, в которых требуется применение регулярных, пронумерованных данных: таблицы, результаты наблюдений, проекции векторов, числовые матрицы, каталоги библиотек и т.д. Для работы с такими данными практически во всех языках программирования существует понятие массива.
Массив – это регулярная структура данных, которая состоит из пронумерованных компонент одного и того же типа. Этот тип мы будем называть базовым типом.
Массивы могут быть одномерными:
и многомерными (например, двумерными):
С точки зрения машинной реализации, все массивы – одномерные, разница лишь в том, как пронумерованы элементы массива.
Описание одномерного массива, если считать его элементы целыми числами выглядит следующим образом:
A : array [1..8] of integer;
здесь array – ключевое слово, которое и обозначает собственно массив, в квадратных скобках указан диапазон первого и единственного индекса.
В Pascal’е в качестве диапазона индекса может выступать любой отрезок перечислимого типа, например ‘A’..’H’, либо 0..7. Однако на практике чаще всего удобнее в качестве индексов использовать отрезок целого типа, причем нижний (меньший) индекс разумно выбирать единицей или нулем.
Одной из самых неприятных ошибок программирования – является ошибка обращения к несуществующему элементу массива, или как говорят, ошибка выхода индекса за допустимый диапазон. Поэтому предыдущее определение массива A лучше переписать так:
Const N = 8;
Var A : array [1..N] of integer;
и в дальнейшем в программе при работе с массивом использовать не конкретные числа, а константы, которые определяют диапазон индексов, кроме того, программу можно будет легко модифицировать для работы с массивом другой размерности, так как необходимо будет изменить всего лишь одну строчку!
Иногда формальность описания следует развить, выделив описание типа отдельно, это будет абсолютно необходимо, если вы собираетесь использовать в процедурах и функциях параметры-массивы.
Const N = 8;
Type TA = array [1..N] of integer; Var A : TA;
Дополнительные удобства этого подхода заключаются в том, что массивы, описанные в разных местах как массивы типа TA, будут являться совместимыми по типу, а в случае описания массивов A и B одинаковым способом, но без объявления типамассива, они будут считаться несовместимыми. Например,
Const N = 8;
Type TA = array [1..N] of integer;
Var A : TA;
Var B : TA;
здесь A и B – массивы одного и того же типа. А здесь:
Const N = 8;
Var A : array [1..N] of integer;
Var B : array [1..N] of integer;
здесь A и B – массивы будут считаться разных типов. Хотя следующее описание определяет массивы одинаковых типов:
Const N = 8;
Var A,B : array [1..N] of integer;
В качестве базового типа допустим абсолютно любой тип, в том числе и массив, т.е.
допустим массив массивов:
Const M = 5;
Var A : array [1..M] of array [1..N] of integer;
Подобная ситуация встречается довольно часто, поэтому для нее существует разумное сокращение:
Const M = 5; N = 8;
Var A : array [1..M,1..N] of integer;
Следует учесть, что многомерные массивы, даже при небольших диапазонах индексов имеют тенденцию занимать много памяти.
Основные приемы работы с массивами
Рассмотрим выполнение элементарных манипуляций с массивами. Самая простая задача – заполнение всех элементов одним и тем же значением:
<Инициализация массива> for i:=1 to N do A[i]:=0;
Обратите внимание, как осуществляется доступ к элементам массива – после имени массива в квадратных скобках указывается индекс, который может быть произвольным выражением, лишь бы его значение не выходило за указанный при описании диапазон. Подобная конструкция допустима везде, где допустима простая переменная.
Цикл for – чрезвычайно удобная и полезная вещь при работе с массивами. Оператор вида for i:=1 to N do – можно «переводить» как «выполнить для всех элементов массива».
Если два массива одного типа, то допустимо присваивание одного массива другому одним оператором:
Следующие два примера показывают, как осуществить ввод-вывод с небольшим сервисом:
<ввод массива> for i:=1 to N do begin
write(‘Ввeдите ‘,i,’-й элемент: ‘); readln(A[i]) end;
Из этого примера видно, что массив вводится поэлементно, и как организовать нехитрый сервис. Вывод производится аналогично:
for i:=1 to N do writeln(‘A[‘,i,’]=‘,A[i]);
Теперь рассмотрим самую первую нашу задачу на обработку массива – поиск максимального элемента. Поступим следующим образом: пусть максимальный элемент массива – первый, заведем для него специальную переменную; затем будем просматривать поочередно последующие элементы, и если окажется, что нам встретится элемент больший, чем уже определенное число, то заменим его на этот элемент массива. Таким образом, когда мы просмотрим весь массив, окажется, что наша переменная содержит искомое значение:
<определение максимального значения> max:=A[1];
for i:=2 to N do if A[i]>max then max:=A[i]; writeln(‘Maximum=’,max);
Напишем теперь целиком программу, использовав полученные знания:
Program Massiv;
Const N = 10;
Var A : array [1..N] of integer; i, max : integer;
begin
for i:=1 to N do // Ввод массива begin
write(‘Ввeдите ‘,i,’-й элемент: ‘); readln(A[i]) end;
max:=A[1]; // Поиск максимального значения for i:=2 to N do if A[i]>max then max:=A[i]; writeln(‘Maximum=’,max);
Задание 12
элементов массива (конечно, это будет вещественная величина типа real)
Задачи, отмеченные *, являются необязательными и их баллы – дополнительными. 13. Сортировка массивов
СОРТИРОВКА МАССИВОВ
Тема имеет исключительно важное значение
Первой серьезной задачей программирования, с которой сталкивается начинающий программист – это задача сортировки массива. Под сортировкой понимается упорядочивание элементов массива по возрастанию (или по убыванию) без создания копии массива (т.е. «на месте»).
Самый простой алгоритм – это линейная сортировка. Рассмотрим рис. 13.1. Проведем последовательно сравнение первого элемента со всеми последующими, при если при очередном сравнении (например сразу 4 и 2) выяснится, что элементы стоят в «неправильном» порядке – переставим их местами, затем продолжим сравнение (рис. 13.2). По окончании одного прохода, можно сказать, что в первом элементе массива находится минимальный элемент (Рис. 13.4).
Далее применим указанную процедуру к неотсортированному «остатку» массива (рис.
13.5) до тех пор, пока не переставим два последних элемента (рис. 13.6-13.7).
Алгоритм линейной сортировки очень прост, но не экономичен, среднее число
просмотров и перестановок пропорционально квадрату числа элементов (точнее ∼ ).
13. Сортировка массивов
Program LinerSort;
Const N = 10; // Число элементов массива
Type Massiv = array [1..N] of integer; // Определение типа Massiv
procedure swap(var x,y: integer); // Перестановка элементов местами var z : integer; begin z:=x; x:=y; y:=z; end;
procedure print(m : Massiv); // Вывод массива var i : integer; begin
for i:=1 to N do write(m[i]:5); writeln; // Новая строка end;
// Переменные главной программы Var a : Massiv; i,j : integer;
begin
// Заполнение массива случайными числами в диапазоне от 0 до 99 for i:=1 to N do a[i]:=random(100); print(a); // Вывод массива
for i:=1 to N-1 do // Внешний цикл до N-1 (обратите внимание!) for j:=i+1 to N do // Внутренний цикл от i+1 (обратите внимание!) if (a[i]>a[j]) then swap(a[i],a[j]); // Перестановка элементов
print(a); // Вывод отсортированного массива end.
Задание 13
РАБОТА С ФАЙЛАМИ
Многим программам требуется сохранять и читать информацию, используя файловую систему компьютера. В языке Pascal изначально были предусмотрены специальные операторы и типы данных для работы с файлами.
В ABC Pascal есть два вида файлов: текстовые и типизированные. В типизированных файлах обмен с внешними устройствами производится без какого либо преобразования данных, т.е., например, числа типа integer непосредственно копируются на диск, занимая по 4 байта каждое. Попытка просмотра такого файла в текстовом редакторе обречена на неудачу, мы увидим лишь бессмысленный набор знаков. Однако скорость ввода/вывода для таких файлов будет максимальной. Типизированные файлы мы рассмотрим позже в связи с типом данных record.
Работа с текстовым файлами очень похожа на работу с обычным консольным вводом/выводом. Числовые данные преобразуются в цифры в соответствии с заданными форматами (стр. 15 и стр. 26). Строковый и символьный тип данных выводится без преобразований. Следует учесть, что текстовый файл может быть открыт либо на чтение, либо на запись
Созданный текстовый файл можно прочитать в простом текстовом редакторе (notepad, aditor, в редакторе ABC Pascal, [можно и в Word [10] ]). В текстовом файле ABC Pascal используется кодировка Win-1251, в которой один символ занимает один байт. Текстовый файл можно создать в редакторе (в соответствии с указанными правилами) и прочитать в программе на ABC Pascal.
Рассмотрим сразу простой пример – вывод таблицы квадратов первых 10 чисел в текстовый файл table.txt. Program TextOut;
const name = ‘text.txt’; // имя файла в текущем каталоге
var f : text; // файловая переменная n : integer; // переменная для цикла for
begin
assign(f,name); // связывание файловой переменной с именем файла на диске rewrite(f); // создание и открытие файла на запись
for n:=1 to 10 do writeln(f,n:2,sqr(n):4); // вывод в файл writeln(f. ); close(f); // закрытие файла, сохранение всех еще незаписанных данных на диск end.
В этом пример надо обратить внимание на несколько операторов:
СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ И СТРОКИ СИМВОЛОВ
МНОЖЕСТВА
Вычислительные программы – квадратное уравнение
Назван в честь Дж. Буля – основателя математической логики. ↑
Бинарные операции – имеющие два операнда, на которые действует эта операция. 11 Унарная операция – имеющая только один операнд. ↑
Для этого в MS Word при создании файла надо выбрать тип «*.txt – обычный текст», а при открытии указать, что мы открываем текстовый файл в кодировке Win-1251. ↑
В ABC Pascal существуют функции FileExists(name), проверяющая, существует ли файл с таким именем, и CanCreateFile(name), проверяющая можно ли создать файл с таким именем. ↑
В ABC Pascal существуют две аналогичные функции Eoln и SeekEoln, которые вместо конца файла ищут конец строки. ↑
Коды с 0 по 31 являются служебными и в таблице ANSI им не соответствуют никакие печатные символы. ↑
Другие возможные базовые типы – перечисления (об этом позже). ↑
Решение есть только в комплексных числах ↑
Официальный сайт ГОУ ВО МО «Государственный гуманитарно-технологический университет»

Сайт Министерства образования Московской области

Официальный сайт городского округа Орехово-Зуево

Книга о истории Ореховского индустриального техникума


















