АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ

Кафедра инженерной кибернетики

 

 

 

 

 

                                 УТВЕРЖДАЮ

                                 Проректор по учебно-методической работе

                                 ____________________Э.А. Сериков

                                 «___»__________2005 г.

 

 

 

 

 

 

 

 

ИНФОРМАТИКА. Язык Turbo Pascal

Часть 3

Методические указания к выполнению лабораторных работ

(для студентов всех специальностей)

 

 

 

 

 

            СОГЛАСОВАНО                                           Рассмотрено и одобрено на

            Начальник УМО                                             заседание кафедры  ИК

____________О.З.Рутгайзер                        Протокол №  4 от  «29»декабря 2004 г.

«___»______2005 г.                                      Зав. кафедрой __________Б.Д.Хисаров

 

 

 

 

            Редактор                                                          Составители:

            ________________                                           ____________Г.А.Мастекбаева

           «___»______2005 г.                                         ____________Н.В.Сябина

 

 

 

 

 

 

 

 

 

 

 

 

 

Алматы 2005


СОСТАВИТЕЛИ: Г.А.Мастекбаева, Н.В.Сябина. Информатика. Язык Turbo Pascal. Часть 3. Методические указания к выполнению лабораторных работ (для студентов всех специальностей). - Алматы: АИЭС, 2005.- 29 с.

 

   

 

Методические указания по дисциплине «Информатика» состоят из 4 частей: части 1 и 2 – содержат методические указания по работе с операционной системой Windows, офисными программами MS Word, MS Excel, MS Access, графическим редактором CorelDraw и Интернетом. Части 3 и 4 посвящены основам программирования на языке Turbo Pascal.

Методические указания (часть 3) предназначены для получения навыков программирования алгоритмов различных структур и содержат три лабораторных работы: «Программирование алгоритмов линейной структуры», «Программирование алгоритмов разветвленной структуры» и «Программирование алгоритмов циклической структуры».

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

Методические указания предназначены для студентов всех специальностей. 

    Ил. 7, табл. 7, библиогр. – 5 назв.

 

 

 

 

 

 

    Рецензент: канд. техн. наук, доц. Л.К.Ибраева.

 

 

 

 

 

    Печатается по плану издания Алматинского института энергетики

и связи на 2004 г.

 

 

 

 

 

© Алматинский институт энергетики и связи, 2005 г.

 

Введение

 

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

Язык Pascal был разработан в начале 70-х годов ХХ века швейцарским профессором Никлаусом Виртом как инструмент для систематического обучения программированию. Для этого в состав языка были включены элементы структурного программирования (последовательные, разветвляющиеся и циклические структуры) и структуры данных (массивы, записи, файлы и т.д.). В 1983 году французский математик Филипп Кан разработал компактный, быстродействующий компилятор, названный Турбо Паскалем. В 1992 году фирма Borland International выпустила в свет очередную версию языка Турбо Паскаль 7.0 с улучшенным интерфейсом пользователя и более быстрым компилятором. Принципы построения программ, заложенные в Паскале, получили развитие в таких языках программирования, как Ада, Модула-2, Си и т.д. Турбо Паскаль не только обеспечивает возможность создания больших программ, поддерживая их строгую логическую структуру, что весьма ценно для начинающих программистов, создающих серьезные программы, так как приучает их к определенной дисциплине. Кроме того, Паскаль считается достаточно простым и эффективным инструментом для решения инженерных задач.

Предлагаемые методические указания к выполнению лабораторных работ (части 3 и 4) разработаны в помощь первокурсникам для самостоятельного освоения одного из важнейших разделов курса информатики «Алгоритмизация и программирование». Изложение основных вопросов программирования подкрепляется конкретными примерами и сопровождается необходимыми комментариями. В приложениях содержится весь необходимый справочный материал. Для достижения наилучшего результата при изучении изложенного материала необходимо придерживаться следующих общих требований и рекомендаций по выполнению лабораторных работ:

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

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

- в процессе выполнения работы непосредственно на компьютере студент должен проанализировать полученные результаты и внести данные в таблицы регистрации результатов заключительного отчета по лабораторной работе. Отчет утверждается преподавателем, и, если он не соответствует установленным требованиям, отчет возвращается студенту для доработки;

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

 

 

1 Лабораторная работа №1. Программирование алгоритмов линейной структуры

 

Цель работы – ознакомление с правилами построения алгоритмов, структурой программы на языке Паскаль, правилами записи арифметических выражений, особенностями программирования алгоритмов линейной структуры с использованием оператора присваивания, процедур ввода и вывода данных.

 

1.1 Алгоритм и блок-схема

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

Алгоритм – это формальное описание способа решения задачи путем разбиения ее на конечную по времени последовательность действий (этапов), понятных исполнителю.  При этом должны быть четко указаны как содержание каждого этапа, так и порядок выполнения этапов. Отдельный этап алгоритма либо представляет собой другую, более простую задачу, алгоритм которой разработан ранее, либо должен быть достаточно простым и понятным без пояснений. Наиболее распространенный вид алгоритма – графический - выполняется в виде блок-схемы – совокупности геометрических фигур (блоков), связанных между собой при помощи стрелок. Все формулы в блок-схеме записываются на языке математики, а не конкретном языке программирования. В таблице А1 приведены наиболее используемые виды блоков. Блок-схемы выполняются в соответствии с ГОСТом 19.701-90, ЕСПД, но для упрощения записи их можно строго не соблюдать. Любой алгоритм синтезируют из типовых элементов: алгоритмов линейной, разветвляющейся и циклической структуры.

1.2 Особенности языка Турбо Паскаль и структура программы

К основным особенностям Турбо Паскаль можно отнести довольно строгие требования к структуре программы. Программа на языке Паскаль записывается в виде последовательности символов, к числу которых относятся латинские буквы, арабские цифры, знаки препинания, знаки операций. Для обозначения исходных данных и результатов вычислений (промежуточных и итоговых) употребляются переменные, имена (идентификаторы)  которых могут быть не только буквами - a, b, X, Y и т.д., но и последовательностью символов вида x1, time, alfa2 и т.д., которые состоят из букв и цифр и начинаются с буквы. Ключевые слова – это множество имен, которые используются в языке для написания операторов и других конструкций. Имена, применяемые пользователем для обозначения конструкции, не должны совпадать с ключевыми словами. Список зарезервированных слов и перечень операций языка приведены в таблицах Б1 и Б2. Соответствующее исходное данное или результат вычисления называется значением переменной. Константы отличаются от переменной тем, что их значения не меняются в ходе выполнения программы. Числа записываются в десятичной системе, вместо запятой ставится точка: 0, -19, 0.27, 3.1415 и т.д.

К основным типам данных языка Паскаль относятся: вещественный (Real), целочисленный (Integer), логический (Boolean) и литерный (Char). Целые числа и числа с плавающей точкой могут быть представлены в различных формах (таблица Б3).

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

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

-   два знака арифметических операций не должны стоять рядом;

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

 

1.3 Алгоритмы линейной структуры и используемые в них операторы

Алгоритм называется линейным, если все операции в нем выполняются последовательно, друг за другом.

Оператор присваивания позволяет изменить текущее значение переменной. Вид оператора приведен в таблице Г1. Вычисляется выражение, стоящее справа от знака ":=" ("присвоить"), полученный результат присваивается переменной, стоящей в левой части оператора. При этом старое значение, хранившееся в ней, безвозвратно пропадает. Например, Р:= 5; (в переменную Р запишется число 5).

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

 

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

Даны переменные a  и b. Найти .

При составлении алгоритма необходимо выделить однотипные выражения (здесь a2+b2), которые достаточно посчитать один раз, а затем использовать результат вычислений. Желательно разбить сложные вычисления одного выражения на более простые (например, отдельно вычислить числитель и знаменатель дроби) для того, чтобы в алгоритме не было громоздких формул. На рисунке 1.1 представлен вариант блок-схемы алгоритма и программа.

 

Program Primer1;

Var a,b,c,z:real;

Begin

    Write ('Введите a и b');

    Read (a, b);

    C := sqr(a) + sqr(b);

    z := sqrt (sqrt(c)) + sin(c) – 1/с;

    Write('Z=', z:10:3)

End.

 

 

Рисунок 1.1 - Блок-схема алгоритма и программа линейной структуры

 

Вычисление значения Z производится в следующей последовательности:

а) в блоке 2 вводятся исходные данные – значения a и b;

б) в блоке 3 вычисляется арифметическое выражение a2+b2, и результат запоминается в переменной c;

в) в блоках 4-6 вычисляются первое слагаемое, числитель и знаменатель второго слагаемого;

г) в блоке 7 производится окончательный расчет Z;

д) в блоке 8 выводятся исходные данные и результат.

В программе действия блоков 3-7 записываются операторами присваивания, блоки 2 и 8 реализуются операторами ввода/вывода. Ввод осуществляется с запросом, поэтому сначала записан оператор Write, а затем Read. Вывод осуществляется форматным способом. Все переменные, участвующие в программе, объявляются в разделе Var ее описательной части.

 

1.5 Варианты заданий

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

 

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

 

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

1.6.1 Назовите основные этапы подготовки и решения задач на ПК.

1.6.2 Что такое алгоритмический язык?

1.6.3 Что такое алгоритм? Назовите основные свойства алгоритмов.

1.6.4 Что понимается под «блок-схемой»? Назовите элементы блок-схемы.

1.6.5 Опишите структуру простейшей Паскаль-программы.

1.6.6 Какие типы данных используются в Паскале?

1.6.7 Какой алгоритм называется линейным? Опишите оператор присваивания. Каких правил следует придерживаться при составлении арифметических выражений?

1.6.8 Подумайте,как можно представить в Паскале функции tg x, ctg x, lg x .

1.6.9 Какие операторы используются для ввода и вывода данных в Паскале?

1.6.10 Как осуществляется форматный и бесформатный выводы в Паскале?

1.6.11 Как осуществляется ввод и вывод с комментарием в Паскале?

 

 

2 Лабораторная работа №2. Программирование алгоритмов разветвленной структуры

 

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

 

2.1 Алгоритмы разветвленной структуры. Операторы перехода и выбора

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

Оператор условного перехода реализует разветвление алгоритма и применяется, когда в зависимости от условия необходимо выполнить либо одно, либо другое действие. В качестве условий используются логические отношения. Логические отношения представляют собой записи равенств и неравенств: <, >, =, <=, >=,<> (не равно), AND (логическое "и"), OR (логическое "или"). В Паскале оператор условного перехода имеет две конструкции (таблица Г1).

В Паскале принят порядок выполнения операторов согласно их следованию в программе. Если необходимо обойти какую-то группу операторов, то используется оператор безусловного перехода, который в блок-схеме отображается в виде стрелки, а не отдельного блока (таблица Г1). Метка, используемая в операторе, показывает, что дальнейшая работа должна проводиться в другой части программы, с той строки, на которую она указывает и должна быть предварительно описана в разделе Label (например, Goto NM;). Этот оператор используется только в исключительных ситуациях, поскольку такие переходы разрушают связи между структурой программы и структурой вычислений, что приводит к потере ясности программы и затрудняет задачу верификации (доказательства правильности составления программы).

Кроме оператора безусловного перехода, в Турбо Паскале 7.0 иногда используются четыре безусловные функции:

-   Break – позволяет досрочно закончить цикл;

- Continue – позволяет начать новую итерацию цикла, не дожидаясь окончания предыдущей итерации;

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

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

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

 

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 в программе используются процедуры ввода-вывода.

 

Подпись: Goto m1

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

 

2.2.2       В старояпонском календаре принят 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 Контрольные вопросы

2.4.1 Какие логические отношения используются в Паскале?

2.4.2 Какие функции выполняет оператор условного перехода?

2.4.3 Чем отличаются полная и краткая формы оператора условного перехода?

2.4.4 Как изображается на блок-схеме оператор условного перехода?

2.4.5 Какую функцию выполняет оператор безусловного перехода?

2.4.6 Как изображается на блок-схеме оператор безусловного перехода?

2.4.7 Какие особенности характерны для оператора выбора?

2.4.8 Как можно изобразить на блок-схеме оператор выбора?

 

 

3 Лабораторная работа №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) приведены в таблице Г1. Общим для всех перечисленных операторов цикла является то, что циклы, организованные с их помощью, содержат обязательные компоненты:

- задание начального значения параметра цикла;

- тело цикла; задание шага изменения параметра цикла;

- проверку на выход из цикла.

Для операторов 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.

При использовании оператора цикла 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).

 

 

 

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.

7.         Даны вещественное число X и натуральное число n. Вычислить произведение первых N сомножителей  S = sinX ´ sinX2 ´ sinX3 ´´ sinXn.

8.         Дано целое число n. Вычислить .

9.         . Дано целое число n. Вычислить   .

10.    Вычислить произведение первых n сомножителей .

11.    Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых .

12.    Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых .

13.    Даны числа b и n. Вычислить  P = b´(b+1) ´ (b+2) ´ (b+3) ´´ (b+n).

14.    Вычислить сумму первых N чисел натурального ряда.

15.    Вычислить произведение четных и нечетных первых N чисел натурального ряда.

16.    Вычислить сумму первых n слагаемых  .

17.    Дано целое число n. Вычислить .

18.    Даны числа x и n. Вычислить  .

19.    Даны числа b и n. Вычислить  P = (b-n) + (b - (n-1)) + (b- (n-2)) +…+ (b-1).

20.    Даны вещественное число b и натуральное число n. Вычислить bn.

21.    Даны вещественное число x и целое число n. Вычислить .

22.    Даны числа x и n. Вычислить .

23.    Дано целое число n. Вычислить  .

24.    Дано целое число n. Вычислить  .

25.    Дано целое число n. Вычислить .

26.    Дано целое число n. Вычислить .

27.    Дано целое число n. Вычислить .

28.    Даны числа a и n. Вычислить   S = a+(a-n) + (a-2n) + (a-3n) +…+ (a-n2).

29.    Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых      S = sin2X + 2sin2X +…+ nsin2 X.

30.    Дано целое число n. Вычислить .

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

3.4.1 Что называется циклом?

3.4.2 Что представляет собой оператор цикла?

3.43 Какие виды оператора цикла существуют в Паскале?

3.4.4 Дайте сравнительную характеристику операторов For-To и For-Downto.

3.4.5 Что представляет собой оператор цикла While-Do?

3.4.6 Что представляет собой оператор цикла Repeat-Until?

3.4.7 Как организовать цикл For-To с вещественным параметром?

3.4.8 Как осуществляется накапливание суммы в программе?

3.4.9 Какое значение следует принять за начальное при накапливании произведения?

3.4.10 В какой последовательности выполняются действия при накапливании количества?

 

 


Приложение A

Описание символов, используемых в графической схеме алгоритмов (ГСА)

 

Таблица А1 – Основные элементы блок-схем

Наименование

Обозначение

Примечание

Терминатор

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

Данные

Отображает данные, носитель данных не определен. Используется для обозначения операций ввода и вывода данных

Процесс

Отображает функцию обработки данных любого вида. Используется для обозначения операций присваивания

Подготовка

Используется для обозначения заголовка цикла

Решение

Используется для обозначения оператора условного перехода или оператора выбора (варианта)

Предопределен-ный процесс

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

Соединитель

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

Линия

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

Комментарий

Используется для добавления описательных комментариев или пояснительных записей с целью объяснений или примечаний.

Примечание – символы могут быть вычерчены в любой ориентации, но предпочтительной является горизонтальная. Внутрь символа помещают обозначения или описания операций. Символы ГСА могут быть отмечены идентификаторами или порядковыми номерами.


Приложение Б

Основные элементы языка Турбо Паскаль

 

Таблица Б1 – Список зарезервированных слов

ABSOLUTE

Downto

In

Or

Then

And

Else

Inherited

Packed

To

Array

End

Inline

Private

Type

Asm

External

Interface

Procedure

Unit

Assembler

Far

Interrupt

Program

Until

Begin

File

Label

Public

Uses

Case

For

Mod

Record

Var

Const

Forward

Near

Repeat

Virtual

Constructor

Function

Nil

Set

While

Destructor

Goto

Not

Shl

With

Div

If

Object

Shr

XOR

Do

Implementation

Of

String

 

 

Таблица Б2 – Перечень операций языка

Операции

Действие

Тип результата

 

 

Арифмети-ческие

+

Сложение

Целый или вещественный

 

-

Вычитание

 

*

Умножение

 

/

Деление

Вещественный

 

Div

Целочисленное деление

Целый

 

Mod

Остаток от деления

Целый

 

Операции сравнения

=

Равенство

Логический

 

<>

Неравенство

 

<

Меньше

 

>

Больше

 

<=

Меньше или равно

 

>=

Больше или равно

 

Логические

Not

Отрицание

Логический

 

Or

Дизъюнкция

 

And

Конъюнкция

 

Xor

Исключающее ИЛИ

 

  Таблица Б3 - Типы переменных (целые и действительные числа)

Целые числа

Действительные числа

Формат

Диапазон значений

Формат

Диапазон значений

shortint

-128 ¸ 127

real

2.9E-39 ¸1.7E+38

integer

-32768 ¸ 32767

single

1.5E-45 ¸3.4E+38

longint

-2147483648 ¸ 2147483647

double

5.0E-324 ¸1.7E+308

 byte

0 ¸ 255

extended

3.4E-4932 ¸ 1.1E+4932

word

0 ¸ 65 535

 

 

Приложение В

Структура простейшей Паскаль-программы и встроенные функции языка

 

Таблица В1 – Структура простейшей программы

Части

Раздел

Обозначение в программе

Описа-тельная

Заголовок программы

Program  Primer;

Объявление меток

Label  1,2,x1;

Объявление констант

Const  a=3.5; b=5;

Объявление переменных

Var  y,z:real; i:integer;

Исполни-тельная

Начало главной программы

Begin

{Ввод исходных данных};

{Обработка исходных данных};

{Вывод результата};

Конец программы

End.

 

Таблица В2 - Некоторые встроенные функции языка Паскаль

Математическая запись или ее назначение

Запись на Паскале

sin x, x – в радианах

Sin(x)

cos x, x – в радианах

Cos(x)

arctg x

Arctan(x)

ln x – значение натурального логарифма

Ln(x)

ex или exp(x)

Exp(x)

 - абсолютное значение величины х

Abs(x)

, x>=0

Sqrt(x)

x2

Sqr(x)

дробная часть числа х

Frac(x)

целая часть числа х, получаемая путем отбрасывания дробной части

Trunc(x)

целая часть числа х, получаемая путем округления до ближайшего меньшего целого

Int(x)

целая часть числа х, получаемая путем округления до ближайшего большего целого по абсолютной величине

Round(x)

случайное число от 0 до х

Random(x)

случайное число от 0 до 1

Random

Выдает значение True, если целое число х нечетно

Odd(x)

Примечания

1 В Паскале нет операции возведения в произвольную степень n, поэтому используют выражение xn = enlnx.

2 Для получения tg x, ctg x, arcsin x, arccos x, arcctg x, logax могут быть использованы известные математические соотношения.



Приложение Г

Таблица перевода основных алгоритмических конструкций в конструкции языка Турбо Паскаль

 

Таблица Г1 – Основные алгоритмические конструкции и операторы языка

Наименование

Обозначения на

блок-схеме

Запись на языке Паскаль

Выполняемая функция

Оператор присваивания

 

 

Имя переменной := выражение;

Позволяет изменить текущее значение переменной

Процедура ввода

Read (список переменных);

Считывает значения, после чего:

- остается на той же строке;

ReadLn (список переменных);

- перейдет на начало следующей строки;

ReadLn;

- пропустит строку и перейдет на новую.

Процедура вывода

Write (список переменных);

Выводит значения, после чего:

- останется на той же строке;

WriteLn (список переменных);

- перейдет на начало следующей строки;

WriteLn;

- пропустит строку и перейдет на новую.

Write (комментарий,переменная);

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

Write (lst, список переменных);

Для вывода на принтер необходимо обратиться к модулю Uses printer;, а в операторе вывода указать lst.

 


Продолжение таблицы Г1

Наименование

Обозначения на блок-схеме

Запись на языке Паскаль

Выполняемая функция

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

 

 

Goto метка;

Позволяет перейти к другому оператору, строке, метке

Оператор выбора (варианта)

 

Подпись: Оператор 1Подпись: Оператор 2Подпись: Оператор n

{СЗ – список значений}

 

{вычисление селектора}

Case {селектор} of

{СЗ 1}: {оператор 1};

{СЗ 2}: {оператор 2};

. . .

{СЗ n}: {оператор n};

Else {оператор};

End;

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

 

Полная форма оператора условного перехода

 

If {условие} Then

    begin

       {оператор 1};

       

       {оператор N}

    end

                Else

    begin

        {оператор N+1};

        

        {оператор M}

    end;

В качестве условий используются логические отношения (записи равенств и неравенств). В блок-схемах разветвление реализуется с помощью блока условия. Если по пути «да» или по пути «нет» выполняется лишь один оператор, то конструкцию BeginEnd можно не использовать. После слова Begin и перед словом  End точка с запятой не ставится.


 

Продолжение таблицы Г1

Наименование

Обозначения на блок-схеме

Запись на языке Паскаль

Выполняемая функция

Краткая форма оператора условного перехода

If {условие} Then

       begin

          {оператор 1};

         

          {оператор N}

       end; 

Отличие от полной формы оператора условного перехода заключается в том, что ветвь «нет» отсутствует. В случае невыполнения условия, управ-ление передается оператору, следую-щему за условным.

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

 

 

{m1<m2}

 

For i:=m1 To m2 Do       

      Begin

            {оператор1};

             . . .

            {операторN}

      End;

Обеспечивает выполнение цикла до тех пор, пока не будут перебраны все значения параметра цикла i от началь-ного значения m1 до конечного m2 с последовательным автоматическим увеличением его на единицу при каж-дом повторе (m1<m2). Если тело цик-ла состоит из одного оператора, то конструкцию BeginEnd можно не использовать.

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

 

 

{m1>m2}

 

For i:=m1 Downto m2 Do

      Begin

         {оператор1};

         

         {оператор N}; 

      End;

Оператор  аналогичен For-To, но с той лишь разницей, что автоматичес-кий шаг изменения параметра цикла – минус единица и начальное (m1) зна-чение параметра цикла (i) должно быть не меньше конечного (m2). Если тело цикла состоит из одного опера-тора, то конструкцию BeginEnd можно не использовать.


Окончание таблицы Г1

Наименование

Обозначения на блок-схеме

Запись на языке Паскаль

Выполняемая функция

Оператор цикла с предусловием While-Do

 

 

i := m1;

While i £ (³) m2 Do

Begin

     {оператор 1};

    

     {оператор N};

     i := i +(-) m3

End;          

 

Цикл выполняется до тех пор, пока условие в операторе While истинно, следовательно, после слова While записывается условие выполнения тела цикла, m1 и m2 - соответственно начальное и конечное значения параметра цикла i, шаг m3 может быть любым числом. После слов While и Do точка с запятой не ставится.

Оператор цикла с постусловием Repeat-Until

 

 

i := m1;

Repeat

     {оператор 1};

    

     {оператор N};

     i := i +(-) m3

Until i > (<) m2;

Цикл выполняется до тех пор, пока условие в операторе Repeat ложно, следовательно, после слова Until записывается условие завершения цикла,  m1 и m2 - соответственно начальное и конечное значения параметра цикла i, шаг m3 может быть любым числом.

 


Библиография

 

1. Ю.Аляев, О.Козлов. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

2  . ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов и программ. Обозначения условные, графические. – М.: Издательство стандартов,1990.

3. С.Немнюгин, Л.Перколаб. Изучаем Turbo Pascal. – СПб.: Питер, 2001.

4. О.А.Меженный.Turbo Pascal: учитесь программировать.- М.:Издательский дом «Вильямс», 2001.

5.         Симонович С.В. Информатика. Базовый курс.- СПб.: Питер, 2000.

 

 

 

 

Содержание

 

Введение......................................................................................................... 3

1 Лабораторная работа №1. Программирование алгоритмов линейной

структуры....................................................................................................... 4

2 Лабораторная работа №2. Программирование алгоритмов

разветвленной структуры .............................................................................. 8

3     Лабораторная работа №3. Программирование алгоритмов

циклической структуры.................................................................................. 15

Приложение А................................................................................................ 22

Приложение Б................................................................................................. 23

Приложение В................................................................................................ 24

Приложение Г................................................................................................. 25

Библиография................................................................................................. 29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сводный план 2004 г., поз. 22 

 

 

Гаухар Аскербаевна Мастекбаева

Наталья Валерьевна Сябина

 

 

 

 

 

 

 

 

 

 

 

ИНФОРМАТИКА. ЯЗЫК TURBO PASCAL

Методические указания к выполнению лабораторных работ

Часть 3

(для студентов всех специальностей)

 

 

 

 

 

 

 

Редактор 

 

 

 

 

 

 

Подписано в печать __. __. __.                                     Формат 60х84  1/ 16

Тираж  50 экз.                                                                  Бумага типографская №1

Объем ___ уч.-изд. л.                                                      Заказ _____. Цена    тг.

 

 

 

 

Копировально-множительное бюро

 Алматинского института энергетики и связи

480013 Алматы, Байтурсынова, 126