Программы для начинающих
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Основные идеи набора алгоритмов для начинающих
Начало
Программы
- HelloWorld
- Вычисление периметра квадрата (переменные, присваивание)
- Вычисление площади круга (использование констант)
- Вычисление A8 (промежуточные переменные)
- Вычисление расстояния между двумя точками на прямой (стандартные функции, abs)
- Вычисление гипотенузы по катетам (стандартные функции, sqrt)
- Бросание кубиков (стандартные функции, random)
- Перемена местами двух значений (базовые алгоритмы)
- Выделение цифр из двузначного и трехзначного числа (div mod)
- Формирование числа из цифр (div mod)
Возможные ошибки
- Неописанная переменная
- Отсутствующая ;
- Несовместимость типов при присваивании
- Отсутствие закрывающего апострофа литеральной строки
- Ошибки расстановки запятых и апострофов при выводе строк и выражений
- Ошибка ввода
- Ошибка неинициализированной переменной
- Деление на 0
- Корень из отрицательного числа
Условный оператор и оператор выбора
Программы
- Минимум из двух значений (базовые алгоритмы)
- Определение четности числа (повторение div mod, стандартная функция odd)
- Состоит ли двузначное число из одинаковых цифр (выделение цифр из числа)
- Упорядочение двух значений по возрастанию (составной оператор, неполная форма условного)
- Проверка числа на двузначность (and)
- Наименование сезона по номеру месяца (вложенные if, цепочечные if, or)
- Определение четверти, в которой находится точка (вложенные if, математика)
- Нахождение корней квадратного уравнения (математика)
- Словесное наименование дня недели (case)
- Определение того, является ли символ цифрой или буквой (case)
Возможные ошибки
- Неверная расстановка begin end
- Отсутствие 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-того числа Фибоначчи
- Функция определения НОД числа (математика)
- Процедура вывода таблицы умножения (вложенные циклы)
Возможные ошибки
- Невозвращение значения функции по одной из ветвей алгоритма
- Описание переменной цикла, используемого в процедуре, как глобальной
- Передача выходных параметров по значению
Массивы
Программы
- Ввод, заполнение случайными и вывод
- Заполнение арифметической прогрессией (рекуррентные соотношения)
- Заполнение степенями двойки (рекуррентные соотношения)
- Заполнение числами Фибоначчи (рекуррентные соотношения)
- Инвертирование массива
- Максимальный элемент в массиве и его индекс (базовые алгоритмы, минимумы-максимумы)
- Минимальный четный элемент и его индекс (минимумы-максимумы, условный минимум)
- Запись в новый массив элементов другого массива, удовлетворяющих определенному условию (базовые алгоритмы, добавление элемента в конец)
- Слияние отсортированных массивов в отсортированный (барьерный элемент, классические алгоритмы)
- Сдвиг элементов влево (базовые алгоритмы)
- Сдвиг элементов вправо (базовые алгоритмы)
- Удаление элемента
- Вставка элемента
- Подсчет количества элементов, удовлетворяющих условию (базовые алгоритмы, счетчики)
- Есть ли элемент, удовлетворяющий условию (базовые алгоритмы, флаги)
- Сортировка пузырьком (сортировка, классические алгоритмы)
- Сортировка выбором (сортировка, классические алгоритмы)
Возможные ошибки
- Попытка вывести массив не поэлементно, а целиком
- Использование записи a[i] вне цикла
- Выход за границы диапазона изменения индекса
- Затирание элементов при сдвиге
Матрицы
Программы
- Заполнение матрицы случайными числами и вывод (заполнение)
- Перемена местами двух строк
- Поиск минимумов в строках (минимумы-максимумы)
- Поиск максимумов в столбцах (минимумы-максимумы)
- Поиск сумм в строках (сумма)
- Поиск произведений в столбцах (произведение)
- Поиск элемента в матрице (поиск)
- Сумма чисел на главной диагонали (сумма)
- Сумма чисел на побочной диагонали (сумма)
- Заполнение нулями ниже/выше главной диагонали (диагонали матрицы)
- Заполнение нулями ниже/выше побочной диагонали (диагонали матрицы)
- Удаление строки/столбца с заданным номером
- Вставка новой строки/столбца перед/после заданной строки/столбца (или дублирование строки/столбца)
- Нумерация диагоналей, параллельных главной/побочной, использование массива с характеристиками каждой диагонали (например, с суммой значений)
- Сортировка строк/столбцов по некоторому ключу, связанному со строками/столбцами
- Анализ элементов, соседних с данным элементом матрицы, в частности, нахождение локальных минимумов/максимумов (использование обрамляющих матрицу строк и столбцов для единообразной обработки)
Возможные ошибки
- Перепутывание строк и столбцов
Записи
Программы
- Ввод и вывод данных о персонах (привыкание к синтаксису)
- Поиск в массиве персон по фамилии, возрасту (поиск)
- Подсчет количества в массиве персон по возрасту (счетчики)
- Подсчет в массиве точек количества точек, находящихся от начала координат на расстоянии не более R (минимумы-максимумы)
- Выбор из массива точек точки, наиболее близкой к началу координат (минимумы-максимумы)
- Сортировка массива персон по фамилии, возрасту (сортировка)
Строки и символы
Программы
- Определение кода по символу и символа по коду
- Вывод кодовой таблицы
- Формирование строки из n одинаковых символов (конкатенация строк)
- Заменить все маленькие английские буквы в строке соответствующими большими (цикл по символам строки)
- Подсчет количества цифр в строке (цикл по символам строки)
- Есть ли в строке английские буквы (цикл по символам строки, флаги)
- Просуммировать записанные в строке числа (преобразование строки в число)
- Перестановка слов в строке из двух слов (вырезание подстроки, конкатенация)
- Количество вхождений подстроки в строку
- Преобразование числа в строку и обратно, быстрый способ преобразование цифрового символа в соответствующее однозначное число и обратно
- Разные способы инвертирования строки
- Проверка того, что строка представляет собой запись целого числа; вещественного числа
- Нахождение последнего вхождения подстроки в строку (варианты, использующие различные стандартные функции)
- Удаление из строки определенных символов или вставка в строку символов перед/после требуемых (просмотр строки с конца)
- Разные способы удаления из строки лишних пробелов
- Разбиение строки на отдельные слова (в предположении, что слова разделяются пробелами, или при наличии набора разделителей)
- Изменение регистра букв в строке
- Удаление из начала/конца строки требуемого символа (с учетом того, что в результате строка может оказаться пустой)
- Распознавание в строке начальных и конечных символов слов, при условии, что в начале и конце строки могут находиться пробелы, а слова разделяются одним или несколькими пробелами или другими разделителями
- Проверка правильности расстановки скобок в строке (ситуация, когда используются только круглые скобки, и ситуация, когда имеется несколько видов скобок)
Возможные ошибки
- Ошибка при преобразовании строки в число
- Выход за границы строки
Файлы
Программы
- Создать текстовый файл с указанным текстом
- Вывести на экран текст файла текущей программы
- Записать в текстовый файл таблицу умножения n на n
- Скопировать один текстовый файл в другой построчно
- Просуммировать числа, записанные в файле
- Создать типизированный файл, содержащий данные числа
- Считать числа, содержащиеся в типизированном файле, и вывести их на экран
- Есть ли данное число в данном типизированном файле
- Возвести все числа в типизированном файле в квадрат
Возможные ошибки
- Использование readln и writeln для типизированных файлов
- Открытие файла без выполнения assign
- Попытка выполнить операцию чтения-записи с неоткрытым файлом
- Попытка открыть несуществующий файл
- Попытка считывания за концом файла