Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 19

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 13 14 15 16 17 18 < 19 > 20 21 22 23 24 25 .. 316 >> Следующая

5. Взов ункции ввода. Строка
printf ("\n7 power of %d is %d\n", X, Y); определяет формат вывода \n7 power of %d is %d\n и переменные X и Y, отформатированные значения которых вставляются вместо двух вхождений %d. "\n" — это символ завершения текущей печатаемой строки.
6. Завершение. Наконец, строка
return 0;
представляет завераий вычисления оператор. В результате его в -полнения окру ени станет известно, что вчисления заверились нормально с искомым результатом (с кодом ответа 0).
AAA
48
ГЛАВА 1. ПОНЯТИЯ
Чем определяется последовательность действий линейной программы? Что может делать транслятор? И как это зависит от языка программирования? Ответы на эти и другие вопросы поможет дать разбор действий и изучение структур конкретной программ . и е этот анализ проводится для программы 1.3.3. Будет, в частности, показано, что даже в самом простом случае линейной программ структура вчислений не во всем соответствует структуре текста программы, что записанный алгоритм — это не совсем то, что имеет в виду разработчик программы, когда он размышляет над решением программистской задачи.
§ 1.4. СТРУКТУРА ВЫЧИСЛЕНИЙ И СТРУКТУРА ТЕКСТА ПРОГРАММЫ
Текст программы носит двойственную природу: это операционная структура, ориентированная на человека, но в то е время допускаая интерпретацию абстрактным автоматом. Например, структура вычислений программы 1.3.3 представлена на рис. 1.5, а структура ее текста — на рис. 1.6. Из этих рисунков видно, что понятия, использованне при задании текстовой структур , во многом обусловлен тем, как вчисления представлен в виде текста, т. е. последовательности символов. труктура вчислений более свободна в этом отношении.
Поэтому различные тексты программ часто порождают эквивалентные с точки зрения результатов вчислений программ . Более того, традиционная запись программ избточна с точки зрения абстрактных вчисле-ний, и поэтому могут возникать недоразумения, когда сам человек при перестройке программы забывает, какие именно аспекты текста для него важны, а какие — нет. С другой стороны, запись в программе часто допускает от-носительну свободу структур вычислений: детали, ваные для человека, могут оказаться не ваны для вчисляего программу автомата. Все это, в частности, поро дает участки строго последовательнх действий и действий, которые мо но выполнять в произвольном порядке. 1.4.1. Последовательное, параллельное и совместное исполнение
ля того, чтоб разобраться с тем, как порядок конструкций в тексте программы соотносится с порядком их исполнения абстрактным вычислителем и с представлением абстрактного вычислителя в конкретном, целесообразно рассмотреть понятия последовательного, параллельного и совместного ис-
1.4. ВЫЧИСЛЕНИЯ И ТЕКСТ
49
Выделение памяти для X Выделение памяти для Y
Чтение X
Y = X * X * X;

^"^^^* В любом порядке
Y = Y~~ * Y * "X;
I
Вывод X и Y
I
Завершение вычислений
X
Рис. 1.5. Структура вьтислений программы
50
1.
Программа j
Подключение внешних текстов
Глобальные описания
одкл чение внешних текстов
#include <stdio.h>
Объявление главной функции
int main (void)
Начало блока
ОписаниП ^T-J I Конец блока і
int X;
Описание ^тор!^
int Y;-
scanf( "%d", &X );-Y = X * X * X;-
Описания Оператор ввода Оператор Операторы^
Оператор присваивания
Оператор Операторы
Y = Y * Y * X;
ператор присваивания
X
printf ("\n7 power of %d is %d\n", X, Y );-
return 0;
Оператор Операторы I '--^--'
Оператор вывода
Оператор
Рис. 1.6. труктура текста программы 1.3.3
1.4. ВЫЧИСЛЕНИЯ И ТЕКСТ
51
полнения.
При последовательном вычислении последовательность языковых конструкций переходит в команды абстрактного вычислителя, исполняемые строго в том порядке, которй явно задан в тексте программ (именно так, в первом прибли ении, интерпретируется последовательность операторов, разделенных в языках С и Pascal).
Параллельное вычисление означает, что для выполнения двух и более команд абстрактного вычислителя выделяется соответствующее число процессоров, кадый из которых вполняет сво команду (в стандартном С понятие параллельности отсутствует, в Алголе-68, Concurrent Pascal и других язках параллельные участки часто выделя тся отдельными программными скобками, например, parbegin и parend; обрамляемые ими операторы могут быть выполнены параллельно).
а е если на маине всего один процессор, указание на параллельность процессов часто полезно, поскольку оно позволяет организовать квазипараллельное исполнение, при котором команды кадого из процессов исполня т-ся в строгом порядке, но они могут перемежаться в абстрактном вычислителе командами другого, квазипараллельно исполняемого, процесса. В частности, это позволяет более производительно использовать время, которое процесс тратит на о идание заверения операции ввода-вывода. апример, при таком исполнении отрезок программы рпПт("Первый результат: %d, %d\n", X, Y);
Оператор 1;
Оператор n; printf("Второй результат: %d , %d\n", Z, V);
выполняется в следующем порядке. Запускается первая печать, и, поскольку этот процесс длительный, начина т вполняться последуие операторы. Если они не успеют выполниться, пока печатается первая строка, то все в порядке, если успе т, то перед печать второй строки придется подо дать, пока допечатается первая.
Предыдущая << 1 .. 13 14 15 16 17 18 < 19 > 20 21 22 23 24 25 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100