Программирование алгоритмов линейной структуры
Автор работы: Пользователь скрыл имя, 11 Марта 2013 в 22:29, контрольная работа
Краткое описание
Важнейшую роль в курсе информатики играет формирование у студентов алгоритмического стиля мышления, который выступает не только как стимулятор общего развития, но и позволяет ввести их в сложный мир новых информационных технологий. Без программирования развитие алгоритмического мышления практически невозможно, так как отсутствует возможность компьютерного эксперимента: проверки работоспособности разработанного алгоритма. Взаимодействие человека с ЭВМ носит характер общения, поэтому возникли и широко используются различные специальные языки программирования как средство общения человека с компьютером.
Прикрепленные файлы: 1 файл
мет_Паскаль_ч3.doc
— 418.00 Кб (Скачать документ)- Exit – позволяет завершить работу текущего программного блока (программу, процедуру);
- Halt(n) – позволяет завершить работу программы с кодом завершения n.
К операторам разветвляющейся
структуры относится также опер
2.2 Примеры решений задач разветвленной структуры
2.2.1 Вычислить |
На рисунке 2.1 представлена блок-схема и программа для решения данной задачи. В блоке 4 производится ввод значения х из какого-либо одного заданного интервала. В блоках 5 и 6 осуществляется проверка условий принадлежности х к одному из интервалов. Если х<0 (блок 5), то вычисления производятся по формуле в блоке 7, если нет, то проверяется условие х=0. Если это условие выполнено, то для вычисления у используется блок 8, иначе - блок 9. Независимо от того, по какой формуле осуществлено вычисление, следующее действие - вывод вычисленного значения у. Блоки 2, 3, 11, 12 используются для организации многократного ввода различных значений х, что называется зацикливанием. Блоки 5, 6, 12 реализуются в программе операторами условного перехода, а блоки 3, 7, 8, 9, 11 – операторами присваивания. В качестве аналогов блоков 2, 4, 10 в программе используются процедуры ввода-вывода.
Program primer2_1; Label m1; Var i, n:integer; x, y:real; Begin Write(‘Введи N’); Read(n); i:=1; m1: Write(‘Введи x’); Read(x); If x<0 then y:=exp(x) else if(x>=0)and(x<=1) then y:=0 else y:=sin (x); write (‘Y=’,y:10:3); i:=i+1; if i<=n then goto m1 end. |
Рисунок 2.1 - Блок-схема алгоритма и программа разветвленной структуры
- В старояпонском календаре принят 60-летний цикл, состоящий из пяти 12-летних малых циклов. Малые циклы обозначаются названиями цвета. Внутри каждого малого цикла годы носят названия животных. Определить название заданного года нашей эры по японскому календарю. Так как в данном случае блок-схема получается достаточно громоздкой, ниже приведена только программа решения задачи.
Program primer2_2;
Var year, i, k : integer;
Begin
Write ('Введите год'); Read (year); Write (‘- the year of the ‘);
i := (year-3) mod 12; k := (3010 – year) mod 60 div 12;
Case k of
0: writе ('green ');
1: write ('red ');
2: write ('yellow ');
3: write ('white ');
4: write ('black ');
end;
Case i of
1: Writeln ('rat'); {крыса}
2: Writeln ('bull'); {бык}
3: Writeln ('tiger'); {тигр}
4: Writeln ('rabbit'); {кролик}
5: Writeln ('dragon'); {дракон}
6: Writeln ('snake'); {змея}
7: Writeln ('horse'); {лошадь}
8: Writeln ('sheep'); {овца}
9: Writeln ('monkey'); {обезьяна}
10: Writeln ('hen'); {петух}
11: Writeln ('dog'); {собака}
0: Writeln ('pig'); {свинья}
end;
end.
2.3 Варианты заданий
2.3.1 Составить блок-схему
и программу разветвляющейся
структуры для вычисления
1 |
2 |
3 |
4 |
|
5 |
6 |
7 |
8 |
|
9 |
10 |
11 |
12 |
|
13 |
14 |
15 |
16 |
|
17 |
18 |
19 |
20 |
|
21 |
22 |
|
23 |
24 |
|
25 |
26 |
27 |
28 |
|
29 |
30 |
2.3.2 Составить программу решения задачи, используя оператор выбора
- Определить время года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
- Определить знаки координат точки по вводимому номеру квадранта. В случае если пользователь укажет недопустимый номер, повторить попытку ввода.
- Определить квартал текущего года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
- Вводится ответ на вопрос "Язык общения? русский (р) / английский (а)". Если введено "р", то вывести "Привет!", если введено "а", то вывести "Hello!". В остальных случаях вывести "Повторите ввод".
- Вводится ответ на вопрос "Продолжить работу? да (1) / нет (0)". Если введено "1", то вывести "Я готов к работе", если введено "0", то вывести "Работа завершена".
- Вводится целое число. Если введено "1", то вывести "понедельник". Если введено "2", то вывести "вторник" и т.д. В остальных случаях - "Повторите попытку ввода".
- Вводится целое число от 2 до 5. Если введено "2", то вывести "неудовлетворительно". Если введено "3", то вывести "удовлетворительно" и т.д. В остальных случаях - "Такой оценки не существует".
- Вводится символ. Если этот символ равен "***", то вывести "Осадки в виде снега". Если - ":::", то - "Осадки в виде дождя". В остальных случаях - "Безоблачно".
- Ввести целое число. Если введено "0", то вывести "незачет", если введено "1", то вывести "зачет". В остальных случаях вывести "Повторите ввод".
- По вводимому номеру вывести название ноты: 1-"до", 2-"ре", 3-"ми", 4-"фа", 5-"соль", 6-"ля", 7-"си". В остальных случаях - "Нота не определена".
- По вводимому номеру вывести название цвета: 1-"красный", 2-"оранжевый", 3-"желтый", 4-"зеленый", 5-"голубой", 6-"синий", 7-"фиолетовый". В остальных случаях - "Цвет не определен".
- По вводимому номеру вывести название времени года: 1-"зима", 2-"весна", 3-"лето", 4-"осень". В остальных случаях - "Время года не определено".
- Вывести название месяца, если вводится его номер. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
- Вводится целое число от 1 до 10. Если введено "1", то вывести "Средний возраст учеников - 7 лет". Если введено "2", то вывести "Средний возраст учеников - 8 лет" и т.д.
- Даны два числа. Ввести целое число n. Если n=1, то найти минимум этих двух чисел. Если n=2, то найти максимум этих чисел. В остальных случаях повторить ввод n.
- Вводится символ. Если этот символ равен "я", то вывести "январь". Если - "ф", то - "февраль". Если - "д", то - "декабрь". В остальных случаях - "Зимний месяц не определен".
- Вводится символ. Если этот символ равен "с", то вывести "сентябрь". Если - "о", то - "октябрь". Если - "н", то - "ноябрь". В остальных случаях - "Осенний месяц не определен".
- Вводится целое число n (1£n£5), выводится n звездочек (*). В остальных случаях повторить ввод n.
- По вводимому значению n (1£n£5) вывести наименование геометрической фигуры 1-"точка", 2-"прямая", 3-"треугольник", 4-"квадрат", 5-"пентагон". В остальных случаях повторить ввод n.
- Дано натуральное число n (1£n£10). Вывести фразу "Мы нашли n грибов (гриб, гриба), используя правильный падеж существительного "гриб".
- По вводимому номеру вывести название дня недели 1-"понедельник", 2-"вторник", 3-"среда", 4-"четверг", 5-"пятница", 6-"суббота", 7-"воскресенье". В остальных случаях повторить попытку ввода.
- По вводимому номеру вывести наименование пальцев руки 1-"мизинец", 2-"безымянный", 3-"средний", 4-"указательный", 5-"большой". В остальных случаях повторить попытку ввода.
- По вводимому номеру вывести результаты спортивных соревнований 1-"золотая медаль", 2-"серебряная медаль", 3-"бронзовая медаль", 4-"утешительный приз". В остальных случаях повторить попытку ввода.
- По вводимому номеру вывести наименование типов темперамента 1-"сангвиник", 2-"флегматик", 3-"меланхолик", 4-"холерик". В остальных случаях повторить попытку ввода.
- По вводимому номеру вывести наименование пяти чувств 1-"зрение", 2-"слух", 3-"обоняние", 4-"осязание", 5-"вкус". В остальных случаях повторить попытку ввода.
- В зависимости от количества участников вывести название музыкальных ансамблей 1-"соло", 2-"дуэт", 3-"трио", 4-"квартет", 5-"квинтет", 6-"сикстет", 7-"октет". В остальных случаях повторить попытку ввода.
- По вводимому номеру вывести наименование одного из факультетов АИЭС 1-"ТЭФ", 2-"ЭЭФ", 3-"ФРТС", 4-"ФЗО и ПС", 5-"ФДП". В остальных случаях повторить попытку ввода.
- Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье". Если пользователь укажет недопустимый номер, то повторить попытку ввода.
- Написать программу, которая подводит итоги экзамена. При вводе кода 0 вывести "неявка"; 1 - "неудовлетворительно"; 2,3,4 -"удовлетворительно"; 5,6,7 - "хорошо"; 8,9 -"отлично"; 10 -"не допущен". В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
- Дано натуральное число n (1 £ n £ 10). Вывести фразу "n рублей (рубль, рубля), используя правильный падеж существительного "рубль".
2.4 Контрольные вопросы
1 Какие логические
отношения используются в
2 Какие функции выполняет оператор условного перехода?
3 Чем отличаются полная и краткая формы оператора условного перехода?
4 Как изображается
на блок-схеме оператор
5 Какую функцию выполняет
оператор безусловного
6 Как изображается
на блок-схеме оператор
7 Какие особенности характерны для оператора выбора?
8 Как можно изобразить на блок-схеме оператор выбора?
Лабораторная работа №3. Программирование алгоритмов циклической структуры
Цель работы – ознакомление с особенностями программирования алгоритмов циклической структуры.
3.1 Алгоритмы циклической структуры. Операторы цикла
Алгоритм, в котором предусмотрено многократное выполнение одной и той же последовательности действий, называется алгоритмом циклической структуры, а эта последовательность – циклом. Циклический алгоритм позволяет существенно сократить объем программы. Цикл можно организовать двумя способами:
- с помощью счетчика и условия перехода (см. пример 2.2.1);
- с помощью оператора цикла.
В Паскале существует несколько операторов цикла. Оператор цикла представляет собой единую синтаксическую конструкцию, в которой можно выделить три основные части: заголовок цикла, тело цикла, заключительную строку. Заголовок цикла образуют ключевое слово и управляющая фраза, задающая способ управления повторениями. Заключительную строку составляет ключевое слово, заканчивающееся знаком “;”. Тело задает действия, которые повторяются в соответствии с правилами, заданными управляющей фразой. Если число повторений известно заранее (до начала повторений), то в такой ситуации лучше воспользоваться оператором цикла с параметром For-To или For-Downto (оператор цикла с фиксированным числом повторений). В остальных случаях следует использовать операторы цикла с предусловием While-Do или постусловием Repeat-Until.
Оператор цикла с параметром имеет две модификации For-To и For-Downto и следующие ограничения:
- i, m1, m2 могут быть только переменными целого типа;
- параметр i не может изменяться внутри цикла.
Все операторы цикла (For-To, For-Downto, While-Do и Repeat-Until) приведены в таблице D1. Общим для всех перечисленных операторов цикла является то, что циклы, организованные с их помощью, содержат обязательные компоненты: задание начального значения параметра цикла; тело цикла; задание шага изменения параметра цикла; проверку на выход из цикла.
Для операторов While и Repeat изменение параметра цикла по какому-либо закону в теле цикла обязательно.
При программировании алгоритмов циклической структуры часто используются приемы накапливания сумм, произведения, количества:
Накапливание суммы |
до цикла |
S = 0 |
в цикле |
S=S+элемент |
Накапливание произведения |
P = 1 |
P=P*элемент | ||
Накапливание количества |
K = 0 |
K=K+1 |
3.2 Примеры алгоритмов и программ циклической структуры
3.2.1 Вычислить все значения функции Y=A*K2, если К меняется от 1 до 10 с шагом 1. Решить задачу несколькими способами (на рисунках 3.1, 3.2, 3.3 и 3.4 показаны все способы решения задачи).
Program Primer3_1; var k: integer; a, y: real; begin read (a); for k := 1 to 10 do begin y := a * sqr(k); writeln(’K=’,k:2,’Y=’,y:10:3) end end. | |
Рисунок 3.1 – Пример решения задачи с использованием оператора For-To | |
Program Primer3_2; var k: integer; a, y: real; begin read (a); for k := 10 downto 1 do begin y := a * sqr(k); writeln(’K=’,k:2,’Y=’,y:10:3) end end. | |
Рисунок 3.2 – Пример решения задачи с использованием оператора For-Downto | |
Program primer3_3; var k:integer; a,y: real; begin read (a); k:=1; while k<=10 do begin y := a * sqr(k); writeln(’K=’,k:2,’Y=’,y:9:3); k := k + 1 end end. | |
Рисунок 3.3 – Пример решения задачи с использованием оператора While-Do | |
Program primer3_4; var k:integer; a,y: real; begin read (a); k:=1; repeat y := a * sqr(k); writeln(’K=’,k:2,’Y=’,y:9:3); k := k + 1 until k > 10 end. | |
Рисунок 3.4 – Пример решения задачи с использованием оператора Repeat-Until | |
3.2.2 Вычислить значения функции для х, меняющегося в интервале от –5 до 7 с шагом 0,5. Найти количество (К) значений у(х) равных нулю, сумму (S) положительных значений у(х) и произведение (P) отрицательных значений у(х). Решить задачу, используя, оператор For-To.
Блок-схема и программа решения задачи представлены на рисунке 3.5.
Program primer3_5; var S, P, y, x:real; K, i:integer; begin K := 0; S := 0; P := 1; N := trunc((7+5)/0.5+1); x := -5; for i := 1 to N do begin y := x*sin(x)-exp(x); writeln(’x=’, x:4:1,’y=’, y:10:3); if y = 0 then K := K+1 else if y > 0 then S := S+y else P := P*y; x := x+0.5; end; writeln(K, S, P) end. | |
Рисунок 3.5 – Пример решения задачи с использованием цикла FOR-TO с вещественным параметром | |
При использовании оператора цикла
3.3 Варианты заданий
Решить задачу согласно варианту тремя способами, т.е. с использованием операторов цикла For-To (или For-Downto), While-Do и Repeat-Until.
1 Вычислить сумму четных и нечетных первых N чисел натурального ряда.
2 Дано целое число N. Вычислить P=N!=1´2´3´…´N.
3 Даны числа a и n. Вычислить P = a´(a-n) ´ (a-2n) ´ (a-3n) ´…´ (a-n2).
4 Вычислить произведение первых n сомножителей .
5 Вычислить произведение четных и нечетных первых N чисел натурального ряда.
6 Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых S = sinX + sinX2 + sinX3 +…+ sinXn.
- Даны вещественное число X и натуральное число n. Вычислить произведение первых N сомножителей S = sinX ´ sinX2 ´ sinX3 ´…´ sinXn.
- Дано целое число n. Вычислить .
- Дано целое число n. Вычислить .
- Вычислить произведение первых n сомножителей .
- Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых .
- Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых .
- Даны числа b и n. Вычислить P = b´(b+1) ´ (b+2) ´ (b+3) ´…´ (b+n).
- Вычислить сумму первых N чисел натурального ряда.
- Вычислить произведение четных и нечетных первых N чисел натурального ряда.
- Вычислить сумму первых n слагаемых .
- Дано целое число n. Вычислить .
- Даны числа x и n. Вычислить .
- Даны числа b и n. Вычислить P = (b-n) + (b - (n-1)) + (b- (n-2)) +…+ (b-1).