1611678431-0e68e83522cb9d960ac896aa5d90854d (Билеты - Ответы), страница 3

PDF-файл 1611678431-0e68e83522cb9d960ac896aa5d90854d (Билеты - Ответы), страница 3 Программирование (85810): Ответы (шпаргалки) - 2 семестр1611678431-0e68e83522cb9d960ac896aa5d90854d (Билеты - Ответы) - PDF, страница 3 (85810) - СтудИзба2021-01-26СтудИзба

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

PDF-файл из архива "Билеты - Ответы", который расположен в категории "". Всё это находится в предмете "программирование" из 2 семестр, которые можно найти в файловом архиве НГУ. Не смотря на прямую связь этого архива с НГУ, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 3 страницы из PDF

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

Их нужно переправить на правый берег. Лодка, помимо лодочника,вмещает лишь одного из троих (волка, козу или капусту). При этом нельзяоставлять наедине волка с козой, а также козу с капустой. Правильностьследующего решения этой задачи очевидна из аннотаций, использующих дведополнительные переменные ЛевыйБерег и ПравыйБерег:module ПЕРЕПРАВА;begin(*{ЛевыйБерег=(лодочник, волк, коза, капуста), ПравыйБерег=()}*)writeln('Перевезти козу.');(*{ЛевыйБерег=(волк, капуста), ПравыйБерег=(лодочник, коза)}*)writeln('Переправиться без груза.');(*{ЛевыйБерег=(лодочник, волк, капуста), ПравыйБерег=(коза)}*)writeln('Перевезти волка.');(*{ЛевыйБерег=(капуста), ПравыйБерег=(лодочник, волк, коза)}*)writeln('Перевезти козу.');(*{ЛевыйБерег=(лодочник, коза, капуста), ПравыйБерег=(волк)}*)writeln('Перевезти капусту.');(*{ЛевыйБерег=(коза), ПравыйБерег=(лодочник, волк, капуста)}*)writeln('Переправиться без груза.');(*{ЛевыйБерег=(лодочник, коза), ПравыйБерег=(волк, капуста)}*)writeln('Перевезти козу.')(*{ЛевыйБерег=(), ПравыйБерег=(лодочник, волк, коза, капуста)}*)end ПЕРЕПРАВА.9.

Иерархия языковых конструкций. Лексемы и понятия. БНФ и синтаксическиедиаграммыЛекции: фото 5Удобным представляется взгляд на язык программирования как на иерархию конструкций,позволяющую в удобной для человека нотации оперировать с простыми и составными данными идействиями. Не все языки высокого уровня обладают каждым из приведенных средств, а некоторыеязыки (например, Алгол 68) разрешают операторам находиться в выражениях. Тем не менее, всеэлементы• функции• выражения• операциииерархии типичны для языков высокого уровня и знакомы любому пользователю независимоот того, какой конкретный язык программирования высокого уровня он применяет в своей работе.Верхний уровень иерархии образует сама программа — основная единица для трансляции ивыполнения.Ниже идут подпрограммы (процедуры, блоки и т.

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

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

Это — способы задания сложных действий, складывающихся из ряда уже заданныхдействий как встроенных в исполняющую машину, так и определенных в ней программистом спомощью других действий.Хотя использование конструкций в разных языках программирования имеет свою спецификус точки зрения синтаксиса и семантики, тем не менее, в любом языке имеется определеннаясогласованность синтаксических и семантических правил построения элементов иерархии из техконструкций, которые занимают более низкие уровни.программыподпрограммыоператорывыраженияданныеоперациифункцииЛексемы – для записи данных, операций, функций.Понятия – для записи программ (более сложных конструкций).Лексема(информатика)—последовательностьдопустимыхсимволовязыкапрограммирования, имеющая смысл для транслятора.Описание языка тоже должно быть записано на некотором языке, который выступает в этомслучае в роли метаязыка.

Для описания синтаксиса используются формальные нотации.Форма Бэкуса–Наура (БНФ)< > — служат для выделения нетерминалов — понятий языка.| — “или”. Разделяет альтернативные правые части правил.::= — “есть по определению”.Нотация Расширенного Бекуса-Наура Формализма (РБНФ), используемая в данном описанииязыка Zonnon, характеризуется следующими свойствами:Альтернативы разделяются символом |.Скобки [ и ] обозначают факультативность выражения в скобках.Скобки { и } обозначают повторение содержимого (возможно 0 раз).Скобки ( и ) используются для формирования групп элементов.Нетерминальные символы начинаются с прописной буквы (например, Statement).Терминальные символы либо начинаются со строчной буквы (например, letter), либозаписывается целиком строчными буквами (например, begin), или представляются ввиде строк (например, ":=").Комментарии начинаются с символа // и продолжаются до конца строки.1.1.1 Описание РБНФ с помощью РБНФВ качестве примера можно определить синтаксис РБНФ с помощью самого РБНФSyntax = {Production}.Production = NonTerminalSymbol "=" Expression ".".Expression = Term {"|" Term}.Term = Factor {Factor}.Factor = terminalSymbol | NonTerminalSymbol |"(" Expression ")" | "[" Expression "]" | "{" Expression "}" .1.1.2 Описание РБНФКонструкции РБНФ описаны ниже:1.1.2.1.

ПоследовательностьA = BC.A состоит из B, за которым следует CПримеры:Sentence = Subject Predicate.FileName = Name '.' Extension.Name = FirstName Surname.1. 1.2.2. ПовторениеA = {B}.A состоит из нуля или более символов B.Примеры:File = {Record}.Bill = {Item Price}.1.1.2.3. ВыборA = B | C.A состоит из B или C.Примеры:Fork = Resource | Data.Meal = Breakfast | Lunch | Dinner.1.1.2.4. ФакультативностьA = [B].A состоит из B или пусто.Пример:SelectedDrink = [ Tea | Coffee | Chocolate ]. // Возможно отсутствие!1.1.2..5. Кавычки и полужирный шрифтТекст в кавычках и текст, выделенный полужирным шрифтом, изображает сам себя.Примеры:ImportDeclaration = import Import {"," Import}.OwnSymbol = "me" | self.Синтаксическая диаграмма - графическое представление синтаксиса языка программирования.Синтаксические диаграммы соответствуют расширенной форме Бэкуса-Наура и используются приописании языка программирования.СПИСОК= "A"| ["," СПИСОК].Рис.

1.4. Синтаксическая диаграмма понятия СПИСОКПример:10. Понятие типа и системы типов языка высокого уровня. Простые, составные,первичные, стандартные, библиотечные и конструируемые типы, отношения между типами.Статическая и динамическая типизация, строгая типизацияЛекции: фото 10Высокоуровневый язык программирования — язык программирования, разработанный длябыстроты и удобства использования программистом. Основная черта высокоуровневых языков — этоабстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных иоперации над ними, описания которых на машинном коде (или другом низкоуровневом языкепрограммирования) очень длинны и сложны для понимания.Система типов ЯВУ: Набор первичных (предопределённых типов); Набор конструкторов типов (правила конструирования новых типов); Правила согласования (эквивалентности и совместимости типов).Первичные типыСтандартные (целые, вещественные, логический, литерный);Библиотечные (задаются модулями, классами).Динами́ ческая типиза́ ция — (переменная не имеет типа, тип имеют значения; в моментвремени переменная имеет тип своего значения) приём, широко используемый в языкахпрограммирования и языках спецификации, при котором переменная связывается с типом в моментприсваивания значения, а не в момент объявления переменной.

Таким образом, в различных участкахпрограммы одна и та же переменная может принимать значения разных типов. Примеры языков, гдеесть динамическая типизация — Smalltalk, Python, Objective-C, C#, Ruby, PHP, Perl, JavaScript, Lisp, xBase.+ Минимум дополнительных строк: переменные надо либо просто объявить безуказания типа (JavaScript), либо вообще объявлять не нужно (Бейсик) или необязательно (PHP). Соответственно, упрощается написание простых программ. Повышается гибкость языка. Например, только динамический язык может иметьфункцию eval(), вычисляющую значение произвольного выражения. Ускоряет работу компилятора — а значит, производственный цикл «написатьпроверить». Автоматически даёт языку элементы метапрограммирования и интроспекции.− Статическая типизация позволяет уже при компиляции заметить простые ошибки «понедосмотру».

Для динамической типизации требуется как минимум выполнить данныйучасток кода. Особенно коварны в динамическом языке программирования опечатки: разработчикможет несколько раз просмотреть неработающий код и ничего не увидеть, поканаконец не найдёт набранный с ошибкой идентификатор. В объектно-ориентированных языках не действует либо действует с ограничениямиавтодополнение: трудно или невозможно понять, к какому типу относится переменная,и вывести набор её полей и методов. Для написания сложного кода нужна особая культура программирования: венгерскаянотация, юнит-тестирование и т. д. Интерфейсная часть модуля (описания типов, заголовки процедур и т. д. — то, чтосоответствует interface-секции в Паскале и h-файлу в Си) в статическом языке сама посебе является существенной частью документации — а изредка вообще позволяетобойтись без документирования. Низкая скорость, связанная с динамической проверкой типа.

К тому же большинствоязыков с динамической типизацией интерпретируемые, а не компилируемые.Стати́ ческая типиза́ ция — (тип не меняется) приём, широко используемый в языкахпрограммирования, при котором переменная, параметр подпрограммы, возвращаемое значениефункции связывается с типом в момент объявления и тип не может быть изменён позже (переменнаяили параметр будут принимать, а функция — возвращать значения только этого типа). Примерыстатически типизированных языков — Ада, Си++, Паскаль.Строгая типизация — один из вариантов политики работы с типами данных, котораяиспользуется в языках программирования.Строгая типизация подразумевает выполнение следующих обязательных условий:1. Любой объект данных (переменная, константа, выражение) в языке всегда имеетстрого определённый тип, который фиксируется на момент компиляции программы(статическая типизация) или определяется во время выполнения (динамическаятипизация).2.

Допускается присваивание переменной только значения, имеющего строго тот же типданных, что и переменная, те же ограничения действуют в отношении передачипараметров и возврата результатов функций.3. Каждая операция требует параметров строго определённых типов.4. Неявное преобразование типов не допускается (то есть транслятор воспринимаетлюбую попытку использовать значение не того типа, который был описан дляпеременной, параметра, функции или операции, как синтаксическую ошибку).Строгая типизация подразумевает:1. Каждый программный объект имеет только один тип.2.

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