Указатель (ссылочный тип) 9


НазваниеУказатель (ссылочный тип) 9
страница11/16
ТипУказатель
1   ...   8   9   10   11   12   13   14   15   16

Виды вычислительных алгоритмов


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

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

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

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





Рисунок 1.
условие

S

да

нет

S1

S2

Sn

S1

S3

да

нет

условие

S2

условие

S

да

нет

а
б

в
S1

S2

да

нет

условие

Здесь S, S1, S2 …. – операторы или блоки операторов языка программирования.

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


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


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

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

Знак := читается как "присвоить".

Работа оператора:

Сначала вычисляется выражение, стоящее справа от знака :=, затем результат записывается в переменную, стоящую слева от знака. Например, после выполнения оператора

k:=k+2;

текущее значение переменной k увеличится на 2.

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

1. Записать оператор присваивания, который позволяет вычислить расстояние между двумя точками на плоскости с координатами (x1, y1) и (x2, y2).

Ответ:                      d:=sqrt(sqr(x1–x2)+sqr(y1–y2));

2. Записать последовательность операторов присваивания, обеспечивающих обмен значениями переменных x и y в памяти компьютера.

Ответ:          c:=x;

                        x:=y;

                        y:=c;

где с – дополнительная переменная того же типа, что x и y, через которую осуществляется обмен. Грубой ошибкой было бы, например, попытаться выполнить обмен операторами x:=y; y:=x; - ведь уже после первого из них мы имеем два значения y, а исходное значение x потеряно.
      1. Операторы ввода и вывода


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

Для ввода исходных данных чаще всего используется процедуры Read и ReadLn. Общий вид записи операторов:

Read(A1,A2,...AK);

ReadLn(A1,A2,...AK);
Здесь и далее список данных, передаваемых любому оператору (а позднее и написанным нами подпрограммам), мы будем называть параметрами. Таким образом, параметрами оператора (точней, стандартной процедуры) Read являются имена переменных, описанных ранее в разделе var.

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

Работа операторов:

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

После ввода значений всех переменных из списка работа программы продолжается со следующего оператора. Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.

Readln отличается от Read только тем, что все переменные должны быть введены в одну строку экрана, Enter нажимается один раз в конце. Readln используется в основном для ввода строк текста, для ввода чисел лучше использовать Read, т.к. в этом случае пользователь может вводить данные более свободно (и в одну, и в несколько строк экрана).

Если пользователь вводит данные недопустимого типа (например, строку текста вместо числа), то выводится сообщение об ошибке  и работа программы прерывается.

Пример: нужно ввести данные для решения квадратного уравнения

var a,b,c:real;

. . . .

read (a,b,c);

Например, a=1, b=4, c=2.5 На экране вводим:

1_4_2.5¬                   

_ означает пробел

¬ означает нажатие Enter, переходим на следующую строку

или

1¬                     



2.5¬

или



4_2.5¬
Пробелов может быть и несколько.

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

Для вывода результатов работы программы на экран используются процедуры:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

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

Работа операторов:
Элементы списка выводятся в пользовательское окно программы. Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.

Вещественные значения выводятся в экспоненциальной форме (с буквой E). Строки выводятся "как есть". После вывода работа программы продолжается со следующего оператора.

Оператор writeln отличается от write лишь тем, что после вывода значения последнего элемента списка выполняется перевод курсора на следующую строку экрана.

Примеры:

1) Нужно дать пользователю возможность ввести с клавиатуры число, затем программа возведет это число в квадрат и выведет результат на экран.

var a,a2:integer;

. . . .

writeln ('Введите целое число:');     {это приглашение к вводу!}

read (a);

a2:=sqr(a);

writeln ('Квадрат числа=',a2);

Если ввести a=2, на экране будет напечатано

Квадрат числа=4

|             ---курсор на следующей строке

 

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

readln;

который будет ждать нажатия клавиши Enter.

 

2) Нужно вывести результаты решения квадратного уравнения x1=1.5 и x2=2.5

write ('x1=',x1,'_x2=',x2);

-пробел здесь нужен, чтоб значение x1 не слилось со строкой 'x2='

на экране будет напечатано:

x1= 1.5000000000E+00 x2= 2.5000000000E+00|

                                      -курсор остался в конце строки, т.к. использован write!

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

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

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

Для величин действительного типа элемент списка вывода может иметь вид:
переменная:ширина:точность
где - переменная – переменная или выражение вещественного типа,
ширина - ширина поля вывода,
точность - число цифр дробной части выводимого значения.
Ширина и точность - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой. Разумные значения точности – от 0 до ширина-2 включительно. Недопустимые значения ширины и точности не будут учтены при выводе.
Пример: печатаем значения переменных

var x1,p:real;

i:integer;

. . . .

x1:=2.5; p:=-3.175; i:=2;

writeln ('x1=',x1:8:2,'_p=',p:9:4);

write ('I=','_':5,i:2);

На экране будет напечатано:

x1=____2.50_p=__-3.1750

I=______2

_ везде обозначает пробел
        1. Вывод на печать

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

1)Первым оператором программы следует указать оператор
uses printer;
Он подключает стандартную библиотеку для работы с принтером.

2)Первым  параметром оператора write или writeln указать символическое имя принтера lst, описанное в библиотеке printer:
write ('Hello');                               строка 'Hello' выведена на экран,

write (lst,'Hello');                     а здесь – уже на принтер.
Отличие между write и writeln сохраняется при выводе на принтер – то есть, при использовании writeln позиция печати на принтере будет переведена на следующую строку.

Здесь не приводится код, позволяющий проверить, готов ли принтер к печати и удалась ли операция вывода данных на него. Подобные выполняются с помощью стандартной функции IoResult.
1   ...   8   9   10   11   12   13   14   15   16

Похожие:

Указатель (ссылочный тип) 9 iconУказатель персоналий 226 Указатель имен 230 Географический указатель...
В 41 Via sensus : краеведческий тифлодайджест : вып. 13 / Свердл обл спец б–ка для слепых; сост. А. В. Щеглова; отв за вып. И. А....

Указатель (ссылочный тип) 9 iconБиблиографический указатель 1996-2009 гг
Указатель предназначен преподавателям, студентам, аспирантам и всем, кто интересуется психологией. Мы надеемся, что он принесёт несомненную...

Указатель (ссылочный тип) 9 iconГ. П. Щедровицкий «Языковое мышление» иметоды его анализа М.: Ннф...
Русаков А. В., составление, предисловие, комментарии, именной указатель, предметный указатель, библиография, 2010

Указатель (ссылочный тип) 9 iconПротокол встречи с предстваителями инициативной группы объекта южная долина, фаза 3
Все стеклопакеты двухкамерные, остекление панорамное: тип 1 высота окна 2,1 м, тип 3 высотка окна 2,56 м, тип 4 высота окна 2,645...

Указатель (ссылочный тип) 9 iconД оговор Заявка на перевозку грузов
...

Указатель (ссылочный тип) 9 iconФормат
...

Указатель (ссылочный тип) 9 iconОб утверждении формата данных сведений о застрахованных лицах
...

Указатель (ссылочный тип) 9 iconУказатель имен 374 Указатель репертуара 387 { 7} к читателю Весной...
Весной 1918 года в Советской России миновала пора «красногвардейской» атаки на капитал и наступил период относительной передышки

Указатель (ссылочный тип) 9 iconМассивы
Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый...

Указатель (ссылочный тип) 9 iconПравила и примеры оформления библиографических записей Таблица №1....
Примечание: если журнал имеет печатную версию, то при цитировании предпочтительна ссылка именно на нее, с указанием номеров страниц....

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск