Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 336

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
909.45 Кб
Скачать

2. Инструкция «цикл с предусловием» (условие завершения цикла b проверяется в начале цикла до выполнения тела цикла S). Блок-схема приведена на рис. 10.

нет

b

да

S

Рис. 10. Блок-схема цикла с предусловием

3. Инструкция «цикл с постусловием» (условие завершения цикла b проверяется в конце цикла после выполнения тела цикла S). Блок-схема приведена на рис. 11.

Отметим, что инструкции 2 и 3 не требуют предварительного определения количества повторений в цикле.

S

нет

b

да

Рис. 11. Блок-схема цикла с постусловием

Задание. Ответьте на вопросы.

1.Что такое алгоритм?

2.Каковы основные свойства алгоритма?

71

3.Перечислите изобразительные свойства алгоритмов.

4.Дать определение блок-схемы.

5.Перечислить известные блоки и указать их назначение.

6.Перечислить типы вычислительных процессов.

7.Дать определение линейного вычислительного процесса.

8.Каким образом представляется на блок-схеме линейный вычислительный процесс?

9.Составить блок-схему вычисления следующих выражений:

 

P

NK2 M

 

а)

(K L)2

,

 

вывести значения P, числителя и знаменателя;

б)

 

 

 

AB,

Y

 

AX 2 B

вывести значения Y и подкоренного выражения.

10.Составить блок-схему алгоритма для вычисления длины окружности L, если задана площадь соответствующего круга S.

11.Составить блок-схему для чтения температуры в градусах Цельсия и печати ее в градусах Кельвина, Фаренгейта, Реомюра

(T0 K T0C 273,15;

T0R 0,8T0C;

T0 F 1,8T0C 320 ).

12.Даны величины A и B. Найти их сумму, произведение, среднее арифметическое, среднее геометрическое. Составить блок-схему.

13.Даны две числовые величины A и B. Поменять местами содержимое ячеек, в которых они находятся без использования вспомогательной ячейки. Составить блок-схему.

14.Дать определение разветвляющегося вычислительного процесса.

15.Каким образом осуществляется выбор направлений вычислений?

16.От чего зависит количество направлений вычислений?

17.Как изображается логический блок?

18.Составить блок-схему вычисления следующих выражений:

 

 

x

A

,

 

если

0 A 3,

 

 

 

 

а)

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x A,

если

A 3;

 

 

 

 

 

72

 

 

3 x ,

если

x 1,

 

б)

y

 

2 x,

 

если

1 x 2,

 

 

 

 

sin( x 2),

если

 

x 2;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ax2

bx c,

если

K 1,

в)

y

 

 

 

 

ex f ,

если

K 2,

dx2

 

 

 

 

 

2

hx i,

если

K 3;

 

 

qx

 

 

 

Ax2 ,

если

2 x 10,

 

г)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A2

x2

,

если

10 x 100,

F

 

 

 

A,

 

 

если

x 100;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

е) y

 

2z2 3z 1

 

 

 

 

 

 

 

 

 

 

 

 

 

Ax2 ,

если

x 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

если

x 0,

 

 

 

 

 

 

z 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x,

если

x 0;

 

 

 

 

 

 

 

 

 

ж)

F=Ax3

 

 

B C,

если

B C,

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

если

В С.

 

 

 

 

 

 

 

B2,

 

19. Составить блок-схему алгоритма нахождения корней квадратного уравнения

ax2 bx c 0.

Предполагается, что для заданных значений a,b,c допустимы комплексные корни.

20. Составить блок-схему алгоритма нахождения максимального (минимального) из трех заданных чисел.

21. Меньшее из чисел X и Y заменить нулем, а в случае X=Y, заменить нулями оба числа.

22. По представленным ниже исходным данным и блок-схеме (на рис. 12) определить численные значения выходной переменной F.

73

x 10,

x 1,

1)

2)

y 15;

y 1;

Начало

x 25,5,

y 13.

1 x, y

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

нет

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

x = y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x > y

 

 

3

 

 

 

 

 

 

F = y - x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F = x y

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F = x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

F

Конец

Рис. 12. Блок-схема вычисления F

23.Дать определение цикла. Какие процессы называются циклическими?

24.Какие типы циклов вы знаете?

25.Какие величины задаются в случае простого цикла с заданным числом повторений?

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

а) f =

sin x cos x

;

x 0, ;

h

.

 

 

 

 

 

1 x

2

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x2

 

 

 

 

 

 

 

 

 

7

x a e

, при

x a,

 

 

 

x

 

 

 

 

 

f

 

 

 

 

 

 

 

 

 

 

 

 

при

x a,

б)

xsinax ctgx,

 

 

 

 

 

 

 

 

 

 

 

 

 

x 0,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ax

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

cosax ln

 

 

 

 

 

,

при x a,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

74

 

a = 2,5;

x 1;5 ;

h 0,3.

 

 

 

 

1

 

 

 

 

x

 

 

 

 

 

 

(1

 

 

)e

 

 

,

при

x 0,5,

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в) y

xex

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

при

х 0,5.

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( x 1)

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

arctg

 

;

z 2;5 ;

h 0,2.

 

 

 

z

z

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

28.Из 20 чисел найти среднее арифметическое положительных.

29.Определить динамику возрастания вклада в течение первых 10 лет хранения из расчета Р % годовых.

30.Вычислить значение y=m (факториал натурального числа m, т. е. m =1·2·3…·m; 0!=1).

31.Вычислить сумму четных чисел от 2 до 1000.

5.2. Эволюция языков программирования

Машинный язык представляет собой средство непосредственного общения с компьютером. Каждый тип ЭВМ имеет свой машинный язык, свою систему команд. Написание программ на таком языке оказывается трудоемким делом. Для общения с машиной нужно наизусть выучить коды операций в командах машинного языка, чтобы строить из этих элементарных предписаний сложные действия. В командах машинного языка существенным образом отражаются конструктивные особенности конкретной машины – система адресности, формат команды, наличие регистровой памяти, количество регистров и т.п. Поэтому общение с вычислительной машиной на ее языке затруднительно для программистов, в обязанности которых входит подготовка задания машине и общение с нею, а сведения о конструктивных особенностях ЭВМ часто являются избыточными. Программисту было бы удобнее не связывать себя с номерами регистров, размером сумматора, кодами операций. Так возникла проблема автоматизации труда программистов средствами . . . программирования! Одним из самых первых этапов решения этой проблемы стали языки программи-

75

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

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

Следующий этап в автоматизации программирования начался с создания более совершенных автокодов. Их ассемблеры могут не только перекодировать буквенные обозначения операций, но и реализовать некоторые операции, не существующие в машинном языке. Так, система команд машины может не иметь в своем составе команды извлечения квадратного корня. Однако легко написать программу, вычисляющую корень по заданному значению подкоренного выражения, пользуясь при этом командами основного набора системы команд. После этого программист получает право использовать в своих автокодовских программах операцию извлечения корня, обращаясь к соответствующей программе, хранящейся в памяти ЭВМ. Общая черта всех автокодов – их ориентация на конкретный тип ЭВМ, в машинные команды которой ассемблер переводит автокодовскую программу. Поэтому их называют машинно-ориентированными языками. Именно жесткая привязанность таких языков к конкретным типам машин определила ограничения на очередном этапе автоматизации программирования, когда возникла потребность обмена программами, создававшимися для разных типов ЭВМ. Тем более, что определилась тенденция достаточно быстрой смены поколений машин (в среднем один раз в семь-десять лет) и относительная продолжительность жизни программных средств – этого концентрата человеческих знаний в прикладных областях. Объективная обусловленность таких требований вызвала появление машинно-независимых языков про-

76

граммирования (языков высокого уровня – ЯВУ).

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

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

транслятором.

Преимущества программирования на ЯВУ пользователи вычислительных машин оценили очень быстро, Языки программирования высокого уровня стали появляться один за другим.

Многообразие языков программирования объясняется тем, что каждый язык программирования предназначается для решения некоторого класса задач некоторой предметной области (инженернотехнические расчеты, учетно-статистические задачи, задачи моделирования процессов и т.п.). Языки программирования, создаваемые по требованиям тех или иных предметных областей, называют проблем- но-ориентированными. Каждый такой язык эффективен в своей предметной области. Выбор программистом наиболее подходящего для решения задачи ЯВУ принципиально важен для эффективности программирования. Рассматриваемый далее язык программирования Паскаль является весьма популярным, простым, универсальным и эффективным языком высокого уровня.

Задание. Ответьте на следующие вопросы.

1.Что такое автокод?

2.Что представляет собой ассемблер?

3.Чем характерны языки высокого уровня?

4.В чем отличие машинно-ориентированных и машиннонезависимых языков?

5.Чем объясняется многообразие языков высокого уровня?

77

5.3. Язык программирования Паскаль

Задание 1. Прочитайте ключевые слова и следующий текст.

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

Key words: programming system, software, integrated system, programming environment, text editor, compiler, linker (linkage editor), loader, alphabet, special character, reserved word.

Языки программирования

Составленный алгоритм решения задачи надо перевести на языки, понятные ЭВМ. Такие языки называются языками программирования, запись алгоритма на языке программирования называется программой, а сам процесс перевода алгоритма на указанный язык – про-

граммированием.

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

Язык программирования Паскаль был разработан швейцарским профессором Н. Виртом в 1969-1970 годах и получил широкое распространение благодаря наглядности программ и легкости при изучении. Он совершил революцию в программировании. До этих пор предпочтение отдавалось Бейсику (Basic) – простому, дешевому и массовому. Паскаль же был аппаратно зависимым, дорогим и сложным в обращении. Все изменилось с появлением в 1983 году на рынке программных продуктов Турбо Паскаля (Turbo Pascal – TP), который может быть использован на любой вычислительной машине.

Язык программирования Паскаль в дальнейшем послужил основой для разработки других языков программирования (например, Ада, Модула-2).

Первая версия Турбо Паскаля использовалась не очень долго – она появилась в 1983 году, а уже в 1984 году её заменила вторая версия, которая получила широкое распространение. К осени 1985 года появляется третья версия, более удобная в работе (быстрее работают

78

редактор и компилятор, возможен вызов MS-DOS из программы). Четвертая версия (1988 год) представила ТР в новом виде (в

частности, компилятор стал встроенным). Осенью этого же года разработана пятая версия, у которой появился встроенный отладчик. А в 1989 году появилась версия 5.5, позволившая перейти к объектноориентированному программированию.

Шестая версия уже обеспечивала многооконный и многофайловый режим работы, использование «мыши», применение объектно– ориентированного программирования, обладала встроенным ассемблером и имела другие возможности.

В 1992 году фирма Borland International выпустила два пакета программирования на языке Паскаль – это Borland Pascal 7.0 и Turbo Pascal 7.0.

Пакет ТР 7.0 и его современные продолжения используют новейшие достижения в программировании. Язык этой версии обладает широкими возможностями, имеет большую библиотеку модулей. Среда программирования позволяет создавать тексты программ, компилировать их, находить и исправлять ошибки, компоновать программы из отдельных частей, использовать модули, отлаживать и выполнять отлаженную программу.

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

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

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

Интегрированная система ТР состоит из языка программирования и среды программирования. В эту систему входят текстовый редактор, компилятор, компоновщик, загрузчик.

Базовые элементы языка Turbo Pascal

Алфавит языка ТР включает буквы, цифры, специальные символы, зарезервированные (служебные) слова.

79

Буквы – это буквы латинского алфавита (строчные и прописные), а также знак подчеркивания.

Цифры – арабские цифры от 0 до 9.

Специальные символы: + - * / , ‘ . : ; < > [ ] { } ( ) ^ @ $ #. Пробе-

лы в ТР являются разделителями.

Служебные слова: and (и, конъюнкция), array (массив), begin (начало), case (вариант, выбор), const (константа), constructor (кон-

структор объекта), destructor (разрушитель объекта), div (целочисленное деление), do (делать, выполнять), downto (уменьшая до…), else (иначе), end (конец), external (внешний), file (файл), for (для, начало цикла for), forward (опережение), function (начало подпрограммы – функции), goto (переход на, идти к), if (если), implementation (реали-

зация, исполнительная часть модуля), in (в), inline (встроенный), interface (интерфейс модуля), interrupt (прерывание), label (метка), mod (вычисление остатка от деления целых чисел), nul (пустой указатель, пустая ссылка), not (нет, отрицание), object (начало типа – объект), of (из), or (или, дизъюнкция), packed (признак «упакованного» массива), procedure (начало подпрограммы – процедуры), program (начало программы), record (начало типа – запись), repeat (повторить, начало цикла repeat), set (набор, множество), string (строка), then (тогда), to (к, до), type (тип), unit (модуль), until (пока, до тех пор), uses (исполь-

зуется), var (переменная, варьируемая), while (пока, начало цикла while), with (c), xor (исключающее или).

Идентификаторы – это имена констант, переменных, меток, типов, объектов, процедур, функций, модулей и других конструкций языка. Правила выбора имен:

1.Длина идентификатора может быть произвольной, но значащими считаются первые 63 символа.

2.Идентификатор состоит из букв латинского алфавита, цифр и знака подчеркивания.

3.Идентификатор не может начинаться с цифры.

4.Идентификатор не должен совпадать ни с одним из зарезервированных слов.

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

Константы. В качестве констант в ТР могут использоваться це-

80