4258

Методические указания к выполнению лабораторных работ по дисциплинам Алгоритмические языки и программирование

Книга

Информатика, кибернетика и программирование

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

Русский

2012-11-15

580.5 KB

47 чел.

Введение

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

Цель преподавания дисциплины - формирование у студентов знаний методики и приемов разработки и отладки программного обеспечения для решения инженерных задач на ЦЭВМ.

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

Для достижения этой цели студенты должны выполнить выданные преподавателем индивидуальные задания. Эти преподаватели проводят руководство и консультации по вопросам программирования.

Выполненные индивидуальные задания оформляются в виде отдельных отчетов (правила оформления отчетов см. далее). В отчете приводятся постановка задачи, блок-схема алгоритма и, при необходимости, её описание, листинг программы, распечатка полученных результатов выполнения программы, контрольный просчет.

По представленному отчету преподаватель проводит собеседование.

1 Основные сведения о персональном компьютере IBM PC

Вычислительная машина - это единства аппаратной части и программного обеспечения.

Особенно широкое распространение получили персональные компьютеры стандартов IBM PC, работающие под управлением операционных систем MS DOS, windows или их аналогов.

Основным элементом аппаратной части персонального компьютера является системный блок, к которому подсоединяются клавиатура и дисплей. Основные элементы системного блока (рис. 1.1) - это:

  •  центральный процессор, который собственно и производит обработку информации и управляет другими элементами системного блока;
  •  электронная память или оперативное запоминающее устройство (ОЗУ), для временного хранения данных и программ;
  •  устройства для долговременного хранения данных на магнитных носителях - накопитель на гибких магнитных дисках (НГМД) и накопитель на жестком магнитном диске (НЖМД);
  •  контроллер клавиатуры-дисплея, через который выдаются данные на экран и получают данные от клавиатуры;
  •  элементы для сообщения с внешними приборами и системами - устройства последовательного и параллельного ввода-вывода.

Рисунок 1.1 - Основные элементы системного блока.

2 Проектирование программных средств

Программные средства - это инструкции процессору по обработке информации и управлению. Основой программных средств является операционная система (ОС).

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

При решении отдельных задач или комплекса взаимосвязанных задач на ЭВМ выделяются следующие этапы:

  1.  Разработка математической модели решаемой задачи. Получение описания процесса в виде алгебраических или логических выражений;
  2.  Разработка методики решения, определение ограничений на решаемую задачу, выбор средств решения;
  3.  Разработка алгоритма;
  4.  Реализация решения задачи на одном из языков программирования;
  5.  Тестирование и отладка программы или комплекса программ;
  6.  Решение задачи на ЭВМ.

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

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

Алгоритм должен соответствовать следующим требованиям:

1. Дискретность.

Алгоритм должен представлять процесс решения задачи как последовательность конкретных шагов (этапов).

2. Однозначность.

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

3. Массовость (универсальность).

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

4. Результативность (сходимость).

Конечный результат должен быть получен после выполнения определённого не бесконечного количества шагов.

Наибольшей наглядностью обладает алгоритм представленный в виде блок-схемы. Элементарные действия подразделяются на классы. Каждый класс имеет свое графическое изображение на схеме - блок. Внутри изображения указывается конкретное действие.

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

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

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

Алгоритм должен иметь один оператор "начало" и один оператор "конец". Пойдя по любому переходу, в конце концов, надо прийти к блоку "конец". Каждый переход должен быть определён однозначно. Следует обращать внимание, чтобы при всех допустимых изменениях переменных можно было выйти, в конце концов, из цикла (не допускать зацикливания программы). Любой переменной до использования необходимо присвоить значение (она должна быть определена).

Иногда блок-схему алгоритма дополняет словесное описание, необходимое для более чёткого представления действий, выполняемых отдельным блоком и группой блоков. Словесное описание сделать легче, если блоки пронумеровать.

На основании составленного алгоритма пишется программа на конкретном языке программирования.

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

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

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

Это позволяет сократить количество рассматриваемых модулей, уменьшить размер программы и тем самым увеличить её эффективность. Делает итоговый алгоритм более наглядным и читаемым.

Такой подход получил название модульной структуризации.

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

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

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

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

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

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

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

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

3 Краткие сведения о языке программирования Общая структура программ

Простейшая программа на языке С выглядит так:

void main() { }

Операторы программы вставляются между фигурными скобками {} и выполняют действия основной(главной) функции программы. Некоторая информация может быть указана до main.

Более общая структура программы как правило содержит следующие элементы:

#include <имя заголовочного файла>

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

#define имя замещение

Директива препроцессора, задающая константы.

Объявления глобальных переменных и типизированных констант.

Опережающее объявление функций.

Основная функция main().

Определения функций

Условный оператор – оператор IF

if(условие) оператор1;

 else оператор2;

Условие представляет собой логическое выражение, результат которого ЛОЖЬ (0) или ИСТИНА (не нулевое целое).

Например:

if((а<5)&& (b<7)) a=b+2;

 else b+=2;

В случае если условие истинно, то выполняется оператор1 (a=b+2) иначе оператор2 (b=b+2). Перед ключевым словом else ставится точка с запятой. Существуют конструкции, когда ключевое слово ELSE отсутствует:

Например: if(a==5) a=0;

Если в случае выполнения или невыполнения условия надо выполнить несколько операторов, оператор 1 или 2 делается составным. Он начинается с { и заканчивается }.

 if( а<0){

 a=5;

 b=7

}

 else {

 b=0;

 a=7;

}

На практике часто используется конструкция if else if, в которой в случае не выполнения первого условия, после else идет проверка другого условия и т.д.

Например:

 if(а>5) k=1; 

 else if( а<5) k=-1;

else if( а==5) k=0;

Оператор множественного выбора switch

Если вариантов для сравнения много, вместо многочисленных конструкций if else if рациональнее использовать оператор switch.

switch( переменная или выражение)

{ case значение1: оператор1;

 break;

case значение2: оператор2;

 break;

--------------------------

default: оператор для случая, когда не сработал ни один из наборов значений

}

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

caseA’: caseB’: caseC’: оператор обработки в случае ‘A’, или ‘B’, или ‘C’.

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

Оператор цикла с предусловием while

while (условие повторения цикла) оператор;

Условие проверяется всякий раз перед выполнением оператора. Оператор выполняется если условие истинно после чего вновь возвращается на проверку условия. Если условие не выполняется переходим к оператору стоящему за оператором цикла. Оператор в цикле может быть составным и даже содержать другие вложенные циклы.

Оператор цикла с постусловием do while

do 

оператор;

while( условие повторения цикла);

В отличие от оператора while сначала выполняется оператор потом делается проверка на повторения цикла. Если условие истинно то цикл повторяется. Иначе- выход из цикла.

Счетный цикл for

for( имя переменной цикла:=нач.знач., другие операции до вхождения в цикл;

условие повторения цикла;

действия в конце каждого повторения цикла)

  оператор;

Например:

 for(I=1;I<=10;I++) A=A+I;

Оператор представляющий тело цикла, может быть и составным.

Инструкции безусловного перехода goto

goto метка;

Метка – это идентификатор, помечающая оператор который должен быть выполнен после оператора, предшествующего goto.

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

метка: оператор;

Запрещены переходы по метке между подпрограммами.

Подпрограммы(функции)

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

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

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

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

В языке С все подпрограммы - функции. По традиции определение функций(задание их алгоритмов с помощью операторов языка) помещается после функции main. Перед функцией main для проверки правильности использования помещают заголовки функций(опережающие описания). Структура заголовка:

Тип возвращаемого значения имя функции(тип параметра1 имя1, тип параметра2 имя2, и т. д.);

Функция возвращает как минимум одно значение задаваемого типа с помощью оператора return. Если функция ничего не возвращает – тип этого значения указывается void.

После объявления функции следует тело функции. Структура тела ничем не отличается от структуры функции main.

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

Пример:

char N;/*глобальная переменная*/

float count(int I, float *a);/*опережающее описание функции count: i – параметр для передачи в функцию значения, a – указатель на float(для возврата вычисленного значения), еще одно значение типа float возвращается как возвращаемое функцией.*/

………………………………………

void main()/* Основная программа*/

{ float S,f,hh;/* локальные переменные главного блока программы*/

S=0; f=10; N=5;/*присвоение начальных значений*/}

f=count(N,&S);/*первый вызов функции n –вместо i,адрес S(указатель на S) – вместо a , f –запоминает значение, возвращаемое функцией*/

/*Результат: N=5, S=28, f=5040. Видим, что N –не изменилось, S и f –изменились*/

………………………………………

f=count(7, &S);/*Повторные вызовы функции в ходе работы программы. На место параметра, передаваемого по значению можно подставить и константу*/

………………………………………

hh=count(N, &S);

}

float count(int I, float *a);/* определение функции*/

{

char K; /*локальная переменная*/

float b;

 i+=2;{изменяем i}

b=1;

for( K=1; K<= i;K++)

 {

* a+=K;/*изменяем значение, хранящееся по указателю a*/

 b*=K;/* изменяем b*/

}

return b;/* возвращаем значение функции*/

}/*конец функции*/

Оператор return позволяют завершить подпрограмму в любом месте не доходя до конца.


4 Лабораторная работа №1 Последовательностные алгоритмические структуры

Задание. Вычислить S по заданному выражению. Найденные значения вывести на экран.

Порядок выполнения лабораторной работы.

  1.  Ознакомление с заданием. Разработка алгоритма. Написание программы.
  2.  Ознакомление с интегрированной средой разработки (ИСР). Ввод программы. Устранение синтаксических ошибок.
  3.  Отладка программы. Получение и оценка результатов. Оформление отчета.
  4.  Защита лабораторной работы.

Варианты.

№ вар

Исходные данные

и константы

Выражение для S

№ вар

Исходные данные

и константы

Выражение для S

  1.  

А=5, В=4.5

Вводить:

С – действительное

D – целое число

S=A*C+B*D

11.

D=2, C=4.3

Вводить:

A – целое число

B – действительное

S=(A-D)*(C-B)

  1.  

A=4, C=7.5

Вводить:

D – действительное

B – целое число

S=A+D*B+C

12.

C=2, D=5.4

Вводить:

B – целое число

A – действительное

S=A*B*C-D

  1.  

A=7, D=3.25

Вводить

С – целое число

B – действительное

S=A*C*D+B

13.

B=4, D=4.1

Вводить:

A – целое число

C – действительное

S=D*A-C*B

  1.  

B=3, C=7.1

Вводить

A – целое число

D – действительное

S=A-D-C*B

14.

A=10, D=3.3

Вводить:

B – целое число

C – действительное

S=(A+C)*D-B

  1.  

B=7, D=3.5

Вводить:

C – целое число

A – действительное

S=A*D+B-C

15.

C=7.2, D=1

Вводить:

B – целое число

A – действительное

S=A*C+D-B

  1.  

C=2, A=7.3

Вводить:

B – целое число

D – действительное

S=B*C+A+D

16.

C=4.3, B=4

Вводить:

A – целое число

D – действительное

S=D*A+B*C

  1.  

C=1, B=3.4

Вводить:

D – целое число

A – действительное

S=B-C*A+D

17.

C=3.7, A=7

Вводить:

D – целое число

B – действительное

S=C*D-A+B

  1.  

C=4, D=4.1

Вводить:

A – целое число

B – действительное

S=B+A*D-C

18.

B=14.3, A=2

Вводить:

С – целое число

D – действительное

S=(D-A)*B-C

  1.  

D=1, A=1.7

Вводить:

C – целое число

B – действительное

S=(A-C)*B+D

19.

B=7.7, C=3

Вводить:

A – целое число

D – целое число

S=A-B+D*C

  1.  

D=7, B=3.5

Вводить:

С – целое число

A-действительное

S=(B+C-D)*A

20.

B=4.1, D=3.3

Вводить:

A – действительное

C – действительное

S=(A+D+C)*B


21.

A=5.5, B=1.2

Вводить

C – целое число

D – действительное

S=A*(C-D)*B

26.

C=8.1, B=3.21

Вводить

A – целое число

D – действительное

S=B*(A*D-C)

22.

A=3.7, C=2.1

Вводить

B – действительное D – действительное

S=C-B*D-A

27.

C=3, D=1

Вводить

A – действительное

B – действительное

S=(D+A*B)*C

23

A=4.8, D=1.12

Вводить

C – целое число

B – действительное

S=C*(B+A-D)

28.

A=1, D=3

Вводить

C – целое число

B – действительное

S=(C-D*B)*A

24.

B=7.11, C=3.1

Вводить

A – действительное D – действительное

S=(A*C-D)*B

29.

D=1, C=4

Вводить

A – действительное

B – действительное

S=A*B*C-D

25.

B=1.18, D=4.7

Вводить

C – целое число

A – действительное

S=(B*C+A)*D

30.

B=5, D=2

Вводить

A – действительное

C – действительное

S=(D-A-C)*B

Пример лабораторной работы №1.

Исходные данные: K=4; L=7.4;

Вводить M – действительное; N – целое.

Вычислить S=K*(M-N)+2 L (N+M). Результат вывести на экран

Текст программы.

#include <stdio.h>

#include <stdlib.h>

#define K 4

void main()

{ const float L=7.4; /* тоже задание константы*/

/* объявления переменных*/

float M,S;/* Анализируя выражение видно, что S – действительное*/

int N;

printf(“Введите число М-“);/* Сообщение на экран*/

scanf(“%f”,&M)/* Ввод М*/

printf(“Введите число N-“);/* Сообщение на экран*/

scanf(“%d”,&N)/* Ввод N*/

S=K*(M-N)+2*L*(N+M); /*Вычисление S по формуле*/

printf(“Результат-%7.3f”, S);/*Вывод результата:комментарий+значение S*/

}/* Конец программы*/

Тестовая последовательность.

Вводим контрольные значения M=5.5, N=2.

Результат -125.


5 Лабораторная работа №2 Ветвящиеся алгоритмические структуры. Математические функции из встроенной библиотеки.

Модернизировать задание первой лабораторной работы. Найти F по предложенному выражению, используя ранее найденное S. Результаты вычисления S и F вывести в одну строку на экран. Проверять возможность выполнить действие по нахождению F.

Порядок выполнения:

  1.  Разработка математической модели и алгоритма задачи. Разработка тестовых последовательностей данных. Написание программы.
  2.  Ввод и отладка программы.
  3.  Оформление и защита лабораторной работы.

Варианты.

№ вар

Выражение для F

№ вар

Выражение для F

№ вар

Выражение для F

1

11

21

2

12

22

3

13

23

4

14

24

5

15

25

6

16

26

7

17

27

8

18

28

9

19

29

10

20

30

Пример лабораторной работы №2.

Вычислить , используя результаты примера к л.р.№1 .

  1.  Разработка математической модели.

F не всегда может быть вычислена. F не существует в следующих случаях:

а) S0, тогда ln(S) – не существует. С учетом погрешности можно говорить, что необходимо S>, где >0.

б) М=5 – деление на ноль, или с учётом возможных погрешностей |М-5|, где - маленькое число. Примем =0.001, что гораздо меньше 5.

в) Если N0, а M=0 – то значение F также не существует.(отрицательная степень переводит в знаменатель – получаем деление на 0)

г) Следует учесть особенности вычисления степенной функции (если ее вычислять как это принято в C) .

Функция pow не существует если M0 и N-действительное., но в нашем случае оно –целое.

  1.  Разработка алгоритма.

Этот фрагмент алгоритма добавляется в алгоритм предыдущей задачи

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

……………………………………………

void main()

{…………………………………

const float d=0.001;/*Задаем возможную погрешность*/

float F;/*Дополнительная переменная*/

………

/*Новый фрагмент программы*/

if( S>d)/*Случай a*/

IF(fabs(M-5)> d)/*Случай б*/

 IF( (N>0)|| (fabs(M)>=d))/*Случай в*/

 {

F=log(S)*pow(M,N)/(M-5);

Printf(“F=%12e”,F);

}/*Конец составного оператора*/

 else printf(“F – нет, деление на 0”) /*Случай в*/

 else printf(“F – нет, деление на 0”) /*Случай б*/

 else printf(“F – нет, S<0”) /*Случай а*/

}

  1.  Разработка тестовых последовательностей данных. Эти последовательности должны проверять все ветвления. В нашем случае:а) N=2, M=-10. Тогда S=-166.4 <0 и F – не существует;

б) N=2, M=5. Тогда F – не существует (деление на 0);

в) N=-2, M=0. Тогда и F – не существует и т. д. для всех ветвлений.


6 Лабораторная работа №3. Простые циклы

Найти все возможные значения S и F из лабораторной работы №2 для задаваемого диапазона и шага изменения указанной величины. Если величина целая, то и шаг целый. Решение задачи организовать с помощью операторов циклов.

Порядок выполнения работы.

1. Анализ задания. Разработка алгоритма и тестовых последовательностей. Модернизация и отладка программы.

2. Оформление и защита лабораторной работы.

Варианты.

№ вар.

Изменяющаяся в цикле величина

№ вар.

Изменяющаяся в цикле величина

№ вар.

Изменяющаяся в цикле величина

1

C

11

A

21

D

2

D

12

A

22

B

3

B

13

C

23

B

4

D

14

C

24

A

5

A

15

B

25

A

6

D

16

A

26

D

7

A

17

B

27

B

8

B

18

D

28

C

9

B

19

D

29

A

10

A

20

A

30

C

Пример лабораторной работы №3

Модернизировать пример к лабораторным работам 1 и 2. Изменяющаяся величина – M.

  1.  Анализ задания. Для задания диапазона необходимо указать M_beg – начальное значение, M_end – конечное значение и HM – шаг изменения от начального значения к конечному.
  2.  Разработка алгоритма. Необходимо организовать дополнительно к существующим средствам ввод M_beg, M_end и HM вместо M. Сделать цикл по M. Так как в цикле участвуют величины действительного типа, это будет цикл WHILE. Для каждого очередного значения вычисляем S и F, если это возможно. Текущее значение M, S и F выдавать в одну строку, тогда алгоритм будет выглядеть так:

  1.  Разработка программы. С учетом возможных погрешностей проверку на конец цикла по M и условия возможности выполнить вычисление будем производить с небольшим запасом. Например проверка повторения цикла:

M<=M_end+0.01*HM.

Одно из условий возможности вычислить F: if(fabs(M-5)> 0.01*HM).

…………………… void main() {

float M,M_beg,M_end,HM; ……………………. printf(“Введите начальное значение, конечное значение и шаг M”); scanf(“%f%f%f”,&M_beg,&M_end,&HM); printf(“Введите значение N”); scanf(“%d”,&N); M=M_beg; /*присваиваем начальное значение*/ while( M<=M_end+0.01*HM)/*Организуем цикл по M*/ { /*Составной оператор цикла, начало*/ printf(“M=%8.2f”, M); /*выводим очередное значение M*/ /*Вычисляем и выводим S и F, причем после вывода F(или сообщения о невозможности вычислить) добавляем символ \n чтобы обеспечить переход на новую строчку для вывода значений при следующем M с новой строки*/ M+=HM; /*Переход к следующему значению M из диапазона*/ } /*Конец составного оператора в цикле*/ }

Имеет смысл выполнить эту программу с использованием операторов циклов while, do while, for, чтобы разобраться с особенностями их применения.

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


7 Лабораторная работа №4 Вложенные циклы

Найти все возможные значения S и F для задаваемых диапазонов изменения входных величин и шага изменения. Если величина целая, то и шаг ее – тоже целое. Решение задачи организовать с помощью операторов цикла. Модернизировать вычисление F в соответствии с заданием. Перебрать все возможные сочетания входных величин. Сочетаний может быть много. Организовать поэкранный вывод результатов. При разработке программы использовать результаты выполнения лабораторных работ 1-3.

Порядок выполнения работы

Занятие 1. Анализ задания. Разработка математической модели задачи(обратите внимание, что выражение F изменилось). Подготовка тестовых последовательностей. Разработка алгоритма. Внесение изменений и отладка программы.

Занятие 2. Оформление и защита лабораторной работы.

Варианты.

№ вар

Выражение для F

Изменяемые величины

№ вар

Выражение для F

Изменяемые величины

1

C и D

16

А и D

2

D и B

17

B и D

3

B и С

18

C и D

4

A и D

19

A и D

5

A и C

20

A и C

6

B и D

21

C и D

7

A и D

22

B и D

8

A и B

23

B и C

9

B и C

24

A и D

10

A и C

25

A и C

11

A и B

26

F=

A и D

12

A и B

27

A и B

13

A и С

28

B и C

14

В и С

29

A и B

15

А и В

30

A и C


Пример лабораторной работы №4

Модернизируем пример лабораторной работы №3, введя дополнительно цикл по N от N_BEG до N_END с шагом НN. Алгоритм представлен на рисунке.

Программа.

.................

void main()

{ float M,M_BEG,M_END,HM;

int N,N_BEG,N_END,HN;

char i=0;/*для организации поэкранного вывода i-количество строк результатов, выведенных на экран */

.................

/*Вводим исходные значения M_BEG,M_END,HM,N_BEG,N_END,HN */

 N=N_BEG;

while( N<=N_END)/*Работа с целыми не даёт погрешности для операций сложения и вычитания*/

{/*Начало составного оператора цикла по N*/

 M=M_BEG;/*Каждый раз внутренний цикл начинать с M_BEG*/

 while( M<=M_END+0.01*HM)/*Для цикла по M учитываем погрешность*/

{/*Начало цикла по M*/

/*Вычисляем S и F и вывод N,M,S и F если возможно*/

 i++;/*учитываем очередную строку результата*/

 if(i==24)/*Экран в текстовом режиме-25 строк. Если из них 24 уже заполнены*/

{ printf(“Для продолжения нажмите любую клавишу”);

 getch()/*Ожидает нажатия клавиши*/

 i=0;/*Обнуляем, чтобы отсчитать следующие 24 строки*/

}

 M+=HM;

}/*конец цикла по M*/

 N+=НN;

}/*конец цикла по N*/

}

Тестовые последовательности разрабатываются подобно тому, как мы это делали в предыдущей работе.


8 Лабораторная работа № 5 Циклы с последовательным накоплением результатов 

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

Порядок выполнения работы.

  1.  Разработка математической модели и алгоритма задачи. Разработка тестовых последовательностей данных. Написание и откладка доработанной программы.
  2.  Оформление и защита лабораторной работы.

Варианты.

№ вар.

Вычислить

№ вар.

Вычислить

№ вар.

Вычислить

1

и k- количество S>0

11

и k – количество F ≤ 1

21

и k – количество F>0

2

и k- количество F>0

12

и k – количество B>0

22

и k – количество F≤1

3

и k- количество F<0

13

и k – количество C>2

23

и k – количество S<1

4

и k- количество F для D<0

14

и k – количество S>4

24

и k – количество F≥2

5

k-количество F<5

15

и k – количество F≤0

25

и k – количество A<0

6

k-количество B>0

16

и k – количество D<0

26

и k – количество А≥2

7

k-количество А>0.5

17

и k – количество F<0

27

и k – количество F>0

8

k-количество B0

18

и k – количество F>0

28

и k – количество S<0

9

k- количество В≥0

19

и k – количество A>0

29

и k – количество F<2

10

и k-количество F для А<1

20

и k – количество S>0

30

и k – количество F≥0


Пример к лабораторной работе №5

Условие задания:

Доработать алгоритм и программу лабораторной работы № 4, введя вычисление суммы всех S>0(),а также произведения всех F, вычисленных для M>L (), и их количества k

Фрагмент блок-схемы алгоритма представлен на рисунке.

Фрагменты листинга программы:

void main()

{……………

float SUM=0,PR=1;/*объявление дополнительных

переменных и их начальных значений*/

unsigned int k=0;

…………………

S=…………;

if(S>0) SUM+=S;

printf(“S=%7.3f ! SUM=10.3f !”,S,SUM);

…………………

if((N>0) ||(M!=0))

{ F=…………;

if(M>L)

{ PR*=F;

k++;

}

printf(“F=%10.3f ! PR=%12e! k=%4d!\n”,F,PR, k);

}

………………

}


9. Лабораторная работа N 6 Организация итерационных циклов.

Цель. Освоить методы программирования итерационных вычислительных процессов.

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

Требования к программе: Составить блок-схему алгоритма и паскаль-программу. Организовать по экранный вывод результатов. Найти количество потребовавшихся итераций.

Выводимые величины: - текущая оценка точности, y – текущее приближенное значение, n – номер итерации, исходные данные.

Порядок выполнения лабораторной работы.

  1.  Ознакомление с заданием. Разработка алгоритма.
  2.  Написание программы. Вод программы. Устранение синтаксических ошибок.
  3.  Отладка программы. Получение и оценка результатов. Оформление отчета.
  4.  Защита лабораторной работы.

Варианты.

Задание

(Вычислить значение функции)

Рекуррентная формула

Вычисления

прекратить

при

Исходные данные для контрольного просчета

 

1

y =

k = 0, 1, 2...

y(0) = 0.125;

x = 5;

E = 0.00001

2

k = 0, 1, 2...

y (0) = 0.25;

x = 11; E = 0.000001

3

k = 0, 1, 2...

x(0) = 0.5;

E = 0.000001

4

k = 0, 1, 2...

x(0) = 1.5;

E = 0.0001

5

k = 0, 1, 2...

 

6

y = sin(x) = U(k)

k = 1, 2, 3...

U(1) = x;

E = 0.0001;

7

k = 0, 1, 2...

q = 4.78; y = 7;

x = 16234;

E = 0.000001

8

k = 0, 1, 2...

p = 7; Y(0) = 6;

x = 277234;

E = 0.000001;

9

k = 0, 1, 2...

x(0) = 0.5;

E = 0.000001

10

k = 0, 1, 2...

y(0) = 2; x = 15;

E = 0.000001;

11

y = ch(x) = сумма(U(k))

k = 1, 2, 3...

u(1) = 1; x = 5.5;

E = 0.001

12

k = 0, 1, 2...

y(0) = 3; x = 7;

E = 0.00001

13

k = 0, 1, 2...

x(0) = 1.2;

E = 0.0001

14

k = 0, 1, 2...

x(0) = 10;

E = 0.0001

15

k = 0, 1, 2...

x(0) = 1.5;

E = 0.001;

16

k = 0, 1, 2...

x(0) = 0.6;

E = 0.001;

17

k = 0, 1, 2...

x(0) = 0.5;

E = 0.001

18

Отрицательный корень уравн

k = 0, 1, 2...

x(0) = - 1.3;

E = 0.0001

19

 

x = 2.417,

E = 0.00001

U(0)=1

20

 

 

x = 0.437;

E = 0.0001;

u(1)=x

21

 

x = 0.476;

E= 0.0001

U(0)=1

22

x(0) = 0,

E= 0.0001

23

x(0) = 0,

E= 0.0001

24

25

26

 

x = 1,5, u(0)=x;

E= 0.001

27

 

u0=x

x = 0.8,

28

 

u0=x

x = 0.7; E= 0.001

29

 

U0=x;

x=0.8; E= 0.001

30

 

x=5; E= 0.001


Пример выполнения лабораторной работы №6.

Задание.

Вычислить значение функции e-t по рекуррентной формуле:

Вычисления прекратить при ∆=|X(k)-X(k-1)|<E, Вывести: ∆, X, n, E.

Решение.

Из рекуррентной формулы видно, что. Разделив i-е слагаемое суммы на (i-1)-е находим, что они отличаются множителем , а первое слагаемое при i=0 равно 1. Предыдущее и новое значение X будут отличаться только на очередное слагаемое, которое необходимо вычислить. Поэтому, необходимо применить цикл с постусловием. Алгоритм решения задачи представлен на рис. 11.

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

void main()

{ int i=1;

float Xt=1, p=1, E, t;

 printf(“Введите аргумент и точность вычисления-“);

 scanf(“%f%f”,&t,&E);

do{

p*= -1*t/i;

Xt+=p;

printf(“i=%3d Xt=%7.4f p=%7.4f\n”, i, Xt, fabs(p));

if(i%24==0){ printf(“ Для продолжения нажмите любую клавишу”)

 getch();

}

i++;

}while(fabs(p)>=E);

printf(“\nРезультат - %7.4.”,Xt);

getch();

}


10. Лабораторная работа № 7 Программирование вычислительных процессов с использованием подпрограмм

Цель: Освоить методы программирования с использованием подпрограмм.

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

Требования к программе.

  1.  Выполнить с помощью подпрограмм не используя глобальных переменных.
  2.  Размерность массива и элементы массива вводить с клавиатуры. Максимальная размерность массива 8х8.
  3.  Результаты выводить на экран.

Порядок выполнения работы.

  1.  Разработка математической модели и блок-схем алгоритмов основного модуля и подпрограмм.
  2.  Написание и отладка программы.
  3.  Оформление и защита.

Варианты.

варианта

Выполнить действие

Исходные данные для контрольного просчета

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

10

 

11

 

12

 

13

 

14

 

15

 

16

 

17

 

18

 

19

 

20

 

21

 

22

 

23

 

24

 

25

 

26

 

27

 

28

 

29

 

30

 


Пример к лабораторной работе №7

Условие задания:

Ввести две матрицы. Выполнить действие: . Вывести результат на экран.

При

Постановка задачи

Проанализировав задание, в результате декомпозиции можно указать следующие действия по решению задачи:

  1.  Ввести матрицу А;
  2.  Ввести матрицу В;
  3.  Получить транспонированную матрицу А в D;
  4.  Получить транспонированную матрицу B в E;
  5.  Перемножить D и E. Результат в C;
  6.  Вывести С.

Есть повторяющиеся действия, которые целесообразно организовать в виде подпрограмм:

  1.  Ввода матрицы и ее размерности(входные параметры - имя матрицы, результат – матрица и размерности, в самом общем случае-две) – функция read_m;
  2.  Получение транспонированной матрицы из заданной( входные параметры – матрица и ее размерность, результат – матрица) – функция transp.

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

Алгоритм основной программы


Текст программы.

#include <stdlib.h>

#include <stdio.h>

char read_m(const char S,float *M);

void transp(const char N,const float *A,float *B);

void main()

{

float A[8][8],B[8][8],C[8][8],D[8][8],E[8][8];

char NA,NB,I,J,K;

NA=read_m(‘A’,(float*)A);

NA=read_m(‘B’,(float*)B);

if(NA==NB)

{transp(NA, (float*)A, (float*)D);

transp(NB, (float*)B, (float*)E);

for(I=0;I<NA;I++)

for(J=0;J<NA;J++)

{

C[I][J]=0;

for(K=0;K<NA;K++)

C[I][J]+=D[I][K}*E[K][J];

}

printf(“\nРезультат:\n”);

for(I=0;I<NA;I++)

{

for(J=0;J<NA;J++)

printf(“%7.2f “,C[I][J]);

printf(“\n”);

}

}

else printf(“Некорректные данные.”);

}

char read_m(const char S,float *M)

{ char i, j, N;

printf(“ Введите размерность квадратной матрицы %с”,S);

scanf(“%d”,&N);

printf(“Введите поэлементно матрицу %с”,S);

for(i=0;i<N;i++)

for(j=0; j<N; j++)

{

 printf(“Введите элемент%с[%d][%d]-“, S, i+1, j+1);

 scanf(“%f”,M+i*N+j);

}

return N;

}

void transp(const char N,const float *A,float *B)

{char i, j ;

for( i=0; i<N; i++)

for(j=0; j<N; j++)

* (B+i*N+j)=*(A+j*N+i);

}


13. Контрольная работа №1

Задание 1.

Дать описание, привести структуру и свойства следующих элементов языка C:

0 - Общей структуры программы.

1 - Простых типов данных языка.

2 - Средств ввода и вывода. Форматированного вывода.

3 - Условного оператора ( IF ).

4 - Оператора варианта ( SWITCH ).

5 - Оператора цикла с предусловием ( WHILE ).

6 - Оператора цикла с постусловием (DO... WHILE ).

7 - Оператора счетного цикла с параметром ( FOR .).

8 - Операторов безусловного перехода ( GOTO ) и операторов break , continue .

9 - Базовых арифметических и логических операторов.

Привести иллюстрационные фрагменты программы с применением элементов языка. Номер варианта соответствует последней цифре шифра студента.

Задание 2.

Составить блок-схему алгоритма и программу вычисления значения функции с точностью (ошибкой)

е=10-4

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

Вычисления оформить в виде подпрограммы-функции.

Номер варианта определяется по двум последним цифрам шифра студента.

  1.   при | х |≤1.
  2.   при | х |≤1.
  3.   при | х |≤1.
  4.   при | х |≤1.
  5.   при | х |≤1.
  6.   при | х |≤1.
  7.   при | х |≤1.
  8.   при | х |≤1.
  9.   при | х |≤1.
  10.   при | х |≤1.
  11.   при | х |≤1.
  12.   при | х |<1.
  13.   при | х |<1.
  14.   при | х |<1.
  15.   при | х |<1.
  16.  при | х |<1.
  17.  при 0 < х/2
  18.  
  19.  при 0 < х/2
  20.  при 0 < х/2
  21.  
  22.   при х > 0
  23.   при 0 < х ≤2
  24.   при -1 < х ≤1
  25.   при | х |<1.
  26.   при | х |<1.
  27.   при | х |<1.
  28.   
  29.  
  30.   при | х |<1


 Приложение 1

Основные обозначения элементов на блок-схемах.


Примеры правильного соединения блоков.

Примеры неправильного соединения блоков.

Использование соединителей.


Программирование циклических вычислительных процессов.

Цель: Освоить методы организации циклических программ с использованием условных операторов и операторов перехода.

Задание.

Вычислить значение Z по формуле: 

При А=2,3 В=5 -10X10 ∆X=1

Вычислить К – количество Z, ,

Вывести: X,Y,K,P,S.


Рисунок 1 - Блок-схема программы.

Далее приводится текст программы и полученные результаты.


Список литературы

  1.  Богумирский Б. Эффективная работа на IBM PC. - СПб: Питер, 1995. - 688 c.

Бородич Ю.С. и др. Паскаль для персональных компьютеров. - Минск: Выш.шк., 1991. - 365c.

Брябрин В.М. Программное обеспечение персональных ЭВМ. - М.: Наука, 1990. 272с.

Бухтияров А.М., Фролов Г.Д. Сборник задач по программированию на алгоритмических языках. - М.: Наука, 1978. 268с

Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1989, 360 c.

Вычислительная техника в инженерных и экономических расчетах. Под редакцией Петрова А.М. - М.: Наука, 1978. 268с

Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль.- М.: Финансы и статистика, 1991. - 720 c.

Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль. - М.: Изд-во МАИ, 1992. - 576 c.

Светозарова Г.И., Сигитов Е.В., Козловский А.В. Практикум по программированию на алгоритмических языках. - М.: Наука. 1980. 318с.

Фаронов В.А. Программирование на персональных ЭВМ в среде Турбо-Паскаль. - М.: Изд-во МВТУ, 1990. - 580 c.

Фигурнов В.Э. IBM РС для пользователя. - М.: Финансы и статистика, 1991. 288с

Фридмен М., Ивенс Л. Проектирование систем с микроконтроллерами. - М.: Мир, 1986. 405с.

Хьюз Дж., Мичтом Д. Структурный подход к программированию. - М.: Мир, 1980. 266с.


Содержание

Введение 3

1 Основные сведения о персональном компьютере IBM PC 3

2 Проектирование программных средств 4

3 Краткие сведения о языке программирования Общая структура программ 6

4 Лабораторная работа №1 Последовательностные алгоритмические структуры 10

5 Лабораторная работа №2 Ветвящиеся алгоритмические структуры. Математические функции из встроенной библиотеки. 12

6 Лабораторная работа №3. Простые циклы 14

7 Лабораторная работа №4 Вложенные циклы 16

8 Лабораторная работа № 5 Циклы с последовательным накоплением результатов 18

9 Лабораторная работа N 6 Программирование циклических вычислительных процессов. 20

10 Лабораторная работа N 7 Программирование вычислительных процессов с вложенными циклами. 25

11. Лабораторная работа N 8 Организация итерационных циклов. 29

12. Лабораторная работа № 9 Программирование вычислительных процессов с использованием процедур 34

13. Лабораторная работа № 10 Программирование вычислительных процессов с использованием процедур. Работа с файлами. 39

14 Лабораторная работа № 11 Программирование вычислительных процессов с использованием процедур 40

13. Контрольная работа №1 43

Приложение 1 45

Приложение 2 47

Список литературы 51

Рисунок 2.1 - Пример последовательной структуры алгоритма.

Рисунок 2.2 - Пример ветвящейся структуры алгоритма.

Рисунок 3.1 Блок–схема условного оператора.

условие

Оператор1

+

Оператор2

a=5

a=0

+

Рисунок 3.2 – Оператор if с одной ветвью.

знч-е1

Знч-е2

Знч-е3

Оператор1

Оператор2

Оператор3

+

+

Рисунок 3.3 - Блок – схема с CASE

Условие

Оператор

Рисунок 3.4 – Блок-схема оператора while

условие

Операторы

+

Рисунок 3.5 – Блок-схема оператора do while

А=A+I

I,1,10

Рисунок 3.6 – Блок-схема оператора FOR

начало

К=4;    L=7,4;

Введите М

M

Введите N

N

S=K(M-N)+2L(N+M)

Результат S

конец

Рисунок 4.1 Блок-схема алгоритма.

S>

F-нет,S<0

|M-5|>

F-нет,дел на 0

N>0, или M!=0

F-нет,нет степ ф-ции

1

F=ln(S)*pow(M,N)/(M-5)

‘F=’,F

выход

1

+

+

+

а

б

в

Рисунок 5.1 Фрагмент блок-схемы алгоритма.

начало

K=4 ; L=7.4

Ввод N, M_beg,, M_end, HM

M=M_beg

M<=M_end

Вывод M

Вычисление и вывод S и F (см. Л. Р. №2)

M=M+HM

конец

+

Рисунок 6.1 Блок-схема алгоритма без элементов, представленных в лабораторной работе 2.

КОНЕЦ

N<=N_END

M<=M_END

1

1

Вычисляем и выводим S и F(алгоритм)

N=N+HN

M=M+HM

НАЧАЛО

Ввод M_BEG, M_END, HM, N_BEG,N_END,HN

N=N_BEG

M=M_BEG

+

+

Рисунок 7.1 Блок-схема алгоритма без фрагментов вычисления F и S и поэкранного вывода.

S=….

Sum=Sum+S

S>0

+

      НАЧАЛО

SUM=0;PR=1;k=0

Вывод

S, Sum

Рисунок 8.1 Блок-схема алгоритма вычисления суммы, произв. и количества.

F=…..

N>0, или M!=0

+

 M>L

+

PR=PR*F; k=k+1

Вывод

F, PR, k

начало

i=1    Xt=1    p=1

p=p*(-1)*t/i

Xt=Xt+p     i=i+1

abs(p)>=E

Ввод t , E

Вывод: i, Xt, p

Результат-Xt

+

конец

Рисунок 9.1 – Блок-схема применения рекуррентной формулы.

Начало

NA=read_m(‘A’, A)

NB=read_m(‘B’, B)

NA=NB

Некорректные

данные

Конец

+

transp(NA,A, D)

transp(NB,B,E)

I,0,NA-1

J,0,NA-1

CIJ=0

K,0,NA-1

CIJ=CIJ+DIK*EKJ

1

I,0,NA-1

J,0,NA-1

Вывод СIJ

Новая строка

1

Рисунок 10.1 – Блок-схема алгоритма основной программы.

I,0,NA-1

J,0,NA-1

BIJ= AJI 

Вход

Выход

Рисунок 10.2 – Блок схема подпрограммы transp

6

10

14

6

5

4

Номер страницы, на которую идет ссылка

Номер страницы, с которой идет ссылка

Метка


 

А также другие работы, которые могут Вас заинтересовать

69832. ОСНОВНЫЕ ПРОБЛЕМЫ И ПОДХОДЫ К ПРЕПОДАВАНИЮ ПРАВА В СОВРЕМЕННОЙ ШКОЛЕ 31 KB
  Однако если в начале 90-х годов школа испытывала трудности из-за нехватки учебных пособий педагогических кадров профессионально подготовленных в области юриспруденции наглядных средств обучения и прочее то к настоящему времени ситуация кардинально изменилась.
69833. Основы национальной политики РФ (по Конституции 1993 года) 29.5 KB
  Федеративное устройство Российской Федерации основано на ее государственной целостности единстве системы государственной власти разграничении предметов ведения и полномочий между органами государственной власти Российской Федерации и органами государственной власти субъектов...
69834. Особенности искусства Средневековья 33 KB
  Кроме того церковь была главным заказчиком искусства. Церковь понимая огромную силу искусства по воздействию на людей использовала его для наставления в вере. Другой особенностью средневекового искусства была близость его к народному творчеству так как в отличие от античного искусства...
69835. Особенности национального вопроса в РФ 32.5 KB
  После распада СССР начался процесс переноса «демократических», антитоталитарных подходов в чувствительную сферу национальной политики. Раздавались требования предоставить любому народу право на самоопределение вплоть до отделения.
69836. Особенности управления Сибирью в XVI-XVIII вв 37 KB
  Региональные факторы формирования особенностей управления Сибирью Важную роль в формировании административной системы Сибири сыграли политико-географические факторы. Правительство приняло решение учредить в Сибири особый параллельный столице государства административный центр...
69837. МЕТОДОЛОГИЧЕСКИЕ ПРОБЛЕМЫ ПРЕПОДАВАНИЯ ТЕОРИИ ПРАВА И ГОСУДАРСТВА 31 KB
  Общая теория права и государства фундаментальная методологическая наука правоведения дающая систему знаний о социальном назначении права и государства закономерностях и тенденциях их развития исторических судьбах путях практических преобразований об общем понятийном...
69838. Методика и методы правового обучения 309.5 KB
  Методика правового обучения включает в себя специфические частные закономерности обучения правовым дисциплинам, технологический инструментарий, позволяющий оптимальными методами и средствами усваивать содержание той или иной дисциплины, овладевать опытом предметной деятельности.
69839. МЕТОДИКА ПРЕПОДАВАНИЯ АДМИНИСТРАТИВНОГО ПРАВА 67.5 KB
  Бельский первым среди современных ученых-административистов предпринял весьма важную попытку проанализировать историю административного права показать истоки российской административно-правовой науки. Его книга Феноменология административного права заслуживает самых лестных отзывов.