Практикум по курсу Основы программирования
Содержание
- 1 Первый семестр
- 1.1 Простейший ввод/вывод, оператор присваивания, вычисление значения выражения
- 1.2 Операции с целыми числами
- 1.3 Логические операции, условный оператор
- 1.4 Использование операторов цикла
- 1.5 Функции и основы тестирования
- 1.6 Процедуры, передача параметров
- 1.7 Модули
- 1.8 Массивы
- 1.9 Записи
- 1.10 Графика
- 2 Второй семестр
Первый семестр
Простейший ввод/вывод, оператор присваивания, вычисление значения выражения
1. Рассмотрите пример, создайте файл с этой программой и запустите ее на выполнение:
// Программа, печатающая приветствие - это комментарий к программе
program Hello;
begin
Writeln('Привет, мир');
end.
2. Создайте файл и сохраните его с именем name.pas. В этом файле напишите программу, выводящую ваше имя и фамилию.
3. Изучите пример, демонстрирующий использование вещественных переменных:
// Использование вещественных переменных
begin
// Объявление переменной с одновременным присваиванием значения
var a:real := 10.1;
// Вывод значения переменной
Writeln('a = ', a);
// Присваивание переменной нового значения
a := 5;
// Увеличение значения переменной
a += 0.6;
// Вывод значения переменной
Writeln('a = ', a);
end.
4. Объявите вещественную переменную a со значением 1.5. Увеличьте ее в три раза и выведите новое значение. Объявите переменную b и присвойте ей удвоенное значение переменной a, выведите ее значение. Обнулите значение переменной a и вновь выведите ее значение. Вычислите сумму значений переменных a и b.
5. Рассмотрите примеры с вычислением периметра квадрата и периметра и длины гипотенузы прямоугольного треугольника:
// Вычисление периметра квадрата по заданной стороне
begin
Writeln('Введите длину стороны квадрата:');
// Объявление переменной для хранения длины стороны
var a: real;
// Ввод длины стороны
Read(a);
// Вычисление периметра
var P: real := 4 * a;
Writeln('Периметр P = ', P);
end.
// Вычисление гипотенузы и периметра прямоугольного треугольника по заданным катетам
begin
Writeln('Введите длины катетов (два числа, разделенные пробелом):');
// Объявление переменных для хранения катетов
var a, b: real;
Read(a, b);
// Тип переменной c определяется автоматически, как результат вычислений
// sqrt - функция вычисления квадратного корня
var c := sqrt(a*a + b*b);
Writeln('Гипотенуза c = ', c);
// Вычисление периметра треугольника
var P := a + b + c;
Writeln('Периметр P = ', P);
end.
6. Напишите программу, вычисляющую периметр и площадь прямоугольника по заданным длинам сторон.
7. Вычислите синус и косинус угла, заданного в радианах.
8. Вычислите значение выражения по заданным a, b и c: <math>\frac{a+b}{a-b}+\sqrt{\frac{c}{2}}</math>.
9. Вычислите значение логарифма числа 1024 по основанию 2, пользуясь функцией ln, вычисляющей натуральный логарифм заданного числа, и формулой: <math>\log_a b = \frac{\ln b}{\ln a}</math>.
10. Известна скорость лодки и пройденный ею путь. Вычислите время движения лодки.
11. Вычислите значение выражения: <math>\frac{x+\sin x}{y-\sin z} + \ln(x+\sin x)</math>.
12. Вычислите длину окружности и площадь круга заданного радиуса.
13. Найти расстояние между двумя точками с заданными координатами <math>(x_1, y_1)</math> и <math>(x_2, y_2)</math> на плоскости.
Расстояние вычисляется по формуле <math>d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}</math>.
Операции с целыми числами
- Определить возраст человека в годах по возрасту, заданному в месяцах.
- Определить, сколько месяцев осталось до дня рождения человека, если известен его возраст в месяцах.
- Вычислить первую и вторую цифру заданного двузначного целого числа.
- Вычислить сумму цифр заданного двузначного числа.
- Определить последнюю цифру заданного целого числа.
- Вычислить сумму цифр заданного трехзначного числа.
- Даны две цифры, построить соответствующее двузначное число.
- Даны три цифры, построить соответствующее трехзначное число.
Логические операции, условный оператор
Рекомендации к выполнению
а) Есть два способа проверки четности и нечетности. В первом способе вычисляется остаток от деления на 2 и сравнивается с нулем. Если остаток равен нулю, то число четное, если не равен, то нечетное.
if a mod 2 <> 0 then
Writeln('Число четное')
else
Writeln('Число нечетное');
Второй способ заключается в использовании стандартной функции odd, возвращающей истинное значение, если переданное ей число является нечетным. Для проверки четности достаточно добавить операцию not.
if not odd(a) then
Writeln('Число четное')
else
Writeln('Число нечетное');
Второй способ обычно более предпочтителен.
б) Если в задаче требуется определить истинность некоторого утверждения, то следует выводить логическое значение (True или False). Например, при определении нечетности каждого из двух заданных чисел лучше вместо
if odd(a) and odd(b) then
Write('да')
else
Write('нет');
написать так:
// Переменная по умолчанию будет иметь тип boolean
var numbersAreOdd := odd(a) and odd(b);
Write(numbersAreOdd);
1. Дано целое число a. Если оно является четным, увеличить его в два раза. Вывести значение числа a.
2. Определить номер наибольшего из двух заданных чисел a и b.
3. Даны точки A, B и C, расположенные на числовой оси. Определить координату точки, расположенную ближе всего к точке A.
4. Вычислить значение условного выражения для заданного значения x:
<math>y = \begin{cases} -x, & x \le\; 0 \\ x^2, & 0 < x < 2 \\ 4, & x \ge\; 0 \end{cases}</math>
5. Определить, является ли заданное число четным.
6. Определить, являются ли оба заданных числа четными.
7. Определить номер координатной четверти, в которой находится точка с координатами (x, y).
8. Определить, можно ли составить треугольник из трех отрезков заданной длины.
9. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.
10. Даны два числа. Вывести вначале большее, а затем меньшее из них.
11. Даны три числа. Найти сумму двух наибольших из них.