Программы для начинающих

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

Замечания перед прочтением

Данный документ - набросок минимального множества задач, необходимых для изучения указанных тем. Впоследствии для всех задач, содержащихся в этом списке, будут приведены тексты программ на языке Паскаль.

Данный документ МОЖНО править. Любому, кто на это отважится :) Разумеется, если будут конструктивные предложения. Если правка будет неудачной, мы безболезненно откатим документ к старой версии.

Основные идеи данного набора задач

  1. Разумная минимальность покрытия, обеспечивающая изучение и закрепление тем
  2. Приводятся более или менее конструктивные алгоритмы, а не алгоритмы, иллюстрирующие ту или иную конструкцию языка. В идеале в этих задачах не должно быть особенностей языка вовсе. Тем самым, соблюдается идея обучения на примерах
  3. Повторение алгоритмов из предыдущих пунктов в алгоритмах следующих пунктов
  4. Включение в список большинства известных простых алгоритмов
  5. В каждом алгоритме предполагается указать принадлежность к той или иной категории или подкатегории. Кажжый алгоритм может принадлежать к нескольким категориям
  6. В каждой теме в конце будет также набор ошибок (компиляции, выполнения), которые можно совершить при решении задач из этой темы. Сейчас в скобках после некоторых алгоритмов указаны некоторые категории

Начало

  1. HelloWorld
  2. Ввод-вычисление-вывод
  3. Вычисление A^8 (Использование промежуточных переменных)
  4. Вычисление расстояния между двумя точками на прямой (стандартные функции, abs)
  5. Вычисление гипотенузы по катетам (стандартные функции, sqrt)
  6. Генерация случайного числа (стандартные функции, random)
  7. Перемена местами двух значений
  8. Выделение цифр из двузначного числа (div mod)
  9. Выделение цифр из трехзначного числа (div mod)

Возможные ошибки

  • Неописанная переменная
  • Непоставленная ;
  • Несовместимость типов при присваивании
  • Ошибка ввода
  • Ошибка отсутствия ввода
  • Ошибка неинициализированной переменной
  • Корень из отрицательного числа
  • Деление на 0

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

  1. Минимум из двух значений
  2. Определение четности числа (повторение div mod)
  3. Состоит ли двузначное число из одинаковых цифр (выделение цифр из числа)
  4. Упорядочение двух значений по возрастанию (составной оператор, неполная форма условного)
  5. Проверка числа на двузначность (and)
  6. Проверка числа на равенство одному из значений (or)
  7. Определение антонима слова (вложенные if) - может, заменить: что-то на цепочечные if
  8. Определение четверти, в которой находится точка (вложенные if, математика)
  9. Нахождение корней квадратного уравнения (математика)
  10. Словесное наименование дня недели (case)
  11. Определение того, является ли символ цифрой или буквой
  12. Выполнение действия в зависимости от значения переменной

Возможные ошибки

  • Неверная расстановка begin end
  • Неверная расстановка скобок в сложном логическом выражении

Циклы

  1. Вывод последовательностей 1 2 3 4 5 и 5 4 3 2 1 (с помощью разных циклов)
  2. Вывод последовательностей 1 3 5 7 9 и 10 8 6 4 2 (с помощью разных циклов)
  3. Сумма двузначных чисел
  4. n!
  5. a^n
  6. Вывод степеней двойки
  7. Вывод цифр числа (div mod)
  8. Вывод букв английского алфавита (for)
  9. Табулирование функции
  10. Числа Фибоначчи (рекуррентные последовательности)
  11. Минимум из введенных
  12. Номер первого максимума из введенных
  13. Номер последнего максимума из введенных
  14. Поиск заданного числа среди введенных
  15. Минимальное четное из введенных (условный минимум)
  16. Защита от ввода неверного значения с помощью repeat
  17. Алгоритм Евклида поиска НОД
  18. Является ли число степенью 2 (2 варианта: делением и умножением)
  19. Вывод таблицы умножения (вложенные циклы)
  20. Определение простоты числа
  21. Разложение числа на простые множители
  22. Нахождение корня функции методом половинного деления (наверное, это - не для начинающих)

Возможные ошибки

  • Неверный тип переменной цикла
  • Изменение переменной цикла в теле цикла
  • Использование одинаковой переменной цикла в заголовках вложенных циклов
  • Зацикливание
  • Переполнение
  • Сравнение вещественных чисел на равенство

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

Основная часть задач - создание оберток над известными алгоритмами

  1. Вычисление площади и периметра прямоугольника (параметры-значения и параметры-переменные)
  2. Создание своей функции и ее табулирование
  3. Функция вычисления a^n
  4. Функция вычисления n!
  5. Вывод четверти по координатам точки (if, функция)
  6. Вывод слова, обозначающего данную цифру (case, функция)
  7. Функция определения простоты числа
  8. Функция поиска n-того числа Фибоначчи
  9. Функция проверки числа на четность (флаги)
  10. Функция определения НОД числа (математика)
  11. Процедура вывода таблицы умножения (вложенные циклы)

Возможные ошибки

  • Невозвращение значения функции по одной из ветвей алгоритма
  • Описание переменной цикла, используемого в процедуре, как глобальной
  • Передача выходных параметров по значению

Массивы

  1. Ввод, заполнение случайными и вывод
  2. Заполнение арифметической прогрессией (рекуррентные соотношения)
  3. Заполнение степенями двойки (рекуррентные соотношения)
  4. Заполнение числами Фибоначчи (рекуррентные соотношения)
  5. Инвертирование массива
  6. Перемена местами значений в двух массивах
  7. Запись в другой массив элементов первого, удовлетворяющих определенному условию (добавление элемента в конец)
  8. Слияние отсортированных массивов в отсортированный
  9. Сдвиг элементов влево
  10. Сдвиг элементов вправо
  11. Удаление элемента
  12. Вставка элемента
  13. Подсчет количества элементов, удовлетворяющих условию (счетчики)
  14. Есть ли элемент, удовлетворяющий условию (флаги)
  15. Сортировка пузырьком (сортировка)
  16. Сортировка выбором (сортировка)

Возможные ошибки

  • Выход за границы диапазона изменения индекса
  • Затирание элементов при сдвиге

Матрицы

  1. Заполнение матрицы случайными числами (заполнение)
  2. Перемена местами двух строк
  3. Поиск минимумов в строках (минимумы-максимумы)
  4. Поиск максимумов в столбцах (минимумы-максимумы)
  5. Поиск сумм в строках (сумма)
  6. Поиск произведений в столбцах (произведение)
  7. Поиск элемента в матрице (поиск)
  8. Сумма чисел на главной диагонали (сумма)
  9. Сумма чисел на побочной диагонали (сумма)
  10. Заполнение нулями ниже/выше главной диагонали (диагонали матрицы)
  11. Заполнение нулями ниже/выше побочной диагонали (диагонали матрицы)

Возможные ошибки

  • Перепутывание строк и столбцов

Записи

  1. Ввод и вывод данных о персонах (привыкание к синтаксису)
  2. Поиск в массиве персон по фамилии, возрасту (поиск)
  3. Подсчет количества в массиве персон по возрасту (счетчики)
  4. Подсчет в массиве точек количества точек, находящихся от начала координат на расстоянии не более R (минимумы-максимумы)
  5. Выбор из массива точек точки, наиболее близкой к началу координат (минимумы-максимумы)
  6. Сортировка массива персон по фамилии, возрасту (сортировка)

Строки и символы

  1. Определение кода по символу и символа по коду
  2. Вывод кодовой таблицы
  3. Сформировать строку из n символов c
  4. Заменить все маленькие английские буквы в строке соответствующими большими
  5. Подсчет количества цифр в строке
  6. Есть ли в строке русские буквы
  7. Просуммировать записанные в строке числа
  8. Переставить первую и вторую половины строки местами
  9. Подсчитать количество вхождений подстроки в строку

Возможные ошибки

  • Ошибка при преобразовании строки в число

Файлы

  1. Создать текстовый файл с указанным текстом
  2. Вывести на экран текст файла текущей программы
  3. Записать в текстовый файл таблицу умножения n на n
  4. Скопировать один текстовый файл в другой построчно
  5. Просуммировать числа, записанные в файле
  6. Создать двоичный файл, содержащий данные числа
  7. Считать числа, содержащиеся в двоичном файле, и вывести их на экран
  8. Есть ли данное число в данном типизированном файле
  9. Возвести все числа в типизированном файле в квадрат