Разное

Префиксная и постфиксная формы записи выражений самостоятельная работа: Префиксная и постфиксная формы

Префиксная и постфиксная форма записи. 10 класс. | Презентация к уроку по информатике и икт (10 класс) на тему:

Слайд 1

Префиксная и постфиксная формы записи выражений

Слайд 2

Структура, в которой одни элементы, «подчиняются» другим, называется иерархией . В информатике иерархическую структуру называют деревом . корень лист лист лист лист лист

Слайд 3

Дерево состоит из узлов и связей между ними (они называются дугами) дуга корень листья промежуточные узлы

Слайд 4

A D B E F G C «Сыновья» А : B, C . «Родитель» B : A . «Потомки» А : B, C , D, E, F, G . «Предки» F : A, C . Корень – узел, не имеющий предков (A) . Лист – узел, не имеющий потомков (D, E, F, G) . Высота – наибольшее расстояние от корня до листа.

Слайд 5

Деревья – классификации Псовые Енотовые Медвежьи Кошачьи Гиеновые Мангустовые Псообразные Кошкообразные Хищные Глава 1. Псообразные 1.1. Псовые 1.2. Енотовые 1.3. Медвежьи … Глава 2. Кошкоообразные 2. 1 . Кошачьи 2.2 . Гиеновые 2.3. Мангустовые … многоуровневый список

Слайд 6

Иерархия – файловая система Документы Фотографии Доходы .doc Расходы . odt Отдых.txt Папа.jpg Мама.gif Тексты Документы Тексты Фотографии Доходы.doc Расходы.odt Отдых.txt Папа. jpg Мама. gif Документы Доходы.doc Расходы.odt Отдых.txt Тексты Фотографии Папа. jpg Мама. gif

Слайд 7

Деревья и арифметические выражения a 3 — + * 5 2 b * (a+3)*5-2*b (-(*(+(a,3),5) ,*(2,b) )) ( корень ( левое , правое )) — * + a 3 5 * 2 b Префиксная форма – операция перед данными. Двоичное дерево! ! левый сын правый сын

Слайд 8

Префиксная форма – вычисление с конца — * + a 3 5 * 2 b — * + a 3 5 ( 2 * b ) — * ( a+3) 5 ( 2 * b ) — ( a+3)*5 ( 2 * b ) ( a+3)*5 – (2 * b ) Скобки не нужны, вычисляется однозначно! ! Идём с конца, встретили знак операции – выполнили её.

Слайд 9

Префиксная форма – вычисление с конца (идём с конца, встретили знак операции – выполнили её). Операция записывается перед данными! Пример: ( a+3)* 5–( 2 * b ) -*+a35 * 2 b 1) — * + a 3 5 ( 2 * b ) 2) — * ( a+3) 5 ( 2 * b ) 3) — ( a+3)*5 ( 2 * b ) (корень (левое, правое))

Слайд 10

Постфиксная форма ( левое-правое-корень ) a 3 — + * 5 2 b * (a+3)*5-2*b a 3 + 5 * 2 b * — Вычисляется с начала! ! (a+3) 5 * 2 b * — (a+3)*5 2 b * — (a+3)*5 ( 2 * b ) — (a+3)*5 — ( 2 * b )

Слайд 11

Постфиксная форма . Вычисляется с начала! (a+3)*5-2*b Пример: a3+5 *2b *- 1) (a+3 ) 5 * 2 b * — 2) (a+3 )*5 2 b * — 3) (a+3 )*5 ( 2 * b ) — левое, правое, корень Операция записывается после данных!

Слайд 12

Постфиксная форма для компьютера предпочтительней Когда программа на языке программирования высокого уровня переводится в машинные коды, математические выражения записываются в бесскобочной постфиксной форме, так и вычисляются. Когда программа доходит до знака операции, все данные для этой операции уже готовы. a 3 + 5 * 2 b * —

Слайд 13

Определите выражени е , соответствующее данному дереву, в «нормальном» виде со скобками (эту форму называют инфиксной – операция записывается между данными). Постройте постфиксную форму. Решение: a-( b+c )*d Постфиксная форма: abc+d *- b c — + a d *

Слайд 14

Записать выражение в префиксной форме: (2* a-3*d)*c+2*b + * — * 2 a * 3 d c * 2 b префиксная форма Идём с конца, встретили знак операции – выполнили её.

Слайд 15

Записать выражение в постфиксной форме: (2* a-3*d)*c+2*b 2 a * 3 d * — c * 2 b * + постфиксная форма Вычисляется с начала!

Слайд 16

(2* a-3*d)*c+2*b 2 * 3 d — c а * b + * 2 *

Слайд 17

Выполнить самостоятельно в тетради: задания 1б, 2а, 3а ( у чебник, стр. 49-50) Ответы: 1б — a-(b-(c-d)) a b c d — — — 2a * + a b + c * 2 d a b + c 2 d * + * 3a 66 (12+6)*(7-3-1)+12 + * + 12 6 — — 7 3 1 12

Слайд 18

Домашнее задание: Учебник стр. 38-40 читать Задания 1в, 2в, 3б,в письменно в тетради

Программа междисциплинарного государственного экзамена по специальности 230105 программное обеспечение вычислительной техники и автоматизированных систем

страница 1


УТВЕРЖДАЮ

Зав.кафедрой МПО ЭВС В.Г.Шаров

2013/2014 уч.год

ПРОГРАММА МЕЖДИСЦИПЛИНАРНОГО ГОСУДАРСТВЕННОГО ЭКЗАМЕНА ПО СПЕЦИАЛЬНОСТИ 230105 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И АВТОМАТИЗИРОВАННЫХ СИСТЕМ


  1. Понятие дескриптора структуры данных. Статические структуры данных. Методы размещения и доступ к отдельным элементам.

  2. Линейные динамические структуры данных. Разновидности списков. Способы реализации и основные операции.

  3. Нелинейные динамические структуры: деревья. Основные операции над бинарными деревьями. Идеально сбалансированное дерево. АВЛ дерево. Алгоритмы работы со сбалансированным деревом.

  4. Преобразование ключа. Методы доступа к данным с использованием хеш — функций. Основные определения, операции и алгоритмы.

  5. Виды записи выражений: префиксная, инфиксная, постфиксная, преимущества одной формы записи перед другой. Алгоритм преобразования инфиксного выражения в постфиксное.

  6. Логическое программирование. Пролог — язык логического программирования, область применения, принципиальное отличие от процедурных языков. Понятие Пролог-машины. Алгоритм согласования цели. Описание знаний в Прологе. Динамические базы данных.

  7. Функциональные языки программирования. Области применения. Принципиальные отличия функциональных языков от процедурных. Рекурсивные функции.

  8. Понятия транслятора, компилятора, интерпретатора. Ти­повая схема компиляции. Основные модули компилятора.

  9. Синтаксис и семантика языка программирования. Формальные способы описания синтаксиса. Понятие формальной грамматики, основные определения, классификация грамматик.

  10. Методы синтаксического анализа. Метод рекурсивного спуска. Определение LL-грамматик, синтаксический анализ по LL-грамматикам.

  11. Классификация операционных систем.

  12. Планирование процессов.

  13. Методы решения задач синхронизации процессов.

  14. Принципы построения файловых систем.

  15. Построение резидентных программ.

  16. Построение драйверов.

  17. Классификация архитектур вычислительных систем.


  18. Принцип модульного программирования.

  19. Особенности программирования в средах «Си-Ассемблер» и «Паскаль-Ассемблер».

  20. Модели памяти языка Си.

  21. Жизненный цикл программного обеспечения, модели жизненного цикла.

  22. Объектно-ориентированный подход к проектированию программного обеспечения, методология RUP.

  23. Структурный подход к проектированию программного обеспечения.

  24. Надежность и тестирование программного проекта.

  25. Понятие компонентного программирования, технологии COM, ActiveX.

  26. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм.

  27. Объектно-ориентированное программирование: внутренняя организация объекта.

  28. Объектно-ориентированное программирование: события и делегирование.

  29. Обработка исключительных ситуаций; исключительные ситуации как объекты.

  30. Данные в языках программирования: понятие типа данных, назначение типов, состав набора типов, способы реализации в языках программирования, принцип строгой типизации.

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

  32. Динамические объекты в программах: назначение, моде­ли, типовые действия, реализация в языках программирования, приемы надежного использования, сферы применения.

  33. Задача и алгоритмы сортировки. Оценка сложности.

  34. Задача и алгоритмы поиска. Оценка сложности.

  35. Реляционная модель представления данных.

  36. Концептуальное проектирование баз данных в СУБД.

  37. Основные средства языка SQL.

  38. Структура и функции СУБД. Механизмы реализации.

  39. Архитектура «клиент-сервер». Модели и механизмы взаи­модействия.

  40. Принципы построения видеоизображения. Видеосистемы.

  41. Алгоритмы построения 2D изображений.

  42. Алгоритмы построения 3D изображений. Перспективные изображения.

  43. Хранение графических изображений.

  44. Корректные и некорректные конфигурации ПАБС (парал­лельных асинхронных блок-схем).

  45. Параллельное программирование. Нити и потоки.

  46. Дискретная динамическая система как наиболее общая модель параллельных вычислений.

  47. Топология вычислительных сетей и их характеристика. Физические среды для передачи данных и их характеристики.

  48. Эталонная модель взаимодействия открытых распределен­ных систем. Функции уровней модели.

  49. Технология FAST ETHERNET.Основные характеристики.

  50. Язык разметки гипертекста HTML.

  51. Технология PHP.

  52. Технологии Java и ActiveX.

  53. Языки написания сценариев (VBScript, JavaScript).

  54. Объектные модели броузеров Internet Explorer.

  55. Internet Information Server как пример Web-сервера.

  56. Стек протоколов TCP/IP.

  57. Нейрокомпьютерные сети. Основные свойства и структуры.

  58. Методы обучения нейросетей.

  59. Задача математического программирования: постановка задачи и методы решения.

  60. Задача линейного программирования.

  61. Критерии качества человеко-машинного интерфейса.

  62. Методы защиты внешнего периметра локальной системы от несанкционированного доступа.

страница 1

Смотрите также:

Программа междисциплинарного государственного экзамена по специальности 230105 программное обеспечение вычислительной техники и автоматизированных систем
38. 17kb. 1 стр.


Методические указания по практическим занятиям и самостоятельной работе студентов по специальностям: 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»
117.96kb. 1 стр.


Рабочая учебная программа для студентов специальности «Комплексное обеспечение информационной безопасности автоматизированных систем»

137.25kb. 1 стр.


java — Использование постфиксных/префиксных выражений

Вопрос задан

Изменено 5 лет, 9 месяцев назад

Просмотрено 831 раз

1

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

Я понимаю в префиксе/постфиксе, не надо заморачиваться насчет старшинства операторов. Но где мы используем префиксные/постфиксные выражения? Они внутренне преобразованы компилятором? Есть ли способ написать выражение в префиксе/постфиксе, и компилятор оценит его для меня?

  • Java
  • алгоритм

8

РЕДАКТИРОВАТЬ: Если вы на самом деле говорите о постфиксной (RPN) нотации, то нет, компилятор использует инфиксную нотацию для выражений. Вы можете написать алгоритм, который преобразует выражение RPN в инфиксное выражение, попробуйте этот

Постфиксные и префиксные операторы похожи на бинарные операторы, но они работают только с одним операндом.

Приращение постфикса (приращение происходит после оценки переменной):

 целое х = 1;
интервал у = х++; // y = 1, но после присваивания x = 2
интервал г = х; // г = 2
 

Приращение префикса:

 int x = 1;
интервал у = ++х; // y = 2 и до того, как произойдет присваивание x = 2
интервал г = х; // г = 2
 

Правила, применимые к оператору приращения, также применяются к оператору декремента.

Префикс НЕ (инвертирует логическое выражение):

 логическое значение a = true;
логическое значение b = !a; // б = ложь, а = истина
 

Я думаю, что правильно понял вопрос, но я не уверен, что вы имеете в виду, когда говорите, что компилятор «оценивает» их «для вас».

Я подозреваю, что префиксные и постфиксные операции и обозначения в наши дни в основном полезны для теорий, но они использовались «на самом деле». См., например. https://en.wikipedia.org/wiki/Stack_machine, https://en.wikipedia.org/wiki/Forth_%28programming_language%29, http://linux.about.com/library/cmd/blcmdl1_dc.htm, и https://en.wikipedia.org/wiki/Reverse_Polish_notation#Hewlett-Packard

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

 а = (3 + 4) * 5
 

или

 а = * + 3 4 5
 

Будет преобразовано (в воображаемом очень простом наборе инструкций):

 добавить r0 3 4 # r0 = 3 + 4
мул r1 r0 5 # r1 = r0 * 5
 

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

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

9Приращение 0000. Почему С++ принимает несколько префиксов, но не постфиксов для переменной

Вопрос

Изменено 2 года, 8 месяцев назад

Просмотрено 2k раз

7

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

Изучая Можете ли вы иметь инкрементор и декрементор для одной и той же переменной в одном и том же операторе в c

Я обнаружил, что у одной переменной может быть несколько префиксных операторов увеличения/уменьшения, но только один постфикс

ex:

 ++--++foo; // действительный
фу++--++; // инвалид
--фу++; // инвалид
 

Почему это?

  • c++
  • приращение
  • префикс
  • декремент
  • постфикс-оператор

Это связано с тем, что в C++ (но не в C) результатом lValue является значение

++3x 90 является назначаемым и, таким образом, может использоваться в цепочке.

Однако результатом x++ является НЕ lValue, а prValue, что означает, что его нельзя присвоить и, следовательно, нельзя связать.

0

В языке C++ префиксные операторы инкремента/декремента возвращают lvalue , а постфиксные операторы возвращают rvalue . Между тем, все операторы модификации требуют аргументов lvalue. Это означает, что результат инкремента/декремента префикса может быть передан любому другому дополнительному оператору, который требует аргумента lvalue (включая дополнительные инкременты/декременты).

По той же причине в C++ вы можете написать такой код

 int i = 0;
интервал *p = &++i;
 

, что увеличит i и сделает p точкой i . Унарные и требуют операнда lvalue, поэтому он будет работать с результатом префикса ++ (но не с постфиксом).

Выражения с несколькими встроенными инкрементами/декрементами префикса, примененными к одному и тому же объекту, приводят к неопределенному поведению , но они, тем не менее, правильно сформированы (т. е. «компилируемые»).

Выражения типа ++foo-- недействительны, так как в C++ постфиксные операторы имеют более высокий приоритет, чем префиксные. Брекеты могут это изменить.

Добавить комментарий

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