Программы для начинающих
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Замечания перед прочтением
Данный документ - набросок минимального множества задач, необходимых для изучения указанных тем. Впоследствии для всех задач, содержащихся в этом списке, будут приведены тексты программ на языке Паскаль.
Данный документ МОЖНО править. Любому, кто на это отважится :) Разумеется, если будут конструктивные предложения. Если правка будет неудачной, мы безболезненно откатим документ к старой версии.
Основные идеи данного набора задач
- Разумная минимальность покрытия, обеспечивающая изучение и закрепление тем
- Приводятся более или менее конструктивные алгоритмы, а не алгоритмы, иллюстрирующие ту или иную конструкцию языка. В идеале в этих задачах не должно быть особенностей языка вовсе. Тем самым, соблюдается идея обучения на примерах
- Повторение алгоритмов из предыдущих пунктов в алгоритмах следующих пунктов
- Включение в список большинства известных простых алгоритмов
- В каждом алгоритме предполагается указать принадлежность к той или иной категории или подкатегории. Кажжый алгоритм может принадлежать к нескольким категориям
- В каждой теме в конце будет также набор ошибок (компиляции, выполнения), которые можно совершить при решении задач из этой темы. Сейчас в скобках после некоторых алгоритмов указаны некоторые категории
Начало
Программы
- HelloWorld
- Вычисление площади круга
- Вычисление A^8 (промежуточные переменные)
- Вычисление расстояния между двумя точками на прямой (стандартные функции, abs)
- Вычисление гипотенузы по катетам (стандартные функции, sqrt)
- Генерация случайного числа (стандартные функции, random)
- Перемена местами двух значений
- Выделение цифр из двузначного числа (div mod)
- Выделение цифр из трехзначного числа (div mod)
Возможные ошибки
- Неописанная переменная
- Отсутствующая ;
- Несовместимость типов при присваивании
- Ошибка ввода
- Ошибка отсутствия ввода
- Ошибка неинициализированной переменной
- Корень из отрицательного числа
- Деление на 0
Условный оператор и оператор выбора
Программы
- Минимум из двух значений
- Определение четности числа (повторение div mod)
- Состоит ли двузначное число из одинаковых цифр (выделение цифр из числа)
- Упорядочение двух значений по возрастанию (составной оператор, неполная форма условного)
- Проверка числа на двузначность (and)
- Проверка числа на равенство одному из значений (or)
- Определение антонима слова (вложенные if) - может, заменить: что-то на цепочечные if
- Определение четверти, в которой находится точка (вложенные if, математика)
- Нахождение корней квадратного уравнения (математика)
- Словесное наименование дня недели (case)
- Определение того, является ли символ цифрой или буквой
Возможные ошибки
- Неверная расстановка begin end
- Неверная расстановка скобок в сложном логическом выражении
Циклы
- Вывод последовательностей 1 2 3 4 5 и 5 4 3 2 1 (с помощью разных циклов)
- Вывод последовательностей 1 3 5 7 9 и 10 8 6 4 2 (с помощью разных циклов)
- Сумма двузначных чисел
- n!
- a^n
- Вывод степеней двойки
- Вывод цифр числа (div mod)
- Вывод букв английского алфавита (for)
- Табулирование функции
- Числа Фибоначчи (рекуррентные последовательности)
- Минимум из введенных
- Номер первого максимума из введенных
- Номер последнего максимума из введенных
- Поиск заданного числа среди введенных
- Минимальное четное из введенных (условный минимум)
- Защита от ввода неверного значения с помощью repeat
- Алгоритм Евклида поиска НОД
- Является ли число степенью 2 (2 варианта: делением и умножением)
- Вывод таблицы умножения (вложенные циклы)
- Определение простоты числа
- Разложение числа на простые множители
- Нахождение корня функции методом половинного деления (наверное, это - не для начинающих)
Возможные ошибки
- Неверный тип переменной цикла
- Изменение переменной цикла в теле цикла
- Использование одинаковой переменной цикла в заголовках вложенных циклов
- Зацикливание
- Переполнение
- Сравнение вещественных чисел на равенство
Процедуры и функции
Основная часть задач - создание оберток над известными алгоритмами
Программы
- Вычисление площади и периметра прямоугольника (параметры-значения и параметры-переменные)
- Создание своей функции и ее табулирование
- Функция вычисления a^n
- Функция вычисления n!
- Вывод четверти по координатам точки (if, функция)
- Вывод слова, обозначающего данную цифру (case, функция)
- Функция определения простоты числа
- Функция поиска n-того числа Фибоначчи
- Функция проверки числа на четность (флаги)
- Функция определения НОД числа (математика)
- Процедура вывода таблицы умножения (вложенные циклы)
Возможные ошибки
- Невозвращение значения функции по одной из ветвей алгоритма
- Описание переменной цикла, используемого в процедуре, как глобальной
- Передача выходных параметров по значению
Массивы
Программы
- Ввод, заполнение случайными и вывод
- Заполнение арифметической прогрессией (рекуррентные соотношения)
- Заполнение степенями двойки (рекуррентные соотношения)
- Заполнение числами Фибоначчи (рекуррентные соотношения)
- Инвертирование массива
- Перемена местами значений в двух массивах
- Запись в другой массив элементов первого, удовлетворяющих определенному условию (добавление элемента в конец)
- Слияние отсортированных массивов в отсортированный
- Сдвиг элементов влево
- Сдвиг элементов вправо
- Удаление элемента
- Вставка элемента
- Подсчет количества элементов, удовлетворяющих условию (счетчики)
- Есть ли элемент, удовлетворяющий условию (флаги)
- Сортировка пузырьком (сортировка)
- Сортировка выбором (сортировка)
Возможные ошибки
- Выход за границы диапазона изменения индекса
- Затирание элементов при сдвиге
Матрицы
Программы
- Заполнение матрицы случайными числами (заполнение)
- Перемена местами двух строк
- Поиск минимумов в строках (минимумы-максимумы)
- Поиск максимумов в столбцах (минимумы-максимумы)
- Поиск сумм в строках (сумма)
- Поиск произведений в столбцах (произведение)
- Поиск элемента в матрице (поиск)
- Сумма чисел на главной диагонали (сумма)
- Сумма чисел на побочной диагонали (сумма)
- Заполнение нулями ниже/выше главной диагонали (диагонали матрицы)
- Заполнение нулями ниже/выше побочной диагонали (диагонали матрицы)
Возможные ошибки
- Перепутывание строк и столбцов
Записи
Программы
- Ввод и вывод данных о персонах (привыкание к синтаксису)
- Поиск в массиве персон по фамилии, возрасту (поиск)
- Подсчет количества в массиве персон по возрасту (счетчики)
- Подсчет в массиве точек количества точек, находящихся от начала координат на расстоянии не более R (минимумы-максимумы)
- Выбор из массива точек точки, наиболее близкой к началу координат (минимумы-максимумы)
- Сортировка массива персон по фамилии, возрасту (сортировка)
Строки и символы
Программы
- Определение кода по символу и символа по коду
- Вывод кодовой таблицы
- Сформировать строку из n символов c (конкатенация строк)
- Заменить все маленькие английские буквы в строке соответствующими большими
- Подсчет количества цифр в строке
- Есть ли в строке русские буквы (флаги)
- Просуммировать записанные в строке числа (преобразование строки в число)
- Переставить первую и вторую половины строки местами (вырезание подстроки, конкатенация)
- Подсчитать количество вхождений подстроки в строку
Возможные ошибки
- Ошибка при преобразовании строки в число
- Выход за границы строки
Файлы
Программы
- Создать текстовый файл с указанным текстом
- Вывести на экран текст файла текущей программы
- Записать в текстовый файл таблицу умножения n на n
- Скопировать один текстовый файл в другой построчно
- Просуммировать числа, записанные в файле
- Создать двоичный файл, содержащий данные числа
- Считать числа, содержащиеся в двоичном файле, и вывести их на экран
- Есть ли данное число в данном типизированном файле
- Возвести все числа в типизированном файле в квадрат
Возможные ошибки
- Использование readln и writeln для типизированных файлов
- Открытие файла без выполнения assign
- Попытка выполнить операцию чтения-записи с неоткрытым файлом
- Попытка открыть несуществующий файл
- Попытка считывания за концом файла