МУ_ЛР2_ОП (1079923), страница 2

Файл №1079923 МУ_ЛР2_ОП (Методические указания к лабораторным работам) 2 страницаМУ_ЛР2_ОП (1079923) страница 22018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

// Циклы do

int i = 0;

do

{

printf("Шаг цикла(do) - %d\n" , i);

i++; i++;

} while ( i < 4);

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

// Цикл for с условной остановкой на втором шаге

for (int i =1 ; i <= 5 ; i++ )

{

printf("Шаг цикла(break) - %d\n" , i);

if ( i == 2) break;

};

Оператор continue прерывает выполнение только текущего шага цикла. Далее цикл продолжается так, как задано по начальному условию. В примере, расположенном ниже часть 2 цикла не выполняется при значении индекса I равного 2-м.

// Цикл for с условным пропуском части операторов на втором шаге ( continue)

for (int i =1 ; i <= 5 ; i++ )

{

printf("Шаг цикла(break) - %d" , i);

if ( i == 2) { printf("Пропуск %d!!\n", i); continue; };

printf("Тело - часть 2!!\n");

};

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

Для цикла for ( суммирование массива):

Summ = 0; // начальное условие

for (int i = 0 ; i < MAX; i++ ) // начальное условие и проверка продолжения

{

Summ = Summ + iMas[i]; // тело цикла

… // Другие операторы тела цикла

};

Для цикла while, тоже вычисление суммы массива:

Summ = 0; // начальные условия

int i =0; // начальные условия

while (i < MAX ) // проверка продолжения

{

Summ = Summ + iMas[i]; // тело цикла

i++;

… // Другие операторы тела цикла

};

Для цикла dowhile (сумма в массиве):

Summ = 0; // начальные условия

int i =0; // начальные условия

do {

Summ = Summ + iMas[i]; // тело цикла

i++;

… // Другие операторы тела цикла

} while (i < MAX ); // проверка продолжения

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

9 Отладка программ.

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

  • Запустить программу в режиме отладки без трассировки по шагам (F5);

  • Выполнить программу по шагам (F10);

  • Выполнить программу по шагам с обращениями к вложенным функциям(F11);

  • Установить точку останова (BreakPointF9);

  • Выполнить программу до первой точки останова (F5);

  • Просмотреть любые данные в режиме отладки в специальном окне (locals);

  • Просмотреть любые данные в режиме отладки при помощи мышки;

  • Изменить любые данные в режиме отладки в специальном окне (locals и Watch);

  • Установить просмотр переменных в специальном окне (Watch);

  • Просмотреть последовательность и вложенность вызова функций.

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

Примечание. Подробное описание материала и понятий вы можете найти в литературе [1 - 6] или справочной системе MS VS. Кроме того, не пропускайте лекции по курсу. Не рекомендую безоговорочно верить материалам из сети Интернет (например, в Википедии), так как там в некоторых статьях есть ошибки!

10 Модули

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

  • Исходные модули, содержащие текст на языке программирования.

  • Объектные модули получаются в результате компиляции программы.

  • Исполнимые модули предназначены для выполнения программы.

Исходные модули могут быть разных типов. Основные исходные модули – это модули программ (*.c, *.cpp) и модули заголовочных файлов (*.h , *.hpp). Они включены в разные разделы дерева проекта программы.

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

Исполнимые модули предназначены для непосредственного выполнения на компьютере или подключения в выполняемую программу. Основные исполнимые модули имеют расширение *.exe (или *.com), поэтому операционная система может контролировать их запуск. Модули динамических библиотек имеют расширение *.dll. Существуют и другие разновидности исполнимых модулей, зависящих от используемых технологий. Исполнимые модули формируются специальной программой системы программирования редактором связей (или компоновщиком). Редактирование связей заключается в проверке межмодульных связей по функциям и по данным и объединении их единый исполнимый модуль. Последовательный процесс обработки программы для получения исходного модуля представлен в методическом пособии в разделе 3[5].

Для объединения модулей функционально и по данным в С++ используются прототипы функций и описание внешних переменных. Покажем это на простом примере:

// Модуль 1

int i = 0; // Глобальная переменная

int Summ(int a, int b){}; // Описание функции в модуле 1

// Модуль 2

extern int i; // Описание внешних данных

int Summ(int , int ); // Прототип внешней функции

main(){

i = 5; // Использование внешних данных

S = Summ(2,2); // Вызов внешней функции

}

В модуле 2 используется переменная i, описанная как глобальная переменная в модуле 1. В модуле 2 используется функция Summ, описанная как в модуле 1. Для правильного объединения связей (работы редактора связей) используются описания внешних данных (extern) и задание прототипа функции Summ.

11 Понятие о блок-схемах

Для описания алгоритмов используются различные способы. Наиболее наглядным и простым является технология блок-схем. В лабораторных работах вам необходимо в совершенстве освоить эту технологию. В ЛР №2 фрагменты программ циклического вида и с ветвлением нужно оформит в виде блок-схемы. Блок-схемы позволяют не только логично и без ошибок построить программу, но и проверить ее работу в процессе отладки и проверки. Технология построения блок-схем подробно описана в методическом пособии к лабораторным работам по курсу[5] в разделе 8. Для графического построения блок-схем очень удобно использовать программный продукт MS Visio. Пример блок-схемы для вычисления суммы положительных элементов массива приведен ниже.



12 Библиотеки функций

В системах программирования предусматривается много библиотек для функций различного назначения (например, для работы со строками, выполнения ввода и вывода, работы с массивами и т.д.). Эти библиотеки подключаются с помощью заголовочных файлов или пространств описаний (имен - namespace). Кроме заголовочных файлов для использования библиотек подключаются специальные модули (иногда они подключаются автоматически), содержащие описания функций ( *.lib или *.dll). Пример подключения библиотек ввода/вывода и библиотек для работы с математическими и системными функциями:

#include <math.h>

#include <process.h>

#include <stdio.h>

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

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

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

Для этого нужно создать пустой проект в MS VS (Test_LR2), как описано выше, скопировать через буфер обмена в него текст данных примеров, отладить его и выполнить.

14 Пример поиска максимального значения из трех переменных (А , B, C)

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

// условный переход

int A = 4 , B = 4 , C =1;

if ( A > B )

{

if ( A > C )

printf("Максимально (A) - %d\n" , A);

else

printf("Максимально (C) - %d\n" , C); }

else

{

if ( B > C )

printf("Максимально (B) - %d\n" , B);

else

printf("Максимально (C) - %d\n" , C);

};

15 Решение квадратное уравнение

Задавая вручную различные значения переменных a, b, c нужно проверить работы алгоритма по всем веткам условий ( два варианта ). Уравнение в общем виде имеет вид. Его решение вы можете посмотреть в любом справочнике по математике.

ax2+bx+c=0

Программа для вычисления корней уравнения (Напомню: корни могут быть действительными и комплексными).

float a,b,c;

float c,d,e,f,x1,x2;

scanf ("%5f%5f%5f",&a,&b,&c);

// Промежуточные вычисления

z=2.0f*a;

e=-b/z;

d=b*b-4*a*c; // детерминант

f=sqrt(fabs(d))/z;

// Проверка корней

if(d>=0)

{

x1=e+f;

x2=e-f;

printf("Корни уравнения действительные\n");

printf("\n x1= %4.1f",x1);

printf("\n x2= %4.1f\n",x2);

};

else

{

printf("Корни уравнения мнимые\n");

printf("\Вешественная часть n e= %4.1f",e);

printf("\nМнимая часть f= %4.1f\n",f); };

16 Использование условного оператора для организации цикла

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

// Организация цикла с помощью if

int j = 1; // индекс для цикла

int Sum = 0; // Переменная для вычисления суммы

Характеристики

Тип файла
Документ
Размер
270,5 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Методические указания к лабораторным работам
ЛР9_ПКШ
ЛР10_ПКШ
ЛР11_ПКШ
ЛР_12_КЛР_ПКШ
ЛР_13_КЛР_ПКШ
ЛР_14_КЛР_ПКШ
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее