Файл: Разработка циклических алгоритмов.pdf

ВУЗ: Не указан

Категория: Задание

Дисциплина: Программирование

Добавлен: 25.10.2018

Просмотров: 2849

Скачиваний: 49

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

Семинар 1. Разработка циклических алгоритмов 
Цель семинара:
 Овладение навыками разработки, кодирования на Си и 

отладки циклических алгоритмов. 

1. 

Задание 

1.  Проработайте (еще раз) примеры  §1.4.4 лекции 1. Попробуйте решить эти 

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

2.  Отладьте программы примеров  §1.4.4 лекции 1, рекомендации по отладке 

даны в разделе 2.  

3.  Выполните свой вариант задания (с Вашим номером по списку группы) из 

раздела 5. Отчет по выполнению задания обязательно должен содержать 
условие задачи, анализ данных (возможно, в виде таблицы «Состав 
данных»), блок-схему, программу. 

4.  Проработайте (еще раз) пример  из §1.5.2 лекции 1. Это задача на обработку 

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

5.  Разберите два примера на обработку одномерных массивов из раздела 3. 

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

6.  Выполните свой вариант задания (с Вашим номером по списку группы) из 

раздела 6. Отчет по выполнению задания обязательно должен содержать 
условие задачи, анализ данных (возможно, в виде таблицы «Состав 
данных»), блок-схему, программу. 

7.  Разберите пример на обработку двумерных массивов – матриц – из 

раздела 4. Попробуйте решить эту задачу самостоятельно, не заглядывая в 
лекцию. Если Ваше решение отличается от приведенного, проанализируйте 
отличия. Как они повлияют на работу программы?  Выполните свой вариант 
задания на матрицы из раздела 7. 

Жду отчетов по индивидуальным заданиям разделов 5, 6, 7. Напоминаю, что 
отчет по выполнению задания обязательно должен содержать условие задачи, 
анализ данных (возможно, в виде таблицы «Состав данных»), блок-схему, 
программу. 


background image

 

 

2

. Краткая инструкция по созданию консольной Си++ программы 

Win32 

в  среде Microsoft Visual Studio 2008 

1.  Создайте проект (последовательно выбрав в меню 

Файл пункт Создать  Проект). 

2.  В области типов проектов (слева) разверните Visual C++ и выберите 

группу Win32 . В окне справа щелкните 
элемент Консольное

 

приложение Win32

3.  Введите имя проекта и папку для него. 

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

4.  В окне мастера приложений Win32 справа нажмите параметры 

приложения. В полученном окне выберите Консольное приложение и 
 Пустой проект и нажмите кнопку Готово

5.  Если окно Обозреватель решений не открыто (обычно справа), 

откройте его, выберав в меню Вид пункт Обозреватель решений

6.  Добавьте новый исходный файл в проект, выполнив следующие 

действия. 

a.  В окне Обозреватель решений щелкните правой кнопкой мыши 

папку Файлы исходного кода и последовательно выберите 
пункты Добавить и Новый элемент

b.  В узле Код выберите элемент Файл C++ (.cpp), введите имя файла 

и нажмите кнопку Добавить

CPP-файл появится в папке "Исходные файлы" в окне Обозреватель 
решений
 и откроется в редакторе Visual Studio. 

7.  В файле, открытом в редакторе, введите допустимый программный код 

на языке C++. 
Пример кода (задача 1.3.4): 

#include

 

<iostream> 

#include

 

<conio.h> 

 

using

 

namespace

 std; 

void

 main() 

 

double

 A,B,p,At,Bt; 

int

 N,i;  

    cout<<

"A, B, p, N\n"

 

cin>>A>>B>>p>>N; 


background image

 

 

At=A; Bt=B; i=1; 

 

while

 (At>=A/2 && i<=N) 

 

 

 

At=At-Bt; 

 

 

Bt=Bt-Bt*p/100; 

 

 

i=i+1; 

 

 

if

 (At<A/2) 

 

 

 

i=i-1; 

 

 

cout<<

"i="

<<i; 

 

 

else 

 

 

cout<<

"Time is over"

<<endl; 

    _getch(); 

     

}

 

8. 

Сохраните файл.

 

9. 

В меню

 Построение 

выберите

 Построить решение

.

 

10. 

В окне

 Выходные данные 

выводятся сведения о ходе компиляции, и 

сообщение о состоянии построения.

 

11. 

В меню

 Отладка 

выберите команду

 Начать отладку

 (или нажмите 

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

 

12. 

Отладьте программу и протестируйте ее с разными исходными данными.

 

13. 

Закройте проект (Файл/ Закрыть проект).

 

14. Открывать существующий проект можно ТОЛЬКО активизацией файла 

проекта с расширением .vcproj через Файл/ Открыть проект или 
щелчком на пиктограмме. 


background image

 

 

3

. Примеры обработки одномерных массивов 

Пример  1.  Дан  массив  а  из  N  элементов  (N

10).  Вычислить 

произведение элементов массива, меньших заданного значения с. 

Таблица 1. Состав данных примера 1. 

Имя 

Смысл 

Тип 

Структура 

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

с 

заданное значение 

веществ. 

простая переменная 

число элементов массива 

целый 

простая переменная 

а 

заданный массив 

веществ. 

одномерный массив 
из 10 элементов 

Выходные данные 

р 

произведение элементов 
массива, удовлетворяющих 
условию 

веществ. 

простая переменная 

Промежуточные данные 

счетчик элементов массива 

целый 

простая переменная 

количество элементов, 
удовлетворяющих условию 

целый 

простая переменная 

Обратите внимание, что структура массива а предполагает отведение под 

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

N

10.  Проверка  корректности  введенного 

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

Блок-схема алгоритма приведена на рис. 1.  
 

 


background image

 

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

k:=k+1 

да 

да 

да 

 

нет 

Ввод с, N,  
a[i], i=0,…,N-1 

p:=1; k:=0 

начало 

i:=0` 

i<N 

a[i]<c 

p:=p*a[i] 

i:=i+1 

k=0 

вывод 

‘нет таких 

элементов’

 

вывод р 

конец