Разработка алгоритмов разветвляющейся структуры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Разработка алгоритмов разветвляющейся структуры



ПРАКТИЧЕСКОЕ ЗАНЯТИЕ№2

Разработка алгоритмов разветвляющейся структуры

Цель работы:

1. Научиться использовать в алгоритме условный оператор.

2. Закрепить навыки работы с переменными простых типов.

Краткие теоретические сведения

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

Для программирования разветвляющихся алгоритмов в ЯП Pascal можно использовать три оператора:

1. условный оператор (оператор условного перехода);

2. оператор выбора (оператор варианта);

3. оператор безусловного перехода.

Условный оператор (оператор условного перехода)

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.

 


                 Да                      Нет

 

 

Формат условного оператора:

IF <условие> THEN <оператор1> ELSE <оператор2>;

где IF, THEN, ELSE - зарезервированные слова («если», «то», «иначе»)

  <условие> - выражение логического типа

  <оператор 1>,<оператор 2> - операторы языка Турбо Паскаль, в том числе составные

Составной оператор - это последовательность из произвольного числа операторов, отделенных друг от друга точками с запятой, и ограниченная операторными скобками Begin... end.

Выполнение условного оператора. Сначала определяется значение логического выражения, записанного в условии; в результате этого получается значение булевского типа. Если логическое выражение принимает значение TRUE (истина, т.е. условие верно), то выполняется <оператор1>, записанный после слова THEN; после чего управление передается на оператор, следующий за условного оператором (т.е. после <оператор2>, стоящего за ELSE). Если логическое выражение принимает значение FALSE (ложь, т.е. условие неверно), то выполняется <оператор2>, записанный после слова ELSE (иначе).

Неполная форма условного оператора:

IF <условие> THEN <оператор1>;

Часть ELSE <оператор 2> может быть опущена. Тогда при значении TRUE логического выражения, стоящего в условии, выполняется <оператор1>, в противном случае <оператор1> пропускается.

Контрольные вопросы:

 

1. Что такое программа (алгоритм) ветвящейся структуры?

2. Формат условного оператора.

3. Правила выполнения условного оператора.

4. Формат условного оператора в неполной форме.

5. Правила выполнения условного оператора в неполной форме.

Задание

Разработать программу, вычисляющую значение функции f для произвольного значения х

Порядок выполнения работы

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

2. Наберите текст программы.

3. Выполните отладку программы.

4. Запустите программу на выполнение и проверьте результаты тестовых примеров.

Содержание отчета:

1. постановка задачи

2. список используемых переменных

3. математическая модель

4. блок-схема алгоритма с указанием типа алгоритма

5. текст программы на Turbo Pascal

6. тестовый пример

7. протокол работы программы

Пример оформления отчета:

Постановка задачи.

Разработать программу, вычисляющую значение функции f для произвольного значения х

Список используемых переменных.

Исходные данные: x (вещественное число)

Результат: f (вещественное число)

Тип алгоритма: разветвляющийся.

Блок-схема алгоритма:                    

                                    

                                    

                                    

                                    

                                    

        Да            Нет                                  

                                    

                                    

                                    

                                    

 

 

Текст программы на Pascal:

Program vetvlenie;                          

Var x,f:real;                              

Begin                                        

Write(‘Ведите х =’);             {процедура вывода сообщения}

Readln(x);                             {процедура ввода значения х}

If x>0 then f:=sqr(x) else f:=sqr(x)*x;  {условный оператор – вычисление значения f по условию}

Writeln(‘f(‘,x:5:2,’)=’,f:7:2); {процедура вывода результата}

End.                                          

Тестовый пример: 

1. х=2, f=4 (так как 2>0)

2. x= –2, f= –8 (так как -2 0)

Протокол работы программы:

Ведите х =2

f(2.00)= 4.00

Ведите х = –2

f(-2.00)= –8.00

 


Варианты индивидуальных заданий

  Вариант 1 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 2 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 3 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 4 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 5 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 6 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 7 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 8 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 9 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  

  Вариант 10 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 11 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 12 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 13 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 14 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 15 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 16 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 17 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 18 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  

  Вариант 19 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 20 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 21 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 22 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 23 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 24 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 25 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 26 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 27 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  

  Вариант 28 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 29 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 30 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:    
  Вариант 31 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 32 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 33 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  
  Вариант 34 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 35 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:     Вариант 36 1. Составить программу вычисления функции:   2. Составить программу вычисления функции:  

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №3

Оператор цикла с параметром

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

Оператор цикла FOR можно использовать в двух вариантах.

Форматы оператора цикла с параметром:

Вариант 1 (с увеличением счетчика):

For <параметр>:=<начальное значение> to <конечное значение> do

<оператор>;

Вариант 2 (с уменьшением счетчика):

For <параметр>:=<начальное значение> downto <конечное значение> do

<оператор>;

For, to, downto, do - зарезервированные слова («для», «до», «уменьшая до», «делать»)

For … do – заголовок цикла

<параметр> – параметр цикла - переменная любого порядкового типа;

< начальное значение> – выражение того же типа, что и параметр;

<конечное значение> – выражение того же типа, что и параметр;

<оператор>   - тело цикла. Тело цикла может быть произвольным оператором Turbo Pascal, в том числе составным.

Repeat

    <тело цикла>

until <условие выхода из цикла>;

 

repeat, until – зарезервированные слова («повторять», «до тех пор, пока»)

repeat – заголовок цикла

<тело цикла> – произвольный оператор Паскаля (может быть составным)

<условие выхода из цикла> – выражение логического типа

Задание 1

Составить программу вычисления функции y =  с использованием операторов цикла с предусловием..

Порядок выполнения работы

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

2. Загрузите Pascal.

3. Наберите текст программы.

4. Выполните отладку программы.

5. Запустите программу на выполнение и проверьте результаты тестовых примеров.

Содержание отчета:

8. постановка задачи

9. список используемых переменных

10. блок-схема алгоритма с указанием типа алгоритма

11. текст программы на Pascal

12. тестовый пример

13. протокол работы программы

Пример оформления отчета:

Постановка задачи.

Составить программу вычисления функции y = с использованием оператора цикла с параметром.

Список используемых переменных.

Исходные данные: N – количество слагаемых (повторений) – целого типа

Результат: y – функция – вещественного типа.

Промежуточные переменные: i – номер слагаемого (повторения) – целого типа.

Тип алгоритма: циклический.

Блок-схема:    

                                                               

                                                                    

                                                                    

                                                                    

                                                                    

                                                                    

                                    

                                                                    

                                   

     

                                   

                                                                    

                                                                    

                                                                    

                          Нет                    Да       

                                                                    

                                                                    

 

 

Текст программы на Pascal:

Program Example1;                        

Var N,y,i:integer;

Begin                                        

Write(‘Введите количество слагаемых N=’);

Readln(N);                                

y:=0;                          {значение суммы у принимает значение 0}

For i:=1 to N do        {цикл для вычисления суммы, выполняемый N раз}

y:=y+sqr(i);          {тело цикла, выполняемое N раз – вычисление суммы}

Writeln(‘Сумма y=’,y); 

End.

Тестовый пример:

Если N=4, тогда y=30

Протокол работы программы:

Введите количество слагаемых N=4

Сумма у= 30

 

Задание 2

Составить программу, которая определяет, является ли целое четырёхзначное число "перевёртышем", т.е. записывается одинаково слева направо и справа налево.

Список используемых переменных.

Исходные данные: N – вводимое целое число;

                      M – дубликат числа n;

Результат: текстовое сообщение

Промежуточные переменные:

 i – параметр цикла для создания «перевертыша» (счетчик количества цифр от 1 до 4)

А – число, записанное цифрами числа n в обратном порядке;

К – переменная для запоминания последней цифры числа М.

Типы используемых алгоритмов: циклический, ветвящийся.

Текст программы на Pascal:

Program Example2;

Var M,N,A,i:integer;  

Begin

Writeln(‘Введите целое число: ’);

Readln(N);        

M:=N; A:=0;

{создание числа А, записанного цифрами числа N в обратном порядке}  

for i:=1 to 4 do {цикл для записи числа в обратном порядке, выполняемый 4 раза}

begin

K:= M mod 10; {в переменную К записывается последняя цифра числа М}

A:=A*10+K; {к числу А «дописывается» справа последняя цифра числа М}  

M:=M div 10 {из числа M отбрасывается последняя цифра}

end;

if A=N then writeln (‘Число ‘,N:6,’ является перевертышем’)

     else writeln (‘Число ‘,N:6,’ не является перевертышем’);

End.          

Тестовый пример:

1. Если N=12321, тогда N является перевертышем

2. Если N=3994, тогда N не является перевертышем

 

i N K A M
--- 3994 --- 0 3994
1   3994 mod 10 = 4 0*10+4 = 4 399
2   399 mod 10 = 9 4*10+9 = 49 39
3   39 mod 10 = 9 49*10+9 = 499 3
4   3 mod 10 = 3 499*10+3 = 4993 0

 

Протокол работы программы:

Введите целое число: 12321

Число 12321 является перевертышем

Введите целое число: 1234

Число 1234 не является перевертышем

 


Варианты индивидуальных заданий

  Вариант 1 1. Составить программу вычисления функции 2. Найти количество трехзначных чисел, кратных числу 23.   Вариант 2 1. Составить программу вычисления функции 2. Определить сумму двухзначных чисел, сумма цифр которых больше заданного числа.     Вариант 3 1. Составить программу вычисления функции 2. Найти количество четных целых чисел из промежутка от А до В.  
  Вариант 4 1. Составить программу вычисления функции 2. Найти все двузначные числа, в которых есть заданная цифра.     Вариант 5 1. Составить программу вычисления функции 2. Найти сумму целых положительных чисел из промежутка от Х до У, кратных 4.     Вариант 6 1. Составить программу вычисления функции 2. Определить количество двухзначных чисел, произведение цифр которых равно заданному числу N.  
  Вариант 7 1. Составить программу вычисления функции 2. Найти все двузначные числа, квадрат суммы цифр которых делится на 15.     Вариант 8 1. Составить программу вычисления функции 2. Найти сумму трехзначных чисел, кратных числу 6.     Вариант 9 1. Составить программу вычисления функции 2. Найти произведение целых чисел из промежутка от Х до У, кратных 8.  

 

  Вариант 10 1. Составить программу вычисления функции 2. Определить количество трехзначных чисел, кратных заданному числу.     Вариант 11 1. Составить программу вычисления функции 2. Найти количество двузначных чисел, сумма цифр которых больше числа 10.     Вариант 12 1. Составить программу вычисления функции 2. Даны натуральные числа A и B. Найти сумму четных чисел, меньших A*B.
  Вариант 13 1. Составить программу вычисления функции 2. Даны натуральные числа M и N. Найти все числа, кратные числу N, меньшие M*N.     Вариант 14 1. Составить программу вычисления функции 2. Найти количество двузначных чисел, произведение цифр которых кратно заданному числу.     Вариант 15 1. Составить программу вычисления функции 2. Даны натуральные числа X и Y. Найти количество нечетных чисел, меньших X+Y.
  Вариант 16 1. Составить программу вычисления функции 2. Найти сумму нечетных целых чисел из промежутка от M до N.     Вариант 17 1. Составить программу вычисления функции 2. Найти количество двузначных чисел, кратных сумме двух заданных натуральных чисел.     Вариант 18 1. Составить программу вычисления функции 2. Найти произведение целых чисел из промежутка от A до B, кратных числу А.  

  Вариант 19 1. Составить программу вычисления функции 2. Найти количество трехзначных чисел, в которых есть цифры больше 7.     Вариант 20 1. Составить программу вычисления функции 2. Найти сумму трехзначных чисел, кратных произведению двух заданных натуральных чисел.     Вариант 21 1. Составить программу вычисления функции 2. Найти количество двухзначных чисел, в которых разность цифр по модулю равна 11.
  Вариант 22 1. Составить программу вычисления функции 2. Найти количество целых чисел из промежутка от X до Y, кратных заданному числу.     Вариант 23 1. Составить программу вычисления функции 2. Найти все двухзначные числа, кратные заданному числу.   Вариант 24 1. Составить программу вычисления функции 2. Найти сумму двухзначных чисел, в которых есть цифры, меньше заданной.  
  Вариант 25 1. Составить программу вычисления функции 2. Найти произведение целых чисел из промежутка от A до B, кратных числу 6.     Вариант 26 1. Составить программу вычисления функции 2. Найти количество двухзначных чисел, в которых произведение цифр меньше 15.     Вариант 27 1. Составить программу вычисления функции 2. Найти сумму двухзначных чисел, в которых есть цифры больше 7.  

  Вариант 28 1. Составить программу вычисления функции 2. Найти произведение двухзначных чисел, в которых есть цифра 1.     Вариант 29 1. Составить программу вычисления функции 2. Найти сумму двухзначных чисел, кратных сумме двух заданных целых чисел.   Вариант 30 1. Составить программу вычисления функции 2. Найти количество трехзначных чисел, в которых последняя цифра больше 6.  
  Вариант 31 1. Составить программу вычисления функции 2. Найти сумму трехзначных чисел, в которых последняя цифра равна заданной.   Вариант 32 1. Составить программу вычисления функции 2. Найти количество трехзначных чисел, кратных произведению двух заданных целых чисел.     Вариант 33 1. Составить программу вычисления функции 2. Найти все двухзначные числа, в которых сумма цифр больше 7.  

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №4

Функция

Function <имя ф-ции> (n-формальные параметры): <тип возвращаемого результата>;

Begin

<имя ф-ции>:=<имя ф-ции> (n-1);

End;

Процедура

Procedure <имя п-ры> (n-формальные параметры);

Begin

<имя п-ры> (n-1);

End;

2. Косвенная рекурсия

До вызова процедура или функция должна быть обязательно описана, для этого используется опережающее объявление: процедура или функция содержит описание только своего заголовка, вслед за которым ставится зарезервированное слово forward. 

 

Var

<имя переменной>: <тип переменной>;

Procedure <имя п-ры 2> (n-формальные параметры); forward;

Procedure <имя п-ры 1> (n-формальные параметры);

Begin

<имя п-ры 2> (n-1);

End;

Procedur e <имя п-ры 2> (n-формальные параметры);

Begin

<имя п-ры 1> (n-1);

End;

 

Отчет о выполнении

Отчет выполняется в электронном виде. Если заданий несколько, то повторить всю систему отчета необходимое количество раз.

Текст задачи
 
Спецификация программы
 
Листинг алгоритма исполняемого файла
 
Скриншот интерфейса запускного файла программы
 

Контрольные вопросы:

1. Что понимается под структурным программированием?

2. Что называется подпрограммой?

3. Что такое «рекурсия»?

4. Как объявляется рекурсивная подпрограмма?

5. В чем преимущества и недостатки использования рекурсии?

6. Какие виды рекурсий бывают и в чем их особенность?

 

22Варианты индивидуальных заданий

 

Составить программу вычисления функции. При разработке программы создать и использовать подпрограмму-функцию.

 

1.
x=2,8; у=5,6; S=5,4; А=4,3;              x=4,4; у=2,8; S=10,9; А=8,7.

 

2.
x=2,5; z=3,1; u=1,7;            x=0,61; z=0,25; u=0,96.

 

3.
x=2,5; z=3,1; u=1,7;             x=0,61; z=0,25; u=0,96.

 

4.
x=9,81; z=4,64; u=3,78;       x=3,14; z=5,15; u=3,87.

 

5.
x=2,54; z=2,41; u=1,96;       x=4,08; z=1,95; u=2,25.

 

6.
x=1,54; z=1,11; u=1,21;       x=0,9; z=2,4; u=0,1.

 

7.
x=2,11; u=1,13;       x=3,1; u=2,11.

 

8.
x=5,1; у=2,7;              x=1,2; у=3,9.

 

9.
x=4,14; u=6,83;       x=2,17; u=0,99.

 

10.
x=0,1; u=1,4;       x=0,2; u=0,7.

 

11.
x=5,7; у=0,6; u=1,1;              x=2,1; у=0,2; u=2,0.

 

12.
x=3; у=8; S=2; u=3;              x=2,75; у=7,21; S=1,54; u=2,6.

 

13.
x=1,4; z=2,1; u=1,1;        x=1,2; z=1,9; u=1,3.

 

14.
x=0,1; z=0,2; u=0,3;       x=0,9; z=0,8; u=0,7.

 

15.
x=1,5; у=2,7; u=1,2; t=6,5; v=2,4;

x=1,4; у=3,5; u=0,9; t=0,1; v=6,6.

 

16.
x=-1,3; у=-2,8; z=0,1; u=6,0; t=9,0; v=-2,5;

x=-2,6; у=0,6; z=-3; u=-2,7; t=-1; v=-1,6.

 


 ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №5

ПОСТАНОВКА ЗАДАЧИ

ДАНО           

ТРЕБУЕТСЯ

СВЯЗЬ         

и последовательность является перестановкой исходной последовательности.

Основное требование к методам внутренней сортировки - экономное использование   памяти. Это означает, что переупорядочивание элементов надо выполнять на том же месте.

Методы внутренней сортировки можно разбить на четыре основных класса в зависимости от лежащего в их основе приема:

· сортировка включением(вставкой),

· сортировка выбором,

· сортировка обменом,

· разделением.

 

СОРТИРОВКА ВКЛЮЧЕНИЕМ. Этот метод состоит в том, что на каждом шаге берут i-ый элемент последовательности и передают его в готовую отсортированную часть последовательность, вставляя его на свое место. Алгоритм сортировки включениями выглядит следующим образом:

 

FOR I:= 2 TO N DO

BEGIN X:= a[I];

  < вставить X на подходящее место в a[1], a[2],...,a[I] >

END

СОРТИРОВКА ВЫБОРОМ. Этот метод основан на следующем правиле. Выбирается минимальный (максимальный) элемент последовательности и обменивается с первым элементом (элементом) последовательности. Очевидно, один элемент при этом встанет на свое место в отсортированной части последовательности. Далее все выше изложенное надо повторить в не отсортированной части последовательности и т.д.

 

FOR I = 1 TO N-1 DO

 BEGIN

 < присвоить K индекс наименьшего элемента из a[I]...a[N] >

 < поменять местами a[I] и a[K] >

 END

СОРТИРОВКА ОБМЕНОМ. Алгоритм обмена основан на принципе сравнения и обмена пары соседних элементов до тех пор, пока не будут отсортированы все элементы. В качестве примера рассмотрим сортировку методом пузырька.

 

FOR I:= 2 TO N DO

FOR J:= N DOWNTO I DO

IF a[J-1] > a[J] THEN

BEGIN X:= a[J-1]; a[J-1]:= a[J]; a[J]:= X END

 

СОРТИРОВКА РАЗДЕЛЕНИЕМ.  Алгоритм разделением основан на разбиении последовательности на две подпоследовательности по некоторому правилу. При этом каждая из них может не являться упорядоченной, но последовательное применение указанного правила приводит к упорядоченности последовательности. Примером этого класса алгоритмов является алгоритм быстрой сортировки.

Procedure quicksort (S);

begin

if < S содержит один элемент> then <возвратить S >

else begin <выбрать произвольный элемент a из S >;

<пусть S 1, S 2 и S 3 - последовательности элементов из S, соответственно меньших, равных и больших a >;

< возвратить quicksort(S1), затем S2,, затем quicksort(S3) >

end

end

 

Внешняя сортировка, т.е. сортировка данных, находящихся на внешних запоминающих устройствах, имеет свои особенности.

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

· Оперативная память имеет ограниченные размеры и поэтому в каждый момент времени может быть доступна только часть данных.

 Рассмотрим один из алгоритмов внешней сортировки.

 

СОРТИРОВКА СЛИЯНИЕМ. Главная идея, которая лежит в основе этой сортировки это представлении файла в виде постепенно увеличивающихся серий, т.е. упорядоченных подпоследовательностей. Если есть, по крайней мере, два файла и число серий в них равно или отличается на единицу, то последовательным слиянием отсортированных серий в новый файл можно уменьшить количество серий, по крайней мере, в два раза.

Отчет о выполнении

 

Отчет выполняется в электронном виде. Если заданий несколько, то повторить всю систему отчета необходимое количество раз.

Текст задачи
 
Листинг алгоритма исполняемого файла
 
Скриншот интерфейса запускного файла программы
 

Контрольные вопросы:

1. Что такое одномерный массив?

2. Что такое двухмерный массив?

3. Что такое сортировка массива?

4. Какие методы сортировки вы знаете?

Варианты индивидуальных заданий



Поделиться:


Последнее изменение этой страницы: 2021-04-13; просмотров: 101; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.137.243 (0.213 с.)