Программирование на языке Pascal
Создание: 24.02.2013
В одном посте, конечно, не расскажешь о приемах обучения языка программирования Pascal. расставим только основные вехи, наиболее интересные моменты будут рассмотрены позже подробней.

В качестве среды программирования используется Pascal ABC. Среда разрабатывалась специально для обучения учеников и студентов. В среде нет компилятора, т.е. вы не сможете создать запускаемый файл. Зато есть русский интерфейс, совместимость с стандартными средами TurboPascal, Delphi, среда web-программирования, встроенный задачник, модули расширения и многое другое.

Любой язык предназначается прежде всего для общения, в случае языка программирования общения с компьютером. Поэтому, чем раньше ученик «заговорит» на этом языке, тем лучше. На первом уроке ученик получает шаблон для написания несложных линейных алгоритмов, используя который он с самого первого урока может писать несложные программы по мере изучения наращивая свой лексический и синтаксический багаж в языке программирования.

Типовые задачи:

Линейные алгоритмы

  1. В компьютер вводятся параметры кольца: радиусы внешней и внутренней окружностей. Напишите программу, вычисляющую площадь кольца.
  2. Напишите программу, вычисляющую площадь куба по введенному значению длины грани.
  3. В компьютер вводятся координаты двух точек (x1,y1) и (x2,y2). Напишите программу, вычисляющую длину полученного отрезка.
  4. В  компьютер вводятся значения длин трех отрезков. Напишите программу, вычисляющую площадь полученного треугольника.
  5. В компьютер вводятся значения двух катетов треугольника. Напишите программу, вычисляющую радиусы вписанной и описанной окружности.

Переменные

  1. Найти сумму цифр веденного четырехзначного числа.
  2. Задано шестизначное число – номер автобусного билета. Определите является билет счастливым (вывести true / false).
  3. Задано текущее время: h (часы), m (минуты). сколько времени будут показывать механические часы через h1 часов, m1 минут.
  4. Вводится года (четырехзначное число). Является ли год високосным (вывести true / false)?
  5. В компьютер вводятся три числа длины трех отрезков. Можно ли из этих отрезков составить треугольник (вывести true / false)?
  6. Задана область на декартовой плоскости, ограниченная окружностями, прямыми линиями. Определить попадет ли точка с координатами (x,y) в заданную область (вывести true / false).

Условный оператор

  1. Найдите максимальное из трех введенных чисел.
  2. Напишите программу, решающую квадратное уравнение по введенным коэффициентам a, b, c.
  3. Заданы размеры кирпича (длина, ширина, высота), а также длина и ширина прямоугольного отверстия в стене. Пройдет ли кирпич в это отверстие.
  4. В компьютер вводится число n – возраст человека. Компьютер выводит на экран одну из надписей: «вам n год», «вам n лет», «вам n года» в соответствии с правилами русского языка.
  5. Даны четыре точки на плоскости. Определите, можно ли построить треугольник с вершинами в этих точках такой, что оставшаяся точка окажется внутри треугольника.

Циклические конструкции

  1. Спортсмен начинает подготовку к соревнованиям и в первый день пробегает три километра. После этого он в течение десяти дней после этого продолжает тренировку, каждый день увеличивая нагрузку на пять процентов. Сколько километров пробежит ученик за все дни подготовки к соревнованиям?
  2. Протабулируйте заданную функцию на интервале [a, b] с заданным шагом h. Результат представь те в виде таблицы.
  3. Банкир «бросает на ветер» в первый день один рубль, а в каждый последующий в два раза больше чем в предыдущий. За сколько дней банкир разорится, если в банке на первый день хранилось 20.000.000 рублей?
  4. Найдите количество всех счастливых автобусных билетов.
  5. Найдите факториал заданного числа n.
  6. Найдите наибольший общий делитель для двух чисел a, b.
  7. Дано число, определить является ли оно простым.
  8. Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.
  9. Посчитайте сумму ряда S = 1 + 1/2 + 1/3 + … 1/n для заданного n.
  10. Найдите сумму n чисел Фибоначчи.
  11. Найдите, при каком значении n сумма ряда S = 1 + 1/2 + 1/3 + … 1/n превысит заданное значение A.

Массивы

  1. Задан массив из десяти целых случайных чисел, лежащих в интервале [a, b]. Найти значение и индексы минимального и максимального элементов массива, переставить их местами.
  2. Массив a1, a2, ... an включает в себя несколько нулей. Поставьте нули в начало массива, а остальные элементы сдвиньте, не меняя их порядок.
  3. В массиве находится максимальный элемент. Слева от него вставляется элемент меньший на единицу, остальные элементы сдвигаются влево. Справа вставляется элемент больший на единицу, остальные элементы сдвигаются вправо.
  4. В массиве из N элементов последний элемент смещается последовательно в первую позицию, сдвигая все элементы вправо. На экран выводятся все промежуточные состояния массива.
  5. Отсортируйте заданный массив целых чисел методами «перестановок» и «пузырьком». Подсчитайте количество перестановок.
  6. В квадратной матрице найдите максимальный элемент на основной и дополнительной диагонали. Поменяйте их местами.
  7. Постройте в заданном двумерном массиве k-й столбец с z-ой строкой.

Строки

  1. Вывести на экран кодовую таблицу символов.
  2. Вывести на экран четные символы в веденной строке.
  3. В заданной строке, оканчивающейся точкой, найдите количество слов.
  4. Определить, является ли введенная строка палиндромом. Палиндромом (перевертышем) называется такая строка, которая одинаково читается с начала и с конца. Например, «казак» и «потоп» - палиндромы, а «канат» - нет.
  5. Дана строка, состоящей из строчных букв латинского алфавита. Вывести буквы этой строки в порядке убывания их частоты встречи в данной строке.
  6. Во введенной строке, состоящей из строчных букв латинского алфавита заменить все буквы их номерами (a-1, b-2 и т.д.).
  7. В строке присутствуют целые числа. Найти их сумму.
  8. Дана строка. Найти самое длинное слово.
  9. Дана строка заменить каждый символ строки буквой, следующей в алфавите за данной: a-b, b-c и т.д.
  10. Заданную последовательность слов переупорядочить в алфавитном порядке.

Процедуры / функции / рекурсия

  1. Написать функцию вычисления НОД (наибольшего общего делителя) и с ее помощью сложить две дроби, упростить результат.
  2. Напишите программу вычисления суммы ряда S = 1 + 1/2 + 1/3 + … 1/n. Сложение каждой дроби и упрощение результата - отдельные функции.
  3. Напишите функции и процедуры, аналогичные Copy() и Delete() в паскале без использования последних.
  4. Написать рекурсивную функцию вычисления факториала числа.
  5. Написать рекурсивную функцию вычисления НОД.
  6. Напишите рекурсивную функцию для вычисления количества перестановок в задаче о «ханойских башнях» для n колец.

 

Записи, файлы

Задачи такого типа являются более сложными. Для них вернее использовать термин мини-проекты. Например, такие:

  1. В файле хранятся список перевода русских и английских слов (I – я, table – стол, и т.д.). Напишите программу, которая введенную строку на английском языке «переводила» подставляя соответствующие русский значения. Слово, которого нет в справочнике, остается непереведенным.
  2. Из списка претендентов на вакансию программиста с их данными: ФИО, возраст, стаж, предполагаемая зарплата формируется массив записей. Вывести сотрудников по заданному критерию.
  3. Из файла, содержащего строки с ФИО ученика и баллами по трем экзаменам формируется массив записей с возможностью сортировки по заданному критерию.