Файл: Анализ применения условных операторов в разных языках программирования.docx
Добавлен: 07.11.2023
Просмотров: 148
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ ТАДЖИКИСТАНАФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ИСКУССТВЕННОГО ИНТЕЛЛЕКТАКАФЕДРА ПРОГРАММИРОВАНИЯ И КОМПЬЮТЕРНОЙ ИНЖЕНЕРИИ
ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ ТАДЖИКИСТАНАФАКУЛЬТЕТ ИФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ИСКУССТВЕННОГО ИНТЕЛЛЕКТАКАФЕДРА ПРОГРАММИРОВАНИЯ И КОМПЬЮТЕРНОЙ ИНЖЕНЕРИИ «УТВЕРЖДАЮ»Заведующий кафедрой программирования и компьютерной инженерии_________ к.т.н., и.о. доц. Гуломсафдаров А.Г. «____» _________________________ 2023 г.
ВВЕДЕНИЕОдной из проблем, с которой сталкивается программист при написании параллельной программы, является семантический разрыв между параллельным алгоритмом в его математической форме и его реализацией на многопроцессорной вычислительной системе (МВС). Структурно-процедурная организация вычислений позволяет решать эту проблему. Для эффективной реализации на многопроцессорных системах вычислительных алгоритмов необходим язык программирования высокого уровня (ЯПВУ), обладающий следующими качествами.
Язык должен эффективно реализовываться на различных МВС;Иметь средства для записи алгоритмов без изменения их начальной параллельной структуры;Язык должен позволять программисту максимально просто описывать различные виды параллелизма, реализованные в МВС, в достаточно сжатом виде;Cодержать мощные конструкции, как в традиционных ЯПВУ типа Фортрана, Си и т.п.Для МВС со структурно-процедурной организацией вычислений (СПОВ) возможен качественно новый принцип описания задачи: задача делится на независимые, функционально законченные участки, реализуемые структурно (аппаратно) на модулях с ПЛИС-архитектурой; смена вычислительных структур происходит под управлением программы. Таким образом, в ходе выполнения программы может выполняться только одна вычислительная конструкция.Значительную сложность в ЯПВУ многопроцессорных систем представляет проблема, связанная с программированием связей между компонентами системы. Поскольку МВС СПОВ имеет полнодоступную систему коммутации, можно переложить решение этой задачи на транслятор. Таким образом, программист будет пользоваться не только виртуальной памятью, но и виртуальной системой коммутации.1.ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ ОРГАНИЗАЦИИ СИСТЕМЫ ВЕТВЛЕНИЙ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ С++.Анализ базового уровня данной системы.В самом простом случае компьютерная программа выполняется по порядку, строка за строкой. Однако в подавляющем большинстве случаев на каком-то этапе выполнения потребуется изменить ход выполнения программы в зависимости от результатов, полученных в предыдущих выражениях. В таком случае необходимо проверить выполнение некоторых условий, и изменить ход выполнения программы в соответствии с ними. Для программирования ветвлений в языке C++ имеются инструкции if…else и switch, а также тернарная операция (?:)..1.1 Инструкция выбора if…elseВыполняет указанное в ней действие, только если условие истинно и пропускает его в ином случае. Инструкция (структура) if…else позволяет определить различные действия, которые должны выполняться в случаях, если условие истинно или ложно. Допускается использование вложенных инструкций if. Формат инструкции if имеет видIf (логическое выражение) выражение-1; else выражение-2;
ИлиIf (логическое выражение) выражение-1;При этом выражение-1 и выражение-2 могут быть составными (т.е. представлять собой совокупность последовательно выполняемых выражений, заключенных в операторные скобки), или в более общем случае – структурированными. Отметим также, что вложенная структура if…else может работать гораздо быстрее, чем серия структур if с единственным выбором вследствие возможности быстрого выхода после удовлетворения одному из условий.При построении логических выражений участвуют логические операторы, наиболее часто используются операторы (&&), (||), (!). Операторы (&&) и (||) вычисляют второй аргумент только в случае, если в этом есть необходимость. Так, например, в выраженииIf (a>b && c>100) a=c;Вначале проверяется первое условие a>b, а проверка условия c>100 будет осуществляться только в том случае, если первое условие истинно. В выраженииIf (a>b || c!=0) a=c;Второе условие будет проверяться только в случае, если первое условие ложно; если же первое условие истинно, то второе условие не проверяется, и результатом проверки сразу возвращается true. Такая реализация проверок носит название механизма быстрых вычислений.При написании условий можно объявлять переменную прямо в условии. В этом случае область видимости такой переменной будет простираться от точки ее объявления до конца инструкции, контролируемой условием. Если в инструкции if есть ветвь else, область видимости такой переменной простирается на обе ветви. При этом объявление в условии должно объявлять и инициализировать единственную переменную или константу.Такой подход к объявлению переменной приводит к более компактному коду программы. Еще одним преимуществом такого объявления (когда такое возможно) является то, что если объявить переменную до инструкции if, то время ее жизни будет простираться до конца блока, в котором она была объявлена, даже если она не будет использована после проверки условия.Ниже в качестве примера приводится текст программы, выводящей на экран значение корня из указанного числа, если число является полным квадратом, и «No» в противном случае.#include#include#includeUsing namespace std;Long f (long a){long s=pow(a,0.5);If (s*s == a) return s; else return 0;}Int main(){ long ch;Cout<<»ch= «; cin>>ch;If (long sum = f(ch)) cout<<»Yes: «< else cout<<»No»;Getch(); return 0;}Ясно, что для решения такой простой задачи нет смысла писать отдельную функцию, -- в данном случае это сделано лишь для демонстрации возможности объявления переменной в условии.
Условная операция ?:В С++ имеется еще условная операция (?:) – единственная тернарная операция в С++ с тремя операндами, которая близка к структуре if…else. Первый операнд является условием, второй – содержит значение условного выражения в случае, если условие истинно, а третий операнд равен значению условного выражения, если условие ложно. Например, оператор выводаCout << ( a >=10 ? «Да» : «Нет»);Содержит условное выражение, равное строке «Да», если условие a>=10 истинно, и равно строке «Нет», если оно ложно. Т.к. условная операция имеет низкое старшинство, в приведенном выражении потребовались скобки. Значения условного выражения могут быть также некоторыми исполняемыми действиями.Например, условное выражениеA >=10 ? cout << «Да \n» : cout << «Нет \n»;Следует понимать так: «Если значение переменной a больше или равно 10, то выдать строку «Да», иначе строку «Нет»».1.2 Инструкция switch (структура множественного выбора)Иногда алгоритм решения какой-либо задачи содержит ряд альтернатив, причем некоторую переменную надо проверять отдельно для каждого постоянного целого значения, которое она может принимать. В зависимости от результатов этой проверки должны выполняться различные действия. Ветвление программирование switchИнструкция switch состоит из ряда меток case и необязательной метки default. Структура инструкции имеет вид:Switch (a) {Case a1: выражение-1; break;Case a2: выражение-2; break;……………………………;Case aN: выражение-N; break;Default: выражение-0; break; }Здесь a – выражение любого целого типа (в том числе и символьного), значение которого вычисляется; a1, a2, …, aN – константы, с которыми сравнивается значение выражения a; выражение-0 – выражение, которое выполняется, если значение выражения a не совпадает ни с одной из констант a1, a2, …, aN.Инструкция break вызывает передачу программного управления на первое выражение после структуры switch. В случае если инструкцию break не указывать, то условия case в инструкции switch работают совместно: если везде в приведенной выше структуре switch не использовать break, тогда каждый раз, когда одно из условий caseудовлетворяется, будут выполняться выражения всех последующих меток case. Если ни одно из условий не выполнено, то выполняются выражения после метки default (если в структуре switch метка default помещена последней в списке, то инструкция break в ней не требуется).
К У Р С О В А Я Р А Б О Т А
по дисциплине «Объектно – ориентированное программирование»
Тема: «Анализ применения условных операторов в разных языках программирования»| Выполнил(а): | ______________ | студент(ка) 2–го курса спец. 1-40010103 В Кадыров Абуали Абдугаффорович |
| Руководитель: | ______________ | ст. преп. Шарипов Ш.А. |
Душанбе – 2023
ЗАДАНИЕ
на курсовую работуФ.И.О. студента: Кадыров Абуали Абдугаффорович. Специальность: 1–40010103 В «Компьютерные и банковские системы»Тема работы:«Анализ применения условных операторов в разных языках программирования»Утверждено на заседании кафедры: протокол № 7 от 23–го февраля 2023 г.-
СОДЕРЖАНИЕ КУРСОВОЙ РАБОТЫ
| № п/п | Наименование разделов | Объем в % | Срок выполнения |
| | Содержание | 3 | 01.03.2023 |
| | Введение | 10 | 08.03.2023 |
| | Глава 1: Исследование особенностей организации системы ветвлений в языке Программирования с++ | 15 | 13.03.2023 |
| | Глава 2: Описания операторов | 20 | 10.04.2023 |
| | Заключение | 10 | 11.04.2023 |
| | Список литературы | 5 | 17.04.2023 |
| | Оформление курсовой работы | 5 | 9.05.2023 |
-
ЛИТЕРАТУРА
-
1. Campbell Parallel Programming with Microsoft® Visual C++® / Campbell. – Москва: Гостехиздат, 2011. – 784 c. -
2. Альфред, В. Ахо Компиляторы. Принципы, технологии и инструментарий / Альфред В. Ахо и др. – Москва: Высшая школа, 2015. – 882 c. -
3. Балена, Франческо Современная практика программирования на Microsoft Visual Basic и Visual C# / Франческо Балена , Джузеппе Димауро. – М.: Русская Редакция, 2015. – 640 c.
-
ПРОЦЕНТОВКА
| | СОДЕРЖАНИЕ | |
| | ВВЕДЕНИЕ………………………………………………. | 4 |
| 1 | ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ ОРГАНИЗАЦИИ СИСТЕМЫ ВЕТВЛЕНИЙ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ С++ ………… | 5 |
| 1.1 | Инструкция выбора if…elsе ………………………….. | 6 |
| 1.2 | Инструкция switch (структура множественного выбора)……………… | 8 |
| 2 | ОПИСАНИЯ ОПЕРАТОРОВ | 12 |
| 2.1 | Операторы условного перехода…………………… | 13 |
| 2.2 | Оператор переключатель switch……………… | 16 |
| | ЗАКЛЮЧЕНИЕ…………………………………………. | 20 |
| | СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ… | 21 |
| | ПРИЛОЖЕНИЯ………………………………………… | 22 |
| | | |
| | | |
Язык должен эффективно реализовываться на различных МВС;Иметь средства для записи алгоритмов без изменения их начальной параллельной структуры;Язык должен позволять программисту максимально просто описывать различные виды параллелизма, реализованные в МВС, в достаточно сжатом виде;Cодержать мощные конструкции, как в традиционных ЯПВУ типа Фортрана, Си и т.п.Для МВС со структурно-процедурной организацией вычислений (СПОВ) возможен качественно новый принцип описания задачи: задача делится на независимые, функционально законченные участки, реализуемые структурно (аппаратно) на модулях с ПЛИС-архитектурой; смена вычислительных структур происходит под управлением программы. Таким образом, в ходе выполнения программы может выполняться только одна вычислительная конструкция.Значительную сложность в ЯПВУ многопроцессорных систем представляет проблема, связанная с программированием связей между компонентами системы. Поскольку МВС СПОВ имеет полнодоступную систему коммутации, можно переложить решение этой задачи на транслятор. Таким образом, программист будет пользоваться не только виртуальной памятью, но и виртуальной системой коммутации.1.ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ ОРГАНИЗАЦИИ СИСТЕМЫ ВЕТВЛЕНИЙ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ С++.Анализ базового уровня данной системы.В самом простом случае компьютерная программа выполняется по порядку, строка за строкой. Однако в подавляющем большинстве случаев на каком-то этапе выполнения потребуется изменить ход выполнения программы в зависимости от результатов, полученных в предыдущих выражениях. В таком случае необходимо проверить выполнение некоторых условий, и изменить ход выполнения программы в соответствии с ними. Для программирования ветвлений в языке C++ имеются инструкции if…else и switch, а также тернарная операция (?:)..1.1 Инструкция выбора if…elseВыполняет указанное в ней действие, только если условие истинно и пропускает его в ином случае. Инструкция (структура) if…else позволяет определить различные действия, которые должны выполняться в случаях, если условие истинно или ложно. Допускается использование вложенных инструкций if. Формат инструкции if имеет видIf (логическое выражение) выражение-1; else выражение-2;
ИлиIf (логическое выражение) выражение-1;При этом выражение-1 и выражение-2 могут быть составными (т.е. представлять собой совокупность последовательно выполняемых выражений, заключенных в операторные скобки), или в более общем случае – структурированными. Отметим также, что вложенная структура if…else может работать гораздо быстрее, чем серия структур if с единственным выбором вследствие возможности быстрого выхода после удовлетворения одному из условий.При построении логических выражений участвуют логические операторы, наиболее часто используются операторы (&&), (||), (!). Операторы (&&) и (||) вычисляют второй аргумент только в случае, если в этом есть необходимость. Так, например, в выраженииIf (a>b && c>100) a=c;Вначале проверяется первое условие a>b, а проверка условия c>100 будет осуществляться только в том случае, если первое условие истинно. В выраженииIf (a>b || c!=0) a=c;Второе условие будет проверяться только в случае, если первое условие ложно; если же первое условие истинно, то второе условие не проверяется, и результатом проверки сразу возвращается true. Такая реализация проверок носит название механизма быстрых вычислений.При написании условий можно объявлять переменную прямо в условии. В этом случае область видимости такой переменной будет простираться от точки ее объявления до конца инструкции, контролируемой условием. Если в инструкции if есть ветвь else, область видимости такой переменной простирается на обе ветви. При этом объявление в условии должно объявлять и инициализировать единственную переменную или константу.Такой подход к объявлению переменной приводит к более компактному коду программы. Еще одним преимуществом такого объявления (когда такое возможно) является то, что если объявить переменную до инструкции if, то время ее жизни будет простираться до конца блока, в котором она была объявлена, даже если она не будет использована после проверки условия.Ниже в качестве примера приводится текст программы, выводящей на экран значение корня из указанного числа, если число является полным квадратом, и «No» в противном случае.#include#include#includeUsing namespace std;Long f (long a){long s=pow(a,0.5);If (s*s == a) return s; else return 0;}Int main(){ long ch;Cout<<»ch= «; cin>>ch;If (long sum = f(ch)) cout<<»Yes: «< else cout<<»No»;Getch(); return 0;}Ясно, что для решения такой простой задачи нет смысла писать отдельную функцию, -- в данном случае это сделано лишь для демонстрации возможности объявления переменной в условии.
Условная операция ?:В С++ имеется еще условная операция (?:) – единственная тернарная операция в С++ с тремя операндами, которая близка к структуре if…else. Первый операнд является условием, второй – содержит значение условного выражения в случае, если условие истинно, а третий операнд равен значению условного выражения, если условие ложно. Например, оператор выводаCout << ( a >=10 ? «Да» : «Нет»);Содержит условное выражение, равное строке «Да», если условие a>=10 истинно, и равно строке «Нет», если оно ложно. Т.к. условная операция имеет низкое старшинство, в приведенном выражении потребовались скобки. Значения условного выражения могут быть также некоторыми исполняемыми действиями.Например, условное выражениеA >=10 ? cout << «Да \n» : cout << «Нет \n»;Следует понимать так: «Если значение переменной a больше или равно 10, то выдать строку «Да», иначе строку «Нет»».1.2 Инструкция switch (структура множественного выбора)Иногда алгоритм решения какой-либо задачи содержит ряд альтернатив, причем некоторую переменную надо проверять отдельно для каждого постоянного целого значения, которое она может принимать. В зависимости от результатов этой проверки должны выполняться различные действия. Ветвление программирование switchИнструкция switch состоит из ряда меток case и необязательной метки default. Структура инструкции имеет вид:Switch (a) {Case a1: выражение-1; break;Case a2: выражение-2; break;……………………………;Case aN: выражение-N; break;Default: выражение-0; break; }Здесь a – выражение любого целого типа (в том числе и символьного), значение которого вычисляется; a1, a2, …, aN – константы, с которыми сравнивается значение выражения a; выражение-0 – выражение, которое выполняется, если значение выражения a не совпадает ни с одной из констант a1, a2, …, aN.Инструкция break вызывает передачу программного управления на первое выражение после структуры switch. В случае если инструкцию break не указывать, то условия case в инструкции switch работают совместно: если везде в приведенной выше структуре switch не использовать break, тогда каждый раз, когда одно из условий caseудовлетворяется, будут выполняться выражения всех последующих меток case. Если ни одно из условий не выполнено, то выполняются выражения после метки default (если в структуре switch метка default помещена последней в списке, то инструкция break в ней не требуется).