Программы для начинающих: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) |
||
Строка 145: | Строка 145: | ||
=== [[Строки и символы. Тексты программ|Программы]] === | === [[Строки и символы. Тексты программ|Программы]] === | ||
# [[Определение кода по символу и символа по коду]] | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.B0_.D0.BF.D0.BE_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D1.83_.D0.B8_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0_.D0.BF.D0.BE_.D0.BA.D0.BE.D0.B4.D1.83|Определение кода по символу и символа по коду]] | ||
# [[Преобразование цифрового символа в соответствующее однозначное число и обратно]] | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.9F.D1.80.D0.B5.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.86.D0.B8.D1.84.D1.80.D0.BE.D0.B2.D0.BE.D0.B3.D0.BE_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0_.D0.B2_.D1.81.D0.BE.D0.BE.D1.82.D0.B2.D0.B5.D1.82.D1.81.D1.82.D0.B2.D1.83.D1.8E.D1.89.D0.B5.D0.B5_.D0.BE.D0.B4.D0.BD.D0.BE.D0.B7.D0.BD.D0.B0.D1.87.D0.BD.D0.BE.D0.B5_.D1.87.D0.B8.D1.81.D0.BB.D0.BE_.D0.B8_.D0.BE.D0.B1.D1.80.D0.B0.D1.82.D0.BD.D0.BE|Преобразование цифрового символа в соответствующее однозначное число и обратно]] | ||
# [[Преобразование числа в строку и обратно]] | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.9F.D1.80.D0.B5.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.87.D0.B8.D1.81.D0.BB.D0.B0_.D0.B2_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D1.83_.D0.B8_.D0.BE.D0.B1.D1.80.D0.B0.D1.82.D0.BD.D0.BE|Преобразование числа в строку и обратно]] | ||
# [[Формирование строки из n одинаковых символов]] (конкатенация строк) | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.A4.D0.BE.D1.80.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B8_.D0.B8.D0.B7_n_.D0.BE.D0.B4.D0.B8.D0.BD.D0.B0.D0.BA.D0.BE.D0.B2.D1.8B.D1.85_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.BE.D0.B2|Формирование строки из n одинаковых символов]] (конкатенация строк) | ||
# [[Замена всех маленьких английских букв в строке соответствующими большими]] (цикл по символам строки) | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.97.D0.B0.D0.BC.D0.B5.D0.BD.D0.B0_.D0.B2.D1.81.D0.B5.D1.85_.D0.BC.D0.B0.D0.BB.D0.B5.D0.BD.D1.8C.D0.BA.D0.B8.D1.85_.D0.B0.D0.BD.D0.B3.D0.BB.D0.B8.D0.B9.D1.81.D0.BA.D0.B8.D1.85_.D0.B1.D1.83.D0.BA.D0.B2_.D0.B2_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B5_.D1.81.D0.BE.D0.BE.D1.82.D0.B2.D0.B5.D1.82.D1.81.D1.82.D0.B2.D1.83.D1.8E.D1.89.D0.B8.D0.BC.D0.B8_.D0.B1.D0.BE.D0.BB.D1.8C.D1.88.D0.B8.D0.BC.D0.B8|Замена всех маленьких английских букв в строке соответствующими большими]] (цикл по символам строки) | ||
# [[Сумма записанных в строке чисел]] (преобразование строки в число) | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.A1.D1.83.D0.BC.D0.BC.D0.B0_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B0.D0.BD.D0.BD.D1.8B.D1.85_.D0.B2_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B5_.D1.87.D0.B8.D1.81.D0.B5.D0.BB|Сумма записанных в строке чисел]] (преобразование строки в число) | ||
# [[Количество вхождений подстроки в строку]] | # [[%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8_%D0%B8_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B._%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC#.D0.9A.D0.BE.D0.BB.D0.B8.D1.87.D0.B5.D1.81.D1.82.D0.B2.D0.BE_.D0.B2.D1.85.D0.BE.D0.B6.D0.B4.D0.B5.D0.BD.D0.B8.D0.B9_.D0.BF.D0.BE.D0.B4.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B8_.D0.B2_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D1.83|Количество вхождений подстроки в строку]] | ||
=== [[Строки и символы. Возможные ошибки|Возможные ошибки]] === | === [[Строки и символы. Возможные ошибки|Возможные ошибки]] === |
Версия от 15:23, 19 января 2010
Основные идеи набора программ для начинающих
Начало
Программы
- HelloWorld
- Вычисление площади круга (использование констант)
- Вычисление A8 (промежуточные переменные)
- Вычисление расстояния между двумя точками на прямой (стандартные функции, abs)
- Вычисление гипотенузы по катетам (стандартные функции, sqrt)
- Бросание кубиков (стандартные функции, random)
- Перемена местами двух значений (базовые алгоритмы)
- Выделение цифр из двузначного числа (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 с помощью разных циклов (арифметическая прогрессия)
- Сумма и произведение введенных чисел (суммы)
- Вычисление n! (базовые алгоритмы)
- Вычисление an (базовые алгоритмы)
- Вывод цифр числа (div mod)
- Вывод букв английского алфавита (for)
- Числа Фибоначчи (рекуррентные последовательности)
- Минимум из введенных (минимумы-максимумы, базовые алгоритмы, обработка последовательностей)
- Алгоритм Евклида поиска НОД (математика, классические алгоритмы)
- Вывод таблицы умножения (вложенные циклы)
- Определение простоты числа (математика)
Возможные ошибки
- Неверный тип переменной цикла
- Изменение переменной цикла в теле цикла
- Использование одинаковой переменной цикла в заголовках вложенных циклов
- Неинициализированная переменная
- Зацикливание
- Переполнение
- Сравнение вещественных чисел на равенство
Процедуры и функции
Основная часть задач - создание оберток над известными алгоритмами
Программы
- Вычисление площади и периметра прямоугольника (параметры-значения и параметры-переменные)
- Табулирование функции
- Функция вычисления an
- Функция вычисления n!
- Функция, преобразующая цифру к ее словесному наименованию (case, функция)
- Функция проверки числа на четность
- Функция определения простоты числа (флаги)
- Функция вычисления n-того числа Фибоначчи
- Функция определения НОД числа (математика)
- Процедура вывода таблицы умножения (вложенные циклы)
Возможные ошибки
- Невозвращение значения функции по одной из ветвей алгоритма
- Описание переменной цикла, используемого в процедуре, как глобальной
- Передача выходных параметров по значению
Массивы
Программы
- Ввод и вывод
- Заполнение случайными числами
- Заполнение арифметической прогрессией (рекуррентные соотношения)
- Заполнение степенями двойки (рекуррентные соотношения)
- Заполнение числами Фибоначчи (рекуррентные соотношения)
- Инвертирование массива
- Максимальный элемент в массиве и его индекс (базовые алгоритмы, минимумы-максимумы)
- Минимальный четный элемент и его индекс (минимумы-максимумы, условный минимум)
- Запись в новый массив элементов другого массива, удовлетворяющих определенному условию (базовые алгоритмы, добавление элемента в конец)
- Слияние отсортированных массивов в отсортированный (барьерный элемент, классические алгоритмы)
- Сдвиг элементов влево (базовые алгоритмы)
- Сдвиг элементов вправо (базовые алгоритмы)
- Удаление элемента
- Вставка элемента
- Подсчет количества элементов, удовлетворяющих условию (базовые алгоритмы, счетчики)
- Есть ли элемент, удовлетворяющий условию (базовые алгоритмы, флаги)
- Сортировка пузырьком (сортировка, классические алгоритмы)
- Сортировка выбором (сортировка, классические алгоритмы)
Возможные ошибки
- Попытка вывести массив не поэлементно, а целиком
- Использование записи a[i] вне цикла
- Выход за границы диапазона изменения индекса
- Затирание элементов при сдвиге
Матрицы
Программы
- Заполнение матрицы случайными числами и вывод (заполнение)
- Перемена местами двух строк
- Поиск минимумов в строках (минимумы-максимумы)
- Поиск максимумов в столбцах (минимумы-максимумы)
- Поиск сумм в строках (сумма)
- Поиск произведений в столбцах (произведение)
- Наличие нуля в матрице (поиск)
- Сумма чисел на главной диагонали (сумма)
- Сумма чисел на побочной диагонали (сумма)
- Заполнение нулями ниже/выше главной диагонали (диагонали матрицы)
- Заполнение нулями ниже/выше побочной диагонали (диагонали матрицы)
Возможные ошибки
Записи
Программы
- Ввод и вывод данных о персонах (привыкание к синтаксису)
- Поиск в массиве персон по фамилии (поиск)
- Подсчет количества персон с данным возрастом (счетчики)
- Выбор из массива точек точки, наиболее близкой к началу координат (минимумы-максимумы)
- Сортировка массива персон по возрасту (сортировка)
Строки и символы
Программы
- Определение кода по символу и символа по коду
- Преобразование цифрового символа в соответствующее однозначное число и обратно
- Преобразование числа в строку и обратно
- Формирование строки из n одинаковых символов (конкатенация строк)
- Замена всех маленьких английских букв в строке соответствующими большими (цикл по символам строки)
- Сумма записанных в строке чисел (преобразование строки в число)
- Количество вхождений подстроки в строку
Возможные ошибки
Файлы
Программы
- Создать текстовый файл с указанным текстом
- Вывести на экран текст файла текущей программы
- Записать в текстовый файл таблицу умножения n на n
- Скопировать один текстовый файл в другой построчно
- Просуммировать числа, записанные в файле
- Создать типизированный файл, содержащий данные числа
- Считать числа, содержащиеся в типизированном файле, и вывести их на экран
- Есть ли данное число в данном типизированном файле
- Возвести все числа в типизированном файле в квадрат
Возможные ошибки
- Использование readln и writeln для типизированных файлов
- Открытие файла без выполнения assign
- Попытка выполнить операцию чтения-записи с неоткрытым файлом
- Попытка открыть несуществующий файл
- Попытка считывания за концом файла