лекции (2009), страница 5

2019-09-19СтудИзба

Описание файла

Текстовый-файл из архива "лекции (2009)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр 5 страницы текстового-файла онлайн

основном делить всю программу на три больших блока: подготовка - считывание данных и тому

подобное,обработка, и собственно вывод.

Альтернативы GOTO:

* Ветвление.

* Циклы

* Процедуры

* Переходы - return, break, continue, goto

* Составной оператор(блок)

Напомню блок - это объявление + операторы.

Не во всех языках был реализован составной оператор. Во многих языках(АДА, Модула 2, Оберон) отказались

от понятия составного оператора, там группа операторов явно замыкается специальным оператором

(например

IF (TRUE)

<OPERATOR1>

<OPERATOR2>

...

<OPERATORN>

END)

То есть они придумали альтернативное решения для составного оператора - замыкание

операторов(завершающий элемент).

1.

Оператор if.

Сразу же о проблеме, с которой столкнулись разработчики - вложенные if else. Решение else -

прикрепляется к ближайшему if, если мы хотим избежать этого то нужно использоватьсоставной

оператор. Надо различать понятие БЛОК и Составной оператор: блок – составляет область видимости, а в

составном операторе нет области видимости.

Простое ветвление:

С,C++:

if (B) then

Operator1

else

Operator2

АДА:

if B then

S1;S2;S3;...

End if

Оберон:

IF B THEN

S1;S2;S3;S4...

ELSE

S1;S2;S3;S4...

END

SHELL

if

...

fi

Иногда применяется многовариантное ветвление(многосложное)

if B1 then S1

else if B2 then S2

else if B3 then S3

else if B4 then S4...

Она эстетически не красивая, опытные программисты записывают её в столбик.

if B1 then S1

else if B2 then S2

else if B3 then S3

else if B4 then S4...

Теперь попробуете записать эту же самую конструкцию на языке в котором нет понятия составного

оператора, там это выглядит ещё ужаснее, появляется много закрывающих опероторов в конце.

2. Оператор выбора - дискретный случай.

в Паскале:

Case Expr of

список вариантов, Вариант имеет вид const: оператор;

End

В чистом Паскале нет else(default) константы.

В С, C++, Java, C#:

switch (expr) of {

case 1: ... break;

...

case n: ... break;

default: ... break;

}

Java не поддерживает GOTO, однако в данной конструкции она неявно используется. break - указатель на

переход на конец структуры, если его нет, то дальше выполнится следующий case. Если в С++, С, Java - break

было писать не обязательно после каждого case, то в С# стало обязательным(ошибка компиляции). Если в С#

мы хотим после завершения данного case перейти на следующий надо использовать оператор перехода.

Модула - 2:

CASE EXPR OF

1: ... |

2..4 : ... |

ELSE ...

END

Ада:

Case expr of

when <список констант иди диапазонов> => оператор1

...

when <список констант иди диапазонов> => операторN

when others => операторы

End case;

3. Операторы циклы.

Выделяют 4 вида цикла:

1. Пока

While B loop .. End loop (ADA)

WHILE B DO .. END (Modula - 2)

While (B) S(C, C++)

While B do S(Pascal)

2. До

REPEAT UNTIL B; (Modula - 2)

do S while (B); (С, C++)

3. FOR for v:= r1 to t2 do S(Pascal).

Возможно использование downto

for (подготовка; проверка на выход; действия после каждой итерации)(C++, C)

в Java, C# аналогично С, только там на каждой итерации осуществляется квазистатический контроль,

то есть A[i] - должен на самом деле существовать, чтобы не вызвать ошибки.

FOR V:= E1 TO E2[STEP E3(целое значение)] DO END(Модула - 2) можно было задавать шаг.

Он мог быть как отрицательным так и положительным. E1, E2 - типы, к которым применима

операция сложения и вычитания. В одно время сложилось тенденция, что цикл for - вообще, как таковой не

нужен, можно обойтись другими видами цикла, но в 1993 - вышел Оберон - 2, который по идее является

минимальным полным языком для написания любой программы, куда вошел и цикл for.

for v in <диапазон> loop .. end loop

for i in A'RANGE loop S:= S + A(i); end loop

for i in A'FIRST..A'LAST loop S:= S + A(i); end loop; (Ада)

Так как квазистатический контроль на каждой итерации цикла считается неэффективным в С# был

придуман еще один вариант цикла for - особая форма цикла.

foreach (T o in C) S;

int a[];

foreach (int x in a) S = S + x;

C - произвольная коллекция.

тип T должен наследоваться от IEnumerable, в которой входит такой метод, как получить

следующий элемент. В Java сей цикл был реализован в 2005 году.

4. Бесконечный цикл

LOOP

... IF B THEN ... EXIT

END (Модула - 2)

while (1) {... break...}

for(;;) {... break ...} (C++, C)

Loop

...

when B => exit

...

end loop (Ada)

Раньше не было понятно применение бесконечного цикла, сейчас появилось много сервисов, которые

работают по 24 часа в сутки, там к примеру для приёма сообщений и их обработки используется бесконечный

цикл.

Не обязательно присутствие всех 4 видов цикла в языка, так в АДЕ отсутствует ДО.

Чаще всего работа с циклом строится по следующей схеме:

1. Подготовка к вводу

2. Обработка

3. На каждой итерации проверка на завершение.

В Циклах используются вспомогательные операторы break и continue.

break - оператор выхода из цикла

continue - переход на следующую итерацию цикла

goto - перейти на помеченное место в программе. В Модуле - 2, Java.

Обероне отсутствует. Нельзя по goto выйти за пределы функции или процедуры, в которой он находится.

Лекция. Лихогруд Н.Н.

Операторы перехода

goto

break;

continue; (в Модуле-2 EXIT)

return;

В современных языках программирования goto является только локальным

Для организации не локальных переходов:

setjmp, longjmp – В Си++ используются для обработки ошибок.

throw, trace – Обработка исключений

Также существуют специальные операторы для организации параллелеризма

Lock(obj) {блок} – Си#. Поток управления блокируется, если блок кем-то используется

accept, select – Ада

Базисы:

Язык Ассемблера <––> Си <––> Си++ < ––> Java, C#

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

Каков минимальный набор средств развития?

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

Глава 5. Подпрограмма

п5.1 Потоки управления – подпрограммы и сопрограммы

Управление входит через заголовок в блоке и возвращается в точку вызове, после выполнения тела.

CALLER – вызывающий подпрограмму(надпрограмма)

CALLEE – вызываемая подпрограмма

Процедуры (подпрограммы,

NARTROFдалее – п/п)

Модульность

Межмодульные связи:

По данным – общие блоки

По управлению – вызов п/п

SUBROUTINE – подпрограмма

COROUTINE – сопрограмма

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

Впервые механизм сопрограмм был придуман для компилятора COBOL. Вспомните задание по Си++ в 4-м

семестре, где нужно было написать транслятор модельного языка:

Лексический анализатор, Синтаксический анализатор, Генератор кода – всё это сопрограммы.

//PP

….

….

call P

//P

….

….

Неравенство

//PP

….

….

resume P

//P

….

….

resume PP

….

Равенство

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5302
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее