Skip to content

SUSU-SP-DISTRIBUTED/Lab-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Lab-1

Лабораторная 1

Дата последней сдачи (21.09.2013)
Основы языка C#

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

Преобразование выражения в обратную польскую запись

Как правило, арифметические выражения удобно преобразовывать в обратную польскую запись (ОПЗ), чтобы избавиться от скобок, содержащихся в выражении. Выражения, преобразованные в ОПЗ, можно вычислять последовательно, слева направо. Для преобразования выражения в ОПЗ понадобится стек для переменных типа string, т.к. исходное выражение мы получаем в виде строки. Рассматриваем поочередно каждый символ (или множество символов, которые образуют число):

  • Если этот символ - число (или переменная), то просто помещаем его в выходную строку.
  • Если символ - знак операции (+, -, *, / ), то проверяем приоритет данной операции.
  • Операции умножения и деления имеют наивысший приоритет (допустим он равен 3).
  • Операции сложения и вычитания имеют меньший приоритет (равен 2).
  • Наименьший приоритет (равен 1) имеет открывающая скобка.

Получив один из этих символов, мы должны проверить стек:

  1. Если стек пуст, или находящиеся в нем символы (а находится в нем могут только знаки операций и открывающая скобка) имеют меньший приоритет, чем приоритет текущего символа, то помещаем текущий символ в стек.
  2. Eсли символ, находящийся на вершине стека имеет приоритет, больший или равный приоритету текущего символа, то извлекаем символы из стека в выходную строку до тех пор, пока выполняется это условие; затем переходим к пункту 1).
  3. Если текущий символ - открывающая скобка, то помещаем ее в стек.
  4. Если текущий символ - закрывающая скобка, то извлекаем символы из стека в выходную строку до тех пор, пока не встретим в стеке открывающую скобку (т.е. символ с приоритетом, равным 1), которую следует просто уничтожить. Закрывающая скобка также уничтожается.
  5. Если вся входная строка разобрана, а в стеке еще остаются знаки операций, извлекаем их из стека в выходную строку.

Алгоритм вычисления выражения, записанного в ОПЗ

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

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

Проверочные тесты смотри в .doc файле


Задание 2
Цель работы.
Познакомиться с возможностями сетевого взаимодействия приложений на основе протокола TCP.
Краткие теоретические сведения.
Сокет - конечная точка связи двустороннего канала между 2 процессами, выполняющимися либо на одном, либо на разных компьютерах, соединенных сетью. При соединении 2-х сокетов образуется канал, через который можно передавать данные в обе стороны. Одна сторона канала называется сервером, другая - клиентом. Существует 2 вида сокетов: потоковые и дейтаграммные.
Потоковые сокеты работают с установкой соединения, обеспечивая надежную идентификацию обоих сторон, гарантируют целостность и успешность доставки данных. Основываются на протоколе TCP.
Дейтаграмные сокеты работают без установки соединения и не обеспечивают ни идентификации отправителя, ни контроля успешности доставки данных. Ввиду этого они заметно быстрее потоковых. Основываются на протоколе UDP.
Сокеты связываются между собой через порты.

Задание.
Разработать на языке C# клиент-серверное приложение – арифметический калькулятор. Клиентская программа предоставляет пользователю интерфейс ввода арифметического выражения, отправляет его серверу, получает и отображает пользователю итоговый результат. Соответственно, серверная программа принимает арифметическое выражение, вычисляет и отправляет клиенту результат. Разбор и вычисление арифметического выражения осуществляется посредством ОПМ. Реализация поддержки одновременной работы сервера с несколькими клиентами обязательна. Программы консольного типа.

About

Лаборатоная 1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors