Программирование алгоритмов линейной структуры

Автор работы: Пользователь скрыл имя, 11 Марта 2013 в 22:29, контрольная работа

Краткое описание

Важнейшую роль в курсе информатики играет формирование у студентов алгоритмического стиля мышления, который выступает не только как стимулятор общего развития, но и позволяет ввести их в сложный мир новых информационных технологий. Без программирования развитие алгоритмического мышления практически невозможно, так как отсутствует возможность компьютерного эксперимента: проверки работоспособности разработанного алгоритма. Взаимодействие человека с ЭВМ носит характер общения, поэтому возникли и широко используются различные специальные языки программирования как средство общения человека с компьютером.

Прикрепленные файлы: 1 файл

мет_Паскаль_ч3.doc

— 418.00 Кб (Скачать документ)

- Exit – позволяет завершить работу текущего программного блока (программу, процедуру);

-   Halt(n) – позволяет завершить работу программы с кодом завершения n.

К операторам разветвляющейся  структуры относится также оператор выбора (варианта), позволяющий программировать сложные ветвления, когда имеется несколько (обычно равновероятных) вариантов действия (таблица D1).

 

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 - Блок-схема алгоритма и программа разветвленной структуры

 

      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 Составить программу  решения задачи, используя оператор  выбора

  1. Определить время года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
  2. Определить знаки координат точки по вводимому номеру квадранта. В случае если пользователь укажет недопустимый номер, повторить попытку ввода.
  3. Определить квартал текущего года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
  4. Вводится ответ на вопрос "Язык общения? русский (р) / английский (а)". Если введено "р", то вывести "Привет!", если введено "а", то вывести "Hello!". В остальных случаях вывести "Повторите ввод".
  5. Вводится ответ на вопрос "Продолжить работу? да (1) / нет (0)". Если введено "1", то вывести "Я готов к работе", если введено "0", то вывести "Работа завершена".
  6. Вводится целое число. Если введено "1", то вывести "понедельник". Если введено "2", то вывести "вторник" и т.д. В остальных случаях - "Повторите попытку ввода".
  7. Вводится целое число от 2 до 5. Если введено "2", то вывести "неудовлетворительно". Если введено "3", то вывести "удовлетворительно" и т.д. В остальных случаях - "Такой оценки не существует".
  8. Вводится символ. Если этот символ равен "***", то вывести "Осадки в виде снега". Если - ":::", то - "Осадки в виде дождя". В остальных случаях - "Безоблачно".
  9. Ввести целое число. Если введено "0", то вывести "незачет", если введено "1", то вывести "зачет". В остальных случаях вывести "Повторите ввод".
  10. По вводимому номеру вывести название ноты: 1-"до", 2-"ре", 3-"ми", 4-"фа", 5-"соль", 6-"ля", 7-"си". В остальных случаях - "Нота не определена".
  11. По вводимому номеру вывести название цвета: 1-"красный", 2-"оранжевый", 3-"желтый", 4-"зеленый", 5-"голубой", 6-"синий", 7-"фиолетовый". В остальных случаях - "Цвет не определен".
  12. По вводимому номеру вывести название времени года: 1-"зима", 2-"весна", 3-"лето", 4-"осень". В остальных случаях - "Время года не определено".
  13. Вывести название месяца, если вводится его номер. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
  14. Вводится целое число от 1 до 10. Если введено "1", то вывести "Средний возраст учеников - 7 лет". Если введено "2", то вывести "Средний возраст учеников - 8 лет" и т.д.
  15. Даны два числа. Ввести целое число n. Если n=1, то найти минимум этих двух чисел. Если n=2, то найти максимум этих чисел. В остальных случаях повторить ввод n.
  16. Вводится символ. Если этот символ равен "я", то вывести "январь". Если - "ф", то - "февраль". Если - "д", то - "декабрь". В остальных случаях - "Зимний месяц не определен".
  17. Вводится символ. Если этот символ равен "с", то вывести "сентябрь". Если - "о", то - "октябрь". Если - "н", то - "ноябрь". В остальных случаях - "Осенний месяц не определен".
  18. Вводится целое число n (1£n£5), выводится n звездочек (*). В остальных случаях повторить ввод n.
  19. По вводимому значению n (1£n£5) вывести наименование геометрической фигуры 1-"точка", 2-"прямая", 3-"треугольник", 4-"квадрат", 5-"пентагон". В остальных случаях повторить ввод n.
  20. Дано натуральное число n (1£n£10). Вывести фразу "Мы нашли n грибов (гриб, гриба), используя правильный падеж существительного "гриб".
  21. По вводимому номеру вывести название дня недели 1-"понедельник", 2-"вторник", 3-"среда", 4-"четверг", 5-"пятница", 6-"суббота", 7-"воскресенье". В остальных случаях повторить попытку ввода.
  22. По вводимому номеру вывести наименование пальцев руки 1-"мизинец", 2-"безымянный", 3-"средний", 4-"указательный", 5-"большой". В остальных случаях повторить попытку ввода.
  23. По вводимому номеру вывести результаты спортивных соревнований 1-"золотая медаль", 2-"серебряная медаль", 3-"бронзовая медаль", 4-"утешительный приз". В остальных случаях повторить попытку ввода.
  24. По вводимому номеру вывести наименование типов темперамента 1-"сангвиник", 2-"флегматик", 3-"меланхолик", 4-"холерик". В остальных случаях повторить попытку ввода.
  25. По вводимому номеру вывести наименование пяти чувств 1-"зрение", 2-"слух", 3-"обоняние", 4-"осязание", 5-"вкус". В остальных случаях повторить попытку ввода.
  26. В зависимости от количества участников вывести название музыкальных ансамблей 1-"соло", 2-"дуэт", 3-"трио", 4-"квартет", 5-"квинтет", 6-"сикстет", 7-"октет". В остальных случаях повторить попытку ввода.
  27. По вводимому номеру вывести наименование одного из факультетов АИЭС 1-"ТЭФ", 2-"ЭЭФ", 3-"ФРТС", 4-"ФЗО и ПС", 5-"ФДП". В остальных случаях повторить попытку ввода.
  28. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье". Если пользователь укажет недопустимый номер, то повторить попытку ввода.
  29. Написать программу, которая подводит итоги экзамена. При вводе кода 0 вывести "неявка"; 1 - "неудовлетворительно"; 2,3,4 -"удовлетворительно"; 5,6,7 - "хорошо"; 8,9 -"отлично"; 10 -"не допущен". В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
  30. Дано натуральное число 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

                               с вещественным параметром 


 

При использовании оператора цикла For-To для решения данной задачи выбрать х в качестве параметра цикла нельзя, так как это вещественная переменная, кроме того, интервал ее изменения и шаг, также вещественные числа. Поэтому для организации цикла используем дополнительный параметр i, который будет изменяться параллельно с х требуемое число раз. Для этого определим количество итераций (повторений) по формуле: , где m1 и m2 - начальное и конечное значение х, m3 – шаг. Так как значение N не всегда получается целым числом, в программе рекомендуется использовать функцию trunc(x), результатом которой является целое число, а аргументом - вещественное. Вычисления значения функции производятся в цикле. До организации цикла необходимо задать начальные значения  переменных для хранения суммы (S=0), количества (K=0) и произведения (P=1). Также необходимо задать начальное значение переменной (х=-5), а затем внутри цикла изменять х на величину шага (х := х + 0.5). Для накопления суммы и количества в теле цикла используется оператор присваивания типа счетчика, суть которого: последующее значение = предыдущее значение + текущее значение (S:=S+y и K:=K+1), а для накопления произведения используется идентичный оператор присваивания, но со знаком * в правой его части (P:=P*y).

 

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.

  1. Даны вещественное число X и натуральное число n. Вычислить произведение первых N сомножителей  S = sinX ´ sinX2 ´ sinX3 ´…´ sinXn.
  2. Дано целое число n. Вычислить .
  3. Дано целое число n. Вычислить  .
  4. Вычислить произведение первых n сомножителей .
  5. Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых   .
  6. Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых   .
  7. Даны числа b и n. Вычислить P = b´(b+1) ´ (b+2) ´ (b+3) ´…´ (b+n).
  8. Вычислить сумму первых N чисел натурального ряда.
  9. Вычислить произведение четных и нечетных первых N чисел натурального ряда.
  10. Вычислить сумму первых n слагаемых .
  11. Дано целое число n. Вычислить .
  12. Даны числа x и n. Вычислить .
  13. Даны числа b и n. Вычислить P = (b-n) + (b - (n-1)) + (b- (n-2)) +…+ (b-1).

Информация о работе Программирование алгоритмов линейной структуры