Шпоры по компьютерному моделированию в экономике и бизнесе - файл n1.docx

Шпоры по компьютерному моделированию в экономике и бизнесе
Скачать все файлы (172.1 kb.)

Доступные файлы (1):
n1.docx173kb.15.02.2014 15:37скачать

n1.docx

Модель "затраты-объем-прибыль". При планировании производственной деятельности часто используется анализ, основанный на исследовании соотношения затраты – объем – прибыль. Если определен объем производства исходя из портфеля заказов, то используя этот анализ, можно рассчитать величину затрат и цену продажи, чтобы компания могла получить определенную величину прибыли. Анализ затраты – объем – прибыль – это анализ поведения затрат, в основе которых лежит взаимосвязь затрат, выручки (дохода), объема производства и прибыли, это инструмент управленческого планирования и контроля. Эти взаимосвязи формируют основную модель финансовой деятельности, что позволяет менеджеру использовать его для краткосрочного планирования и оценки альтернативных решений. Взаимосвязь «затраты – объем – прибыль» может быть выражена формулой: Выручка от реализации = переменные затраты + постоянные затраты + прибыль Анализ этой взаимосвязи позволяет определить объем производства, который необходим для покрытия всех затрат, как переменных так и постоянных. При этом критической точкой считается точка, когда суммарный объем выручки равен суммарным затратам. Таким образом, критическая точка   - это точка, начиная с которой компания начинает зарабатывать прибыль. Критическую точку также называют точкой безубыточности или порогом рентабельности. Цель анализа критической точки состоит в нахождении уровня деятельности (объема производства), когда выручка от реализации становится равной сумме всех переменных и постоянных затрат, при этом прибыль компании равна нулю. В током случае формула приобретает вид: ВР = ПЗ + ПЗ Критическая точка может быть выражена в терминах единиц продажи или долларов продажи. Основное уравнение нахождения критической точки: Критическая точка в единицах продажи = постоянные затраты: (цена – переменные     затраты на единицу продукции) Критическая точка показывает, до какого предела может упасть выручка, чтобы не было убытка. Величина прибыли, получаемая предприятием, определяется разницей между выручкой от реализации и суммарными затратами. Каждое предприятие стремится максимализировать прибыль. Но невозможно продавать неограниченное количество продукции по одинаковой цене. Увеличение объема продаж приводит к насыщению рынка и падению платежеспособного спроса на продукцию. В определенный момент времени для того чтобы продавать большее количество товаров, потребуется снизить цену, что приведет к снижению прибыли.  Точка оптимальной цены продажи продукции определяет объем продаж, позволяющий предприятию  получать максимальную прибыль. Другой способ определения критической точки использует концепцию маржинальной прибыли. Маржинальная прибыль – это превышение выручки от реализации над всеми переменными затратами, связанными с данным объемом продаж. Другими словами, маржинальная прибыль – это разница между выручкой и переменными затратами: Маржинальная прибыль = выручка от реализации – переменные затраты Если от маржинальной прибыли вычесть постоянные затраты, то получим величину операционной прибыли: Операционная прибыль = маржинальная прибыль – постоянные затраты Критическая точка может быть определена как точка, в которой разница между маржинальной прибылью и постоянными затратами равна нулю, или точка, в которой маржинальная прибыль равна постоянным затратам. Уравнение критической точки при маржинальном подходе в единицах продаж будет выглядеть следующим образом: Критическая точка в единицах продаж = постоянные затраты: маржинальную прибыль на единицу

Использование Excel в задачах линейного программирования. Для того чтобы решить задачу ЛП в табличном процессоре Microsoft Excel, необходимо выполнить следующие действия: 1.     Ввести условие задачи: a)     создать экранную форму для ввода условия задачи: ·        переменных, ·        целевой функции (ЦФ), ·        ограничений, ·        граничных условий; b)     ввести исходные данные в экранную форму: ·        коэффициенты ЦФ, ·        коэффициенты при переменных в ограничениях, ·        правые части ограничений; c)      ввести зависимости из математической модели в экранную форму: ·        формулу для расчета ЦФ, ·        формулы для расчета значений левых частей ограничений; d)     задать ЦФ (в окне "Поиск решения"):целевую ячейку,направление оптимизации ЦФ; e)      ввести ограничения и граничные условия (в окне "Поиск решения"): ·        ячейки со значениями переменных, ·        граничные условия для допустимых значений переменных, ·        соотношения между правыми и левыми частями ограничений. 2.     Решить задачу: a)      установить параметры решения задачи (в окне "Поиск решения"); b)     запустить задачу на решение (в окне "Поиск решения"); c)      выбрать формат вывода решения (в окне "Результаты поиска решения"). Линейное программирование – наиболее изученный раздел дисциплины Методы исследования операций. Математические модели большинства экономических задач относятся к классу задач линейного программирования (ЗЛП). Любая ЗЛП, приведенная к канонической форме, может быть решена с помощью универсального алгоритма – «Симплексного метода». Однако, ручной счет по данному методу – трудоемкий процесс. Умение использовать Microsoft EXCEL for WINDOWS для автоматизации вычислений значительно упрощает и ускоряет процесс решения ЗЛП. Пакет EXCEL позволяет в полностью автоматическом режиме найти оптимальное решение ЗЛП в любой первоначальной форме (инструмент “Поиск решения”). Кроме того, используя встроенную возможность модификации формул, EXCEL реализует пошаговое решение ЗЛП симплексным методом, значительно упрощая расчеты и избавляя от возникновения случайных арифметических ошибок.Решение ЗЛП с помощью инструмента “Поиск решения”.При решении ЗЛП с использованием встроенного инструмента “Поиск решения” изначально необходимо представить исходную математическую модель в удобном для заполнения таблиц EXCEL виде.
Использование Excel для решения транспортной задачи. Транспортная задача – задача о наиболее экономном плане перевозок однородного или взаимозаменяемого продукта из пункта производства (станций отправления), в пункты потребления (станции назначения) – является важнейшей частной задачей линейного программирования, имеющей обширные практические приложения не только к проблемам транспорта.Транспортная задача выделяется в линейном программировании определённостью экономической характеристики, особенностями математической модели, наличием специфических методов решения.В настоящее время транспортная задача линейного программирования широко применяется как в теоретических разработках, так и в практике планирования различных экономических процессов. Особенно важное значение она имеет при решении вопросов рационализации поставок важнейших видов промышленной и сельскохозяйственной продукции, оптимального планирования грузопотоков и работы различных видов транспорта, а также при рассмотрении ряда практических ситуаций, связанных с управлением запасами, составлением сменных графиков, назначением служащих на рабочие места, регулированием расхода воды в водохранилищах и многими другими. Транспортная задача является частным видом линейной оптимизационной задачи. Наиболее часто транспортная задача представляется следующим образом: имеются n пунктов производства и m пунктов распределения продукции. Стоимость перевозки единицы продукции с i-гo пункта производства в j-й центр распределения cji приведена в таблице, где под строкой понимается пункт производства, а под столбцом - пункт распределения. Кроме того, в этой таблице в i-той строке указан объем производства в i-м пункте производства, а в j-м столбце указан спрос в j-м центре распределения[6]. Необходимо составить план перевозок по доставке требуемой продукции в пункты распределения, минимизирующий суммарные транспортные расходы.Для математического описания транспортной задачи введем переменные xij, обозначающие объемы поставок товара от i-го источника к j-му стоку. В этом случае xi1+xi2+...+xin — общий объем поставок товара от i-го источника, т.е. мощность этого источника; x1j+x2j+...+xmj — общий объем поставок товара к j-му стоку, т.е. мощность этого стока; c11x11+c12x12+...+cmnxmn — суммарная стоимость перевозок товара от источников к стокам С учетом этого рассматриваемая задача может быть представлена в следующем виде:

Задача состоит в определении неизвестных величин xij, минимизирующих суммарные транспортные расходы и удовлетворяющих ограничениям, накладываемым на объемы грузов в пунктах отправления (предложение) и пунктах назначения (спрос). Наше время характерно стремительным развитием компьютерной техники. Следовательно, мощным потоком программного обеспечения. Компьютерные технологии проникают во все сферы человеческой деятельности. Современный человек должен иметь не просто минимальные знания по информационным технологиям, а быть по настоящему подготовленным пользователем.Одной из самых распространенных проблем во всех областях экономики является транспортировка груза или товара с минимальными материальными и временными затратами. Так как огромное количество возможных вариантов перевозок затрудняет получение самого экономичного плана эмпирическим или экспертным путем, то появилась необходимость разработки специальной теории, позволяющей быстро решать подобные задачи с помощью алгоритмизации. Применение математических методов в планировании перевозок дает большой экономический эффект. Транспортные задачи оче Для разрешимости транспортной задачи необходимо и достаточно, чтобы ее модель была закрытой.нь просто можно решать с помощью MS Excel. В реальных задачах это выполняется не всегда. Однако транспортную задачу всегда можно сбалансировать, введя фиктивный пункт - производитель или фиктивный пункт потребления (склад).

В случае, если , тогда вводится фиктивный (n+1)-й пункт назначения с потребностью и соответствующие тарифы считаются равными нулю: сin+1 = 0 ().

Если , вводится фиктивный (m+1)-й пункт отправления с запасом груза , аcm+1, j = 0,

С помощью этих преобразований открытая транспортная задача сводится к закрытой.

При решении транспортной задачи с использованием встроенного инструмента “Поиск решения”, как и в случае обычной ЗЛП, изначально необходимо представить исходную математическую модель в удобном для заполнения таблиц EXCEL виде. Рассмотрим следующую транспортную задачу [3]. Для строительства четырех объектов используется кирпич, изготавливаемый на трех заводах. Ежедневно каждый из заводов может изготовить 100, 150 и 50 условных единиц кирпича (предложение поставщиков). Потребности в кирпиче на каждом из строящихся объектов ежедневно составляют 75, 80, 60 и 85 условных единиц (спрос потребителей). Тарифы перевозок одной условной единицы кирпича с каждого из заводов к каждому из строящихся объектов задаются матрицей транспортных расходов С. Требуется составить такой план перевозок кирпича к строящимся объектам, при котором общая стоимость перевозок будет минимальной.Для решения транспортной задачи на персональном компьютере с использованием EXCEL необходимо:Ввести исходные данные в ячейки рабочего листа EXCEL;Разметить блоки ячеек на рабочем листе EXCEL, необходимые для моделирования объемов перевозок, а также для формирования элементов математической модели и целевой функции;Сформировать на рабочем листе EXCEL элементы математической модели и целевую функцию;Настроить программу " Поиск решения" и выполнить ее.Ввод исходных данныхИсходными данными для решения транспортной задачи являются: матрица транспортных расходов;предложение поставщиков; спрос потребителей;Напомним, что для ввода данного в ячейку рабочего листа EXCEL необходимо:Селектировать ячейку;Набрать вводимое данное на клавиатуре;Нажать клавишу Enter. Кроме исходных данных на рабочем листе EXCEL для решения транспортной задачи необходимо предусмотреть:1.Блок ячеек "Матрица перевозок", в котором будут моделироваться объемы перевозок;2.Блок ячеек "Фактически реализовано", в котором будет моделироваться фактическая реализация продукции;3.Блок ячеек "Фактически получено", в котором будет моделироваться фактическое удовлетворение спроса;4.Блок ячеек "Транспортные расходы по потребителям", в котором будут подсчитываться транспортные расходы по каждому потребителю;5.Ячейку "Итого расходы", в которой будут моделироваться итоговые транспортные расходы по всем потребителям (целевая ячейка). Элементами математической модели транспортной задачи являются следующие суммы 1.Селектируйте первую ячейку блока “Транспортные расходы по потребителям” (ячейка С21);2.Наведите курсор на кнопку - автосуммирование и щелкните левой клавишей мыши;3.Нажмите клавишу “Delete ”;4.Селектируйте первый столбец блока “Матрица Транспортных расходов” (столбец С6:С8);5.Нажмите клавишу *;6.Селектируйте первый столбец блока “Матрица превозок” (столбец С14:С16);7.Активируйте строку формул, наведя на неё курсор и щелкнув затем левой клавишей мыши;8.Нажмите одновременно три клавиши: “CTRL”+“SHIFT”+“ENTER”;9.Скопируйте формулу {=СУММ (С6:С8*С14:С16)} в остальные ячейки блока “Транспортные расходы по потребителям”;Селектируйте ячейку “Итого расходы” (ячейка I21);1. Наведите курсор на кнопку - автосуммирование и щелкните левой клавишей мыши;2. Нажмите клавишу “Delete”;3. Селектируйте блок ячеек “Транспортные расходы по потребителям”(С21:F21);4. Нажмите клавишу “Enter”;После формирования элементов математической модели.можно приступить к настройке программы “Поиск решения”.Для настройки программы “Поиск решения” на решение транспортной задачи выполните следующие действия:1.Селектируйте целевую ячейку “Итого расходы” (ячейка I21);2.Установите курсор в строке главного меню на пункте “Сервис” и щелкните левой клавишей мыши;3.Установите курсор на пункт "Поиск решения" меню "Сервис", щелкните левой клавишей мыши и убедитесь, что в поле “Установить целевую ячейку” окна диалога программы “Поиск решения” указана ячейка $I$214.Установите курсор на переключатель “Равной Минимальному значению” и щелкните левой клавишей мыши;5.Установите курсор в поле “Изменяя ячейки” и щелкните левой клавишей мыши;6.Селектируйте блок ячеек “Матрица первозок” (блок С14:F16);7.Установите курсор на кнопку “Добавить” и щелкните левой клавишей мыши; 8.Селектируйте блок ячеек “Фактически реализовано” (блок I14:I16);9. Убедитесь, что оператор сравнения <=уже выбран;10.Установите курсор на поле “Ограничение”и щелкните левой клавишей мыши;11.Селектируйте блок ячеек “Предложение поставщиков” (блок I6:I8) 12.Установить курсор на кнопку “Добавить” и щелкните левой клавишей мыши;13.Селектируйте блок ячеек “Фактически получено” (блок С18:F18);14.Установите курсор на стрелку прокрутки значений оператора сравнения и щелкните левой клавишей мыши;15.Установите курсор на значение >= (больше или равно) и щелкните левой клавишей мыши;16.Установите курсор на поле “Ограничение” и щелкните левой клавишей мыши;17.Селектируйте блок ячеек “Спрос потребителей” (блок С10:F10) 18.Установите курсор на кнопку “Добавить” и щелкните левой клавишей мыши;
19.Селектируйте блок ячеек “Матрица перевозок” (блок С14:F16);20.Установите курсор на стрелку прокрутки значений оператора сравнения и щелкните левой клавишей мыши;21.Установите курсор на значение >= (больше или равно) и щелкните левой клавишей мыши;22.Установите курсор на поле “Ограничение” и щелкните левой клавишей мыши;23.Наберите на клавиатуре цифру 0. Установите курсор на кнопку “Добавить” и щелкните левой клавишей мыши;24.Установите курсор на кнопку "Отмена" и щелкните левой клавишей мыши; Установите курсор на кнопку “Параметры” и щелкните клавишей мыши;25.В появившемся окне диалога “Параметры поиска решения”Установите курсор на кнопку “ОК” о щелкните левой клавишей мыши;В появившемся окне "Поиск решения" установите курсор на кнопку "Выполнить" и щелкните левой клавишей мыши.В появившемся диалоговом окне "Результаты поиска решения" установите курсор на переключатель "Восстановить исходные значения" и щелкните левой клавишей мыши. Для завершения расчетов щелкните на кнопке ОК.

Синтаксис языка С. Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нем легко компилировались с помощью однопроходного компилятора, после компиляции каждой элементарной составляющей программы соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже откомпилированному тексту. Поэтому использованию функции должно предшествовать её объявление. Код на Си можно легко писать на низком уровне абстракции, почти как на ассемблере. Иногда Си называют «универсальным ассемблером», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели компьютера. Си часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Компиляторы Си разрабатываются сравнительно легко благодаря относительно низкому уровню языка и скромному набору элементов. Поэтому данный язык доступен на самых различных платформах (возможно, круг этих платформ шире, чем у любого другого существующего языка). К тому же, несмотря на свою низкоуровневую природу, язык позволяет создавать переносимые программы и поддерживает программиста в этом. Программы, соответствующие стандарту языка, могут компилироваться на самых различных компьютерах. Си (как и ОС UNIX, с которой он долгое время был связан) создавался программистами и для программистов, круг которых был бы ненамного шире круга разработчиков языка. Несмотря на это, область использования языка значительно шире задач системного программирования. Си создавался с одной важной целью: сделать более простым написание больших программ с минимумом ошибок по правилам процедурного программирования, не добавляя лишних накладных расходов на итоговый код программы компилятором, как это всегда делают языки очень высокого уровня, такие как Бейсик. С этой стороны Си имеет следующие важные особенности: простую языковую базу, из которой вынесены в библиотеки многие существенные возможности, вроде математических функций или функций управления файлами; ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования; систему типов, предохраняющую от бессмысленных операций; использование препроцессора для, например, определения макросов и включения файлов с исходным кодом; непосредственный доступ к памяти компьютера через использование указателей; минимальное число ключевых слов; передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке выполняется с помощью указателей); указатели на функции и статические переменные, позволяющие реализовать замыкание и простой полиморфизм; области действия имён; записи — определяемые пользователем собирательные типы данных (структуры), которыми можно манипулировать как одним целым;
Условные операторы  if .Как правило, при программировании прикладных программ возникает необходимость закодировать в одной программе несколько вариантов решений. Для решения подобных задач в программе может быть использован условный оператор if-else. Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true. В большинстве языков программирования условный оператор начинается с ключевого слова if.Встречаются следующие формы условного оператора:

Условный оператор с одной ветвью

if условие then команды end

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

Условный оператор с двумя ветвями

if условие then команды1 else команды2 end

Здесь при истинности условия выполняются команды1 при ложности — команды2. При необходимости проверить последовательно несколько условий возможно каскадирование условных операторов:

if условие1

then команды1

else if условие2 then команды2

else if условие3 then команды3

...

else if условиеN-1 then командыN-1

else командыN end;

В этом случае условия будут проверяться последовательно, и как только встретится истинное, будет выполнен соответствующий набор команд и исполнение перейдёт к команде, следующей за условным оператором. Если ни одно из условий не окажется истинным, выполняются командыN из ветви else.

Условный оператор с несколькими условиями

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

if условие1 then команды1

elsif условие2 then команды2

elsif условие3 then команды3

...

else командыN end;

порядок выполнения этого оператора в точности соответствует вышеприведённому каскаду простых операторов if-then-else, а отличие чисто формальное: вместо вложенных нескольких условных операторов эта конструкция является единым целым и содержит дополнительное ключевое слово elsif, требующее после себя очередное условие.
Условные операторы   switch. Условная операция if облегчает написание программ, в которых необходимо производить выбор между небольшим числом возможных вариантов. Однако иногда в программе необходимо осуществить выбор одного варианта из множества возможных. Формально для этого можно воспользоваться конструкцией if else if … else. Однако во многих случаях оказывается более удобным применять оператор switch языка С++. Синтаксис данного оператора следующий:

switch(переменная) 

case константа1: 
<операторы> 
case константа2: 
<операторы> 
... 
default: 
<операторы> 
}

Данный оператор последовательно проверяет на равенство переменной константам, стоящим после ключевого слова case. Если ни одна из констант не равна значению переменно, то выполняются операторы, находящиеся после слова default. Оператор switch имеет следующую особенность. Допустим, значение переменной равно значению константы1 и выполняются операторы, стоящие после первого ключевого слова case. После этого выполнение программы продолжится проверкой переменной на равенство константы2, что часто приводит к неоправданным затратам ресурсов ЭВМ. Во избежание такой ситуации следует использовать оператор break для перехода программы к следующему оператору после switch.

Пример использования оператора switch. 

#include 
int main() 

int x; 
printf(“Введите число: ”); 
scanf(“%d”,&x); 
switch(x) 

case 1 : printf(“Введено число 1\n”);break; 
case 2 : printf(“Введено число 2\n”); break; 
default : printf(“Введено другое число\n”); 

char ch; 
printf(“Введите символ: ”); 
scanf(“%с”,&сh); 
switch(ch) 

case ‘a’ : printf(“Введен символ а\n”); break; 
case ‘b’ : printf(“Введен символ b\n”); break; 
default : printf(“Введен другой символ\n”); 

return 0; 
}

Оператор цикла while. С помощью данного оператора реализуется цикл, который выполняется до тех пор, пока истинно условие цикла. Синтаксис данного оператора следующий:

while(<условие>) 

<тело цикла> 
}

Приведем пример реализации данного цикла, в котором выполняется суммирование элементов ряда S = 0+1+2+3... пока S

int N=20, i = 0; 
long S = 0L; 
while(S < N) 

S=S+i; 
i++; 
}

В данном примере реализуется цикл while с условием i < N. Так как начальное значение переменной i=0, а N=20, то условие истинно и выполняется тело цикла, в котором осуществляется суммирование переменной i и увеличение ее на 1. Очевидно, что на 20 итерации значение i=20, условие станет ложным и цикл будет завершен. Продемонстрируем гибкость языка С++, изменив данный пример следующим образом:

int N=20, i = 0; 
long S = 0L; 
while((S=S+i++) < N);

В данном случае при проверке условия сначала выполняются операторы, стоящие в скобках, где и осуществляется суммирование элементов ряда и только, затем, проверяется условие. Результат выполнения обоих вариантов программ одинаковый и S=21. Однако последняя конструкция бывает удобной при реализации опроса клавиатуры, например, с помощью функции scanf():

int num; 
while(scanf(“%d”,&num) == 1) 

printf(“Вы ввели значение %d\n”,num); 
}

Данный цикл будет работать, пока пользователь вводит целочисленные значения и останавливается, если введена буква или вещественное число. Следует отметить, что цикл while можно принудительно завершить даже при истинном условии цикла. Это достигается путем использования оператора break. Перепишем предыдущий пример так, чтобы цикл завершался, если пользователь введет число 0.

int num; 
while(scanf(“%d”,&mun) == 1) 

if(num == 0) break; 
printf(“Вы ввели значение %d\n”,num); 
}

Цикл завершается сразу после использования оператора break, т.е. в приведенном примере, при вводе с клавиатуры нуля функция printf() выполняться не будет и программа перейдет на следующий оператор после while. Того же результата можно добиться, если использовать составное условие в цикле:

int num; 
while(scanf(“%d”,&mun) == 1 && num != 0) 

printf(“Вы ввели значение %d\n”,num); 
}

Таким образом, в качестве условия возможны такие же конструкции, что и в операторе if. 

Оператор цикла do. Все представленные выше операторы циклов, так или иначе, проверяют условие перед выполнением цикла, благодаря чему существует вероятность, что операторы внутри цикла никогда не будут выполнены. Такие циклы называют циклы с предусловием. Однако бывают ситуации, когда целесообразно выполнять проверку условия после того, как будут выполнены операторы, стоящие внутри цикла. Это достигается путем использования операторов do while, которые реализуют цикл с постусловием. Следующий пример демонстрирует реализацию такого цикла.

const int secret_code = 13; 
int code_ent; 
do 

printf(“Введите секретный код: ”); 
scanf(“%d”,&code_ent); 

while(code_ent != secret_code);

Из приведенного примера видно, что цикл с постусловием работает до тех пор, пока истинно условие, т.е. в данном случае пока значение введенного кода будет отличаться от значения секретного кода. Также следует обратить внимание на то, что после ключевого слова while должна стоять точка с запятой. При реализации данного цикла можно использовать составные условия, подобно циклу while, а также принудительно выходить из цикла с помощью оператора break

Оператор цикла for. Работа оператора цикла for подобна оператору while с той лишь разницей, что оператор for подразумевает изменение значения некоторой переменной и проверки ее на истинность. Работа данного оператора продолжается до тех пор, пока истинно условие цикла. Синтаксис оператора for следующий:

for(<инициализация счетчика>;<условие>;<изменение значения счетчика>) 

<тело цикла> 
}

Рассмотрим особенность реализации данного оператора на примере вывода таблицы кодов ASCII символов.

char ch; 
for(ch = ‘a’; ch <= ‘z’; ch++) 
printf(“Значение ASCII для %c - %d.\n”,ch,ch); 

В данном примере в качестве счетчика цикла выступает переменная ch, которая инициализируется символом ‘a’. Это означает, что в переменную ch заносится число 97 – код символа ‘a’. Именно так символы представляются в памяти компьютера. Код символа ‘z’ – 122, и все малые буквы латинского алфавита имеют коды в диапазоне [97; 122]. Поэтому, увеличивая значение ch на единицу, получаем код следующей буквы, которая выводится с помощью функции printf(). Учитывая все вышесказанное, этот же пример можно записать следующим образом:

for(char ch = 97; ch <= 122; ch++) 
printf(“Значение ASCII для %c - %d.\n”,ch,ch);

Здесь следует отметить, что переменная ch объявлена внутри оператора for. Это особенность языка С++ - возможность объявлять переменные в любом месте программы.

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

int line_cnt = 1; 
double debet; 
for(debet = 100.0; debet < 150.0; debet = debet*1.1, line_cnt++) 
printf(“%d. Ваш долг теперь равен %.2f.\n”,line_cnt, debet);

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

int exit = 1; 
for(int num = 0;num < 100 && !exit; num += 1) 

scanf(“%d”,&mov); 
if(mov == 0) exit = 0; 
printf(“Произведение num*mov = %d.\n”,num*mov); 
}

Оператор for с одним условием:

int i=0; 
for(;i < 100;) i++;

и без условия

int i=0; 
for(;;;) {i++; if(i > 100) break;}

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

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

Бейсик

Паскаль

INPUT <Переменная>

Read(<Список ввода>);

Readln(<Список ввода>);

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

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

Выполнение операторов ввода происходит так: ход программы приостанавливается, на экран выводится курсор, компьютер ожидает от пользователя набора данных для переменных, имена которых указаны в списке ввода. Пользователь с клавиатуры вводит необходимые знамения в том порядке, в котором они требуются списком ввода, нажимает Enter. После этого набранные данные попадают в соответствующие им переменные и выполнение программы продолжается. Данные при вводе разделяются пробелами.

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

Разница между работой оператора Read и Readln в Паскале состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln — с новой строки.

Бейсик

Паскаль

PRINT <Список вывода>

Write(<Список вывода>);
Writeln(<Список вывода>);

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

Эти операторы позволяют выводить на экран монитора данные из списка вывода. Элементами списка вывода могут являться имена переменных, выражения, константы. Прежде чем вывести на экран значения выражений, компьютер сначала их вычислит. Элементы списка, также как и в операторах ввода, разделяются запятыми.

Различие между двумя операторами вывода в Паскале таково: после выполнения оператора Writeln (от Write line) происходит переход па новую строчку, а после выполнения инструкции Write переход на новую строчку не происходит и печать по последующим командам вывода Write или Writeln будет происходить на той же строчке. При вызове оператора Writeln без параметров просто происходит переход па новую строчку.

В Бейсике каждый новый оператор PRINT выводит значения в новую строку.

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

Вывод каждого значения в строку экрана происходит в соответствии с шириной поля вывода, определяемой конкретной реализацией языка.

Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа — как действительные десятичные числа с десятичным порядком, символьного типа и строки — в виде символов, логического типа — в виде логических констант TRUE и FALSE.

Бейсик

Паскаль


OPEN "<имя файла>" FOR INPUT AS <файловая переменная>


INPUT <файловая переменная>, <переменная> CLOSE <файловая переменная>



Var <файловая переменная>: Text;


Assign (<файловая переменна я>, <Имя файла>);


Rewrite (<файловая переменная>);


Read(<файловая переменная> <Список ввода>);


Write (<файловая переменная>, <спимок вывода>);


Close(<файловая переменная>) ;


Операторы работы с файлами

Рассмотри процедуру чтения информации из файла на Паскале.

Для начала необходимо объявить файловую переменную. Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и т. д.). Их можно использовать лишь для выполнения операций с файлами (чтение, запись и т. д.).

Перед тем как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом при помощи процедуры Assign.

Assign(<Имя файловой переменной>,<Имя файла>);

Имя файла задастся либо строковой константой, либо через переменную тина String. Имя файла должно соответствовать правилам работающей в данный момент операционной системы. Если строка имени пустая, то связь файловой переменной осуществляется со стандартным устройством ввода-вывода (как правило — с консолью).

После этого файл должен быть открыт одной из процедур:

Reset(<Имя файловой переменной>);

Открывается существующий файл для чтения, указатель текущей компоненты файла настраивается на начало файла. Если физического файла, соответствующего файловой переменной, не существует, то возникает ситуация ошибки ввода-вывода.

Rewrite(<Имя файловой переменной>);

Открывается новый пустой файл для записи, ему присваивается имя, заданное процедурой Assign. Если файл с таким именем уже существует, то он уничтожается. После работы с файлом он, как правило, должен быть закрыт процедурой Close.

Close(<Имя файловой переменной>);

Это требование обязательно должно соблюдаться для файла, в который производилась запись.
Учебный текст
© perviydoc.ru
При копировании укажите ссылку.
обратиться к администрации