- •ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •Требования к оформлению лабораторных работ
- •1. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •13.1 План разработки алгоритмов и программ
- •Таблица 1.1 Результат ручной прокрутки после первого этапа
- •Таблица 1.2 Результат ручной прокрутки после первого этапа
- •Таблица 1.3 Итог выполнения ручной прокрутки
- •13.2 Перевод алгоритма в Паскаль-программу
- •13.3 Использование готовых алгоритмов при решении задач
- •Подсчет элементов, обладающих заданным свойством
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Задача 1. Подсчет ненулевых элементов
- •Задача 2. Подсчет элементов, абсолютная величина которых больше 7
- •Задача 3. Поиск элемента равного 7
- •Задача 5. Найти количество элементов массива больших среднего арифметического этих элементов
- •Задача 6. Поиск максимального элемента и подсчет частоты его появления в массиве
- •Задача 7. Поиск нулевого элемента
- •Задача 8. Поиск отрицательного числа с конца массива
- •13.4 Стандартная обработка двумерных массивов
- •Двумерный массив и его части
- •Индексы элементов двумерного массива
- •Индексы строки и столбца двумерного массива
- •Индексы диагоналей двумерного массива
- •Перенос простейших алгоритмов на двумерные массивы
- •13.5 Отладка и тестирование программ
- •2. СОЗДАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ СРЕДСТВАМИ DELPHI 7.0
- •13.1 Создание консольного приложения средствами Delphi
- •13.2 Структура программы в Delphi
- •Таблица 2.1
- •13.3 Введение в типы данных Delphi
- •13.4 Венгерская нотация
- •13.5 Отладка и тестирование программ средствами среды Delphi 7
- •3. ЛАБОРАТОРНАЯ РАБОТА №1 «ЛИНЕЙНЫЕ ПРОГРАММЫ»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Задания к лабораторной работе №1:
- •4. ЛАБОРАТОРНАЯ РАБОТА №2 «АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ»
- •13.3 Пояснения и примеры к лабораторной работе
- •13.2 Реализация алгоритмов с ветвлениями средствами C#
- •13.3 Задания к лабораторной работе №2
- •5. ЛАБОРАТОРНАЯ РАБОТА №3 «ОПЕРАТОР ВЫБОРА»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Реализация оператора выбора в языке C#
- •13.3 Задания к лабораторной работе №3
- •6. ЛАБОРАТОРНАЯ РАБОТА №4 «ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ»
- •13.1 Основные разновидности циклов
- •Цикл с постусловием
- •Цикл с предусловием
- •Цикл с параметром
- •Программное прерывание выполнения циклов
- •13.2 Примеры решения задач с использованием операторов цикла
- •Проверка корректности введенных данных
- •Решение задач с использованием диапазонов чисел
- •Решение задач полным перебором
- •Пояснения к задачам 18, 23, 24, 25:
- •13.3 Задания к лабораторной работе №4
- •7. ЛАБОРАТОРНАЯ РАБОТА №5 «РЯДЫ И ПОСЛЕДОВАТЕЛЬНОСТИ»
- •13.1 Примеры решения задач
- •Вычисление суммы n-первых членов ряда
- •Вычисление суммы n-первых членов последовательности, удовлетворяющих условию
- •Нахождение наименьшего номера члена последовательности, для которого выполняется некоторое условие
- •13.2 Задания к лабораторной работе №5
- •8. ЛАБОРАТОРНАЯ РАБОТА №6 «ТАБУЛИРОВАНИЕ ФУНКЦИЙ»
- •13.1 Пример решения задачи на табулирование функции
- •8.1.2 Организация перенаправления ввода-вывода средствами C#
- •13.2 Задания к лабораторной работе №6
- •9. ЛАБОРАТОРНАЯ РАБОТА №7 «ПОДПРОГРАММЫ»
- •13.1 Задания к лабораторной работе №7
- •13.2 Задания к лабораторной работе №8
- •13.1 Примеры и пояснения к лабораторной работе
- •13.2 Задания к лабораторной работе №9
- •Задания к лабораторной работе №10
- •13.1 Примеры работы со строками
- •Пример 13.2 Удалить из строки символ, указанный пользователем.
- •Пример 13.3 Удалить из строки лишних пробелов (пробелы в начале и в конце строки, между словами также должен быть один пробел).
- •Пример 13.4 Определить количество слов в заданном тексте.
- •13.2 Задания к лабораторной работе №11
- •13.1 Задания к лабораторной работе №12
- •13.1 Пояснения к работе
- •13.1 Задания к лабораторной работе №13
- •13.1 Пояснения к лабораторной работе №14
- •Формирование файла случайных чисел
- •Анализ файла случайных чисел
- •13.2 Задания к лабораторной работе №14
- •13.1 Примеры решения задач с использованием текстовых файлов
- •13.2 Задания к лабораторной работе №15
- •13.1 Задания к лабораторной работе №16
- •13.1 Задания к лабораторной работе №17
- •13.2 Задания к лабораторной работе №18
- •13.1 Задания к лабораторной работе №19
- •ПРИЛОЖЕНИЕ А
- •ПРИЛОЖЕНИЕ Б
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ОГЛАВЛЕНИЕ
5. ЛАБОРАТОРНАЯ РАБОТА №3 «ОПЕРАТОР ВЫБОРА»
Цель работы: Сформировать навыки по решению задач, используя оператор выбора. Научиться выделять из множества вариантов решения задачи группы значений, объединенных одинаковыми условиями.
13.1Пояснения и примеры к лабораторной работе
Спомощью этого оператора можно выбрать один вариант из любого их количества. Структура этого оператора в Pascal:
case S of
C1: lnstruction1; C2: lnstruction2;
. . .
CN: lnstructionN;
else
Instruction;
end;
В этой структуре:
S - выражение любого порядкового типа, значение которого вычисляется;
C1 ... CN - константы, с которыми сравнивается значение выражения S;
N
1При
N=1
2При
N=2
A
Рис. 5.1 Образец блок-схемы для оператора CASE
Instruction1 ... InstructionN - операторы, из которых выполняется тот, с константой которого совпадает значение выражения S;
Instruction - оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант C1 ... CN.
Ветвь оператора else является необязательной, на рис. 5.1 ветвь А показывает направление передачи управления при отсутствии else, при его наличии эта ветвь отсутствует. Если она отсутствует, и значение выражения S не совпадет ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора IF перед словом else точку с запятой можно ставить, хотя это и необязательно. Перед завершающим словом end также можно ставить точку с запятой, а можно и не ставить.
Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором, например: 1, 5, 10 .. 20:
46
Пример 5.1: Ввести номер времени года и вывести соответствующее ему
название на русском языке. |
Листинг 5.1 |
|||
|
Таблица 5.1 Система тестов |
|||
|
|
|
|
var N:byte; |
|
Номер |
Данные |
Результат |
|
|
теста |
|
begin |
|
|
номер |
|||
|
1. |
1 |
Зима |
Write (‘Введите номер времени |
|
2. |
3 |
Лето |
года:’); Readln(N); |
|
3. |
7 |
Ошибка |
case N of |
|
1: |
WriteLn('Зима'); |
Фрагмент блок-схемы алго- |
2: |
WriteLn('Весна'); |
ритма решения этой задачи смотри |
3: |
WriteLn('Лето'); |
|
4: |
WriteLn('Осень'); |
рис. 5.1 |
Else WriteLn('Ошибка'); |
|
|
|
end; |
|
end. |
13.2 Реализация оператора выбора в языке C#
switch (S)
{
case c1: оператор_с1; оператор_перехода; case c2: оператор_с1; оператор_перехода;
…
case cn: оператор_сn; оператор_перехода;
[default: оператор_default;
оператор_перехода;]
}
S - выражение значение которого вычисляется;
C1 ... CN - константы, с которыми сравнивается значение выражения S; В качестве оператора перехода допустимо использовать break, goto, return. Применение оператора break продемонстрировано в листинге 5.2, а
оператора goto в листинге 5.3. Приведем решение примера 5.1:
Листинг 5.2
static void solve()
{
Console.Write("Введите номер времени года: "); int number = int.Parse(Console.ReadLine()); switch (number)
{
case 1: Console.WriteLine("Зима");
47
break;
case 2: Console.WriteLine("Весна"); break;
case 3: Console.WriteLine("Лето"); break;
case 4: Console.WriteLine("Осень"); break;
default: Console.WriteLine("В году только 4 времени года!"); break;
}
}
Пример 5.2: Рассчитать стоимость покупки в зависимости от выбора пользователя (малое, среднее или большое количество кофе). Стоимость малого количества: 25 рублей, среднего: стоимость малого + 25, большого: стоимость малого + 50
Листинг 5.3
static void solve()
{
Console.WriteLine("Выберите требуемое количество кофе: 1=Малое 2=Среднее 3=Большое");
Console.Write("Введите ваш выбор: "); string s = Console.ReadLine();
int n = int.Parse(s); int cost = 0;
switch (n)
{
case 1:
cost += 25; break;
case 2:
cost += 25;
goto case 1; //переход к case 1 case 3:
cost += 50;
goto case 1; //переход к case 1 default:
Console.WriteLine("Неверный выбор. Нужно ввести 1,
2, или 3.");
break;
}
if (cost != 0)
{
Console.WriteLine("Стоимость вашего заказа {0} рублей.", cost);
}
}
48
13.3Задания к лабораторной работе №3
1.Написать программу, которая по номеру дня недели выдает в качестве результата количество уроков в вашем классе в этот день.
2.Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата.
3.Составить программу, которая по заданным году и номеру месяца m, определяет количество дней в этом месяце.
4.Для каждой введенной цифры (0 — 9) вывести соответствующее ей название на английском языке (0 — zero, 1 — one, 2 — two,... ).
5.Составить программу, которая по данному числу (1—12) выводит название соответствующего ему месяца.
6.Составить программу, позволяющую получить словесное описание школьных отметок (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»).
7.Пусть элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий элемент). Составить программу, которая по номеру элемента запрашивала бы его соответствующее значение и вычисляла бы площадь круга.
8.Пусть элементами прямоугольного равнобедренного треугольника
являются:
1)катет а;
2)гипотенуза b;
3)высота h, опущенная из вершины прямого угла на гипотенузу;
4)площадь S.
Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
9.Написать программу, которая по номеру месяца выдает название следующего за ним месяца (при m = 1 получаем февраль, 4 — май и т.д.).
10.Написать программу, которая бы по введенному номеру времени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.
11.В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю.
49
(Справка: 1996 г. — год Крысы — начало очередного цикла.)
12.Для целого числа k от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.
13.Написать программу, которая бы по введенному номеру единицы измерения (1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах.
14.Написать программу, которая по вводимому числу от 1 до 11 (номеру класса) выдает соответствующее сообщение «Привет, k-классник». Например, если k= 1, «Привет, первоклассник»; если k=4, «Привет, четвероклассник».
15.Написать программу, которая по введенному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то должно получиться 1 января — Новый год, 7 января — Рождество).
16.Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N=4k (где k — соответствующее частное); если остаток от деления на 4 равен 1 — N= 4k + 1; если остаток от деления на 4 равен 2 — N= 4k + 2; если остаток от деления на 4 равен 3 - N= 4k + 3. Например, 12 = 4 • 3, 22 = 4 • 5 + 2.
17.Имеется пронумерованный список деталей: 1) шуруп, 2) гайка, 3) винт, 4) гвоздь, 5) болт. Составить программу, которая по номеру детали выводит на экран ее название.
18.Составить программу, позволяющую по последней цифре Данного числа определить последнюю цифру куба этого числа.
19.Составить программу, которая для любого числа (максимум 6 знаков) печатает количество цифр в записи этого числа.
20.Даны два действительных положительных числа Х и У. Арифметические действия над числами пронумерованы (1 — сложение, 2 — вычитание, 3
—умножение, 4 — деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами.
21.Написать программу, которая бы по введенному номеру единицы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 -тонна, 5 — центнер) и массе М выдавала бы соответствующее значение массы в килограммах.
22.Пусть элементами равностороннего треугольника являются:
1) |
сторона А |
2) |
площадь S |
3) |
высота H |
4) |
радиус вписанной окружности R1 5) |
радиус описанной окруж- |
ности R2
Составить программу, которая по заданному номеру и значению соответ-
50
ствующего элемента вычисляла бы значение всех остальных элементов треугольника.
23.Составить программу для определения подходящего возраста кандидатуры для вступления в брак, используя следующее соображение: возраст девушки равен половине возраста мужчины плюс 7, возраст мужчины определяется соответственно как удвоенный возраст девушки минус 14.
24.Напишите программу, которая читает натуральное число в десятичном представлении, а на выходе выдает это же число в десятичном представлении и на естественном языке. Например,
7 семь
204 двести четыре
52 пятьдесят два
25.Вычислить номер дня в невисокосном году по заданным числу и
месяцу.
26.Определить по введенной букве к чему она относится английская заглавная буква, английская строчная буква, русская заглавная буква, русская строчная буква.
27.Определить по введенному символу к чему он относится: число, знак препинания, английская буква, русская буква, прочий символ.
28.По последней букве имени приблизительно определить пол челове-
ка.
29.По введенному объему данных на носителе (целое число) определить его тип: FD, CDR, DVD другой накопитель.
30.По введенному шестнадцатеричному значению определить соответствующий ему цвет: красный, синий, зеленый, желтый, маджента, белый, черный.
51