Программы для начинающих: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Строка 53: Строка 53:
# n! (базовые алгоритмы)
# n! (базовые алгоритмы)
# a^n (базовые алгоритмы)
# a^n (базовые алгоритмы)
# Вывод степеней двойки (геометрическая прогрессия)
# Вывод цифр числа (div mod)
# Вывод цифр числа (div mod)
# Вывод букв английского алфавита (for)
# Вывод букв английского алфавита (for)
# Числа Фибоначчи (рекуррентные последовательности)
# Числа Фибоначчи (рекуррентные последовательности)
# Минимум из введенных (минимумы-максимумы, базовые алгоритмы)
# Минимум из введенных (минимумы-максимумы, базовые алгоритмы, обработка последовательностей)
# Поиск заданного числа среди введенных (поиск, базовые алгоритмы)
# Сумма четных среди введенных (суммы, обработка последовательностей)
# Защита от ввода неверного значения с помощью repeat
# Защита от ввода неверного значения с помощью repeat
# Алгоритм Евклида поиска НОД (математика, классические алгоритмы)
# Алгоритм Евклида поиска НОД (математика, классические алгоритмы)

Версия от 21:20, 15 ноября 2009

Основные идеи набора алгоритмов для начинающих

Начало

Программы

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

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

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

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

Программы

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

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

  • Неверная расстановка begin end
  • Отсутствие 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. Вывод цифр числа (div mod)
  7. Вывод букв английского алфавита (for)
  8. Числа Фибоначчи (рекуррентные последовательности)
  9. Минимум из введенных (минимумы-максимумы, базовые алгоритмы, обработка последовательностей)
  10. Сумма четных среди введенных (суммы, обработка последовательностей)
  11. Защита от ввода неверного значения с помощью repeat
  12. Алгоритм Евклида поиска НОД (математика, классические алгоритмы)
  13. Является ли число степенью 2 (2 варианта: делением и умножением)
  14. Вывод таблицы умножения (вложенные циклы)
  15. Определение простоты числа (математика)

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

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

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

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

Программы

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

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

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

Массивы

Программы

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

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

  • Попытка вывести массив не поэлементно, а целиком
  • Использование записи a[i] вне цикла
  • Выход за границы диапазона изменения индекса
  • Затирание элементов при сдвиге

Матрицы

Программы

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

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

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

Записи

Программы

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

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

Программы

  1. Определение кода по символу и символа по коду
  2. Вывод кодовой таблицы
  3. Формирование строки из n одинаковых символов (конкатенация строк)
  4. Заменить все маленькие английские буквы в строке соответствующими большими (цикл по символам строки)
  5. Подсчет количества цифр в строке (цикл по символам строки)
  6. Есть ли в строке английские буквы (цикл по символам строки, флаги)
  7. Просуммировать записанные в строке числа (преобразование строки в число)
  8. Перестановка слов в строке из двух слов (вырезание подстроки, конкатенация)
  9. Количество вхождений подстроки в строку
  1. Преобразование числа в строку и обратно, быстрый способ преобразование цифрового символа в соответствующее однозначное число и обратно
  2. Разные способы инвертирования строки
  3. Проверка того, что строка представляет собой запись целого числа; вещественного числа
  4. Нахождение последнего вхождения подстроки в строку (варианты, использующие различные стандартные функции)
  5. Удаление из строки определенных символов или вставка в строку символов перед/после требуемых (просмотр строки с конца)
  6. Разные способы удаления из строки лишних пробелов
  7. Разбиение строки на отдельные слова (в предположении, что слова разделяются пробелами, или при наличии набора разделителей)
  8. Изменение регистра букв в строке
  9. Удаление из начала/конца строки требуемого символа (с учетом того, что в результате строка может оказаться пустой)
  10. Распознавание в строке начальных и конечных символов слов, при условии, что в начале и конце строки могут находиться пробелы, а слова разделяются одним или несколькими пробелами или другими разделителями
  11. Проверка правильности расстановки скобок в строке (ситуация, когда используются только круглые скобки, и ситуация, когда имеется несколько видов скобок)

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

  • Ошибка при преобразовании строки в число
  • Выход за границы строки

Файлы

Программы

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

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

  • Использование readln и writeln для типизированных файлов
  • Открытие файла без выполнения assign
  • Попытка выполнить операцию чтения-записи с неоткрытым файлом
  • Попытка открыть несуществующий файл
  • Попытка считывания за концом файла

Ссылки

Алгоритмы средней сложности