Практикум по курсу Основы программирования

Материал из Вики ИТ мехмата ЮФУ
Версия от 11:02, 27 июля 2009; Bravit (обсуждение | вклад) (Использование операторов цикла)

Перейти к: навигация, поиск

Содержание

Первый семестр

Простейший ввод/вывод, оператор присваивания, вычисление значения выражения

Рекомендации к выполнению

а) Следует уделять внимание оформлению собственных решений (пустые строки, отступы, комментарии), ориентируясь на предоставленные образцы.

б) Переменные следует объявлять непосредственно перед их использованием (переменные для исходных данных в блоке ввода данных, вспомогательные переменные — в блоке вычислений).

в) Решения большинства заданий из этого пункта имеют следующую структуру:

  1. Ввод исходных данных
  2. Вычисление результата
  3. Вывод результата

Блоки решения можно выделять пустыми строками и сопровождать комментариями.

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>.

14. Даны длины сторон треугольника. Вычислите его площадь, пользуясь формулой Герона <math>S=\sqrt{p(p-a)(p-b)(p-c)}</math>, где p — полупериметр.

15. Дана температура в градусах Цельсия, вычислите соответствующую ей температуру в градусах Фаренгейта. Шкалы Цельсия и Фаренгейта связаны соотношением <math>t^{\circ}C = \frac{5}{9}(t^{\circ}F-32)</math>.

16. Вычислите значение функции y = 3x6 – 6x2 – 7 для нескольких заданных x. Воспользуйтесь вспомогательной переменной.

17. Вычислите значение функции y = 4(x–3)6 – 7(x–3)3 + 2 для нескольких заданных x. Воспользуйтесь вспомогательной переменной для (x–3)3.

18. Вычислите длину окружности и площадь круга заданного радиуса. Используйте константу (const Pi=3.14159265;) для числа π.

19. Даны радиусы двух концентрических окружностей. Вычислите площадь кольца, заключенного между ними.

Операции с целыми числами

  1. Определить возраст человека в годах по возрасту, заданному в месяцах.
  2. Определить, сколько месяцев осталось до дня рождения человека, если известен его возраст в месяцах.
  3. Вычислить первую и вторую цифру заданного двузначного целого числа.
  4. Вычислить сумму цифр заданного двузначного числа.
  5. Определить последнюю цифру заданного целого числа.
  6. Вычислить сумму цифр заданного трехзначного числа.
  7. Даны две цифры, построить соответствующее двузначное число.
  8. Даны три цифры, построить соответствующее трехзначное число.

Логические операции, условный оператор

Рекомендации к выполнению

а) Есть два способа проверки четности и нечетности. В первом способе вычисляется остаток от деления на 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. Даны три числа. Найти сумму двух наибольших из них.

Использование операторов цикла

Простейшие задачи на использование циклов for и while

  1. Дано целое число N. Выведите N символов '*'.
  2. Даны два целых числа A и B (A < B). Выведите в порядке возрастания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.
  3. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.
  4. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, …, 10 кг конфет.
  5. Проверить, является ли заданное число степенью тройки. Указание: пока число делится на три, нужно делить его на три, а после этого проверить оставшееся значение, если останется единица, то число является степенью тройки.
  6. Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, …, 1 кг конфет.
  7. Даны два числа. Выведите квадраты всех чисел, расположенных между A и B, включая сами эти числа.
  8. Определите наибольшее целое число, квадрат которого не превосходит заданное число.
  9. Определите наименьшее целое число, квадрат которого больше заданного числа.
  10. Определить количество цифр заданного целого числа
  11. Вычислить сумму цифр заданного целого числа
  12. Вычислить произведение цифр заданного целого числа

Суммирование конечных числовых последовательностей

Рекомендации к выполнению

а) Отладочная печать

б) Пошаговое выполнение программы

в) Слежение за значениями переменных


Вычисление рекуррентных числовых последовательностей

Вычисления с заданной точностью

Обработка последовательностей чисел

Вложенные циклы

Функции и основы тестирования

Процедуры, передача параметров

Модули

Массивы

Записи

Графика

Второй семестр

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

Обработка файлов

Указатели и динамическая память, списочные структуры данных

Рекурсия

Деревья

Использование классов стандартной библиотеки

Использование контейнерных классов .NET

Объектно-базированное программирование

Чтение и реализация UML-диаграмм

Генерация и обработка исключений

Наследование и полиморфизм