Разработка и отладка программ с использованием языка программирования C - Курсовая работа

бесплатно 0
4.5 133
Изучение элементов языка С , программирование разветвлений и циклов с использованием операторов условного и перехода. Обработка одномерных массивов. Поиск максимального элемента массива с заданной размерностью. Листинги программы и результатов.


Аннотация к работе
Для автоматизации алгоритма необходимо составить программу с использованием операторов: условных, циклов, ввода, вывода. Использованы следующие основные блоки: блок пуск-останов, определяющий начало или конец алгоритма (для блока пуск определен только выход, для останов - только вход); блок ввод-вывод, определяющий ввод информации в программу или вывод информации (допускает любое количество входов, но один выход); блок решение, определяющий последующие шаги выполнения алгоритма в зависимости от выполнения условия (допускает любое количество входов, но только два выхода - да ( ) и нет (-)); Традиционно метод решения задачи по работе с одномерным массивом сводится к выполнению трех основных этапов: ввод-вывод массива, обработка массива, вывод результата обработки массива.В процессе выполнения каждого этапа: - сформулирована развернутая постановка задачи и сформирована словесная / словесно-формульное представление алгоритма; разработана структура, укрупненный алгоритм решения задачи представлен в виде блок-схемы;#include «stdafx.

Введение
В начале 80-х годов в фирме Bell Telephone Laboratories Бьерном Страуструпом (США) в результате дополнения и расширения языка С был создан язык, получивший название «С с классами». В 1983 г. Это название было изменено на С . В 1998 г. Был утвержден окончательный стандарт языка С .

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

Целью данной курсовой работы по дисциплине «Основы программирования и алгоритмические языки» является практическое закрепление теоретической части курса и приобретение навыков алгоритмизации и программирования с помощью современного языка программирования C , а также возможностей интегрированной среды разработки Visual Studio 2012.

Выполнение данной курсовой работы позволяет приобрести следующие практические умения и навыки: - выбор и использование математических методов решения задач;

- формализация задач;

- алгоритмизация задач;

- разработка и отладка программ с использованием языка программирования C# средствами Visual Studio 2012;

- проведение анализа результатов компьютерных экспериментов;

- оформление программной документации в соответствии с ГОСТ и ЕСКД.

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

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

Формульно-словесное представление алгоритма описано в табл. 1.1. Значение параметра b задается самостоятельно при вводе. В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1-9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу с использованием операторов: условных, циклов, ввода, вывода.

Таблица 1.1 - Развернутая постановка задачи

Определить Входные данные Выходные данные

Определить: k - количество y 5.- 5 dx = 0.4x, y, z, k, s

1.2 Анализ существующих методов решения задачи

Метод решения задачи однозначно задан набором формул (1.1) и предполагает составление циклического алгоритма: в цикле изменяется x, по формулам определяются y и z, а затем с учетом заданных условий вычисляются показатели k и s. Диапазон заданных значений и шаг изменения задают вещественный тип данных для x. Набор формул (1.1) задают вещественный тип данных для y и z. Счетчик k целого типа. s - вещественная сумма значений y. Наличие показательных и логарифмических функций предполагает составление логических и арифметических выражений, а также использование соответствующих операторов.

1.3 Блок-схема решения задачи

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

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

Блоки на схеме соединены стрелками (линиями связи), которые определяют последовательность выполнения операций. Использованы следующие основные блоки: блок пуск-останов, определяющий начало или конец алгоритма (для блока пуск определен только выход, для останов - только вход);

блок ввод-вывод, определяющий ввод информации в программу или вывод информации (допускает любое количество входов, но один выход);

блок процесс, определяющий изменение значения, формы представления или расположения данных (допускает любое количество входов, но один выход);

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

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

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

1.4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек: #include

#include

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы и их инициализирующие значения double x, dx = 0.4; - входные данные double x = -5, MAX(x) = 15; - граничные значения double z, y; - выходные данные int k = 0; double z, y, s = 1; - выходные данные-показатели

Опишем методы программы №1: - cin - функция ввода;

- cout - функция вывода;

- log(), abs(), exp(), pow() - стандартные математические функции.

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

1.5 Листинги программы и результатов. Анализ результатов

В результате работы программы на экран были выведены посчитанные значения y, z для каждого x и определены параметры k и y.

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

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

Словесное представление алгоритма (1): найти максимальный элемент массива A размерностью 25. Словесное представление алгоритма (2): найти среднее арифметическое элементов массива В (30). В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1-9], рассмотреть примеры. Для автоматизации алгоритмов необходимо составить программу, в которой предусмотреть ввод и вывод исходных массивов, а также вывод результата. Значения элементов исходных массивов необходимо задать произвольно.

2.2 Анализ существующих методов решения задачи

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

2.3

Блок-схема решения задачи

На рис. 2.1 показана блок-схема, которая графически изображает логическую структуру алгоритмов (1) и (2). На основе представления алгоритмов в виде указанной блок-схемы составим их представление в виде программы.

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

2.4

Краткое описание программы

В начале программы выполнено подключение стандартных библиотек: #include

#include

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы №2 и их инициализирующие значения: int *a = new int [25]; int *b = new int [30]; входные массивы, объявленные и динамически размещенные в памяти с помощью операции new double max = a[0] максимальный элемент последовательности А double summa = 0 сумма элементов последовательности Б

Опишем методы программы №2: - cin - функция ввода;

- cout - функция вывода;

rand() - генератор случайных чисел.

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

2.5 Листинги программы и результатов. Анализ результатов

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

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

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

Словесное представление алгоритма: дана матрица действительных чисел размером 4х8. Определить числа b1, b2, b3, b4, равные соответственно: значениям средних арифметических элементов строк; разностям наибольших и наименьших значений элементов строк; наибольшим значениям элементов столбцов. В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1-9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу, в которой предусмотреть ввод и вывод исходного массива, а также вывод результатов обработки массива. Значение элементов входного массива необходимо задать самостоятельно в виде набора действительных чисел.

3.2 Анализ существующих методов решения задачи

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

3.3

Блок-схема решения задачи

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

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

3.4

Краткое описание программы

В начале программы выполнено подключение стандартных библиотек: #include

#include

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы №3 и их инициализирующие значения: const int n = 4, m = 8; - константные размеры массива double a[n] [m]; - массив double summa = 0; - среднее арифметическое строк double min = a[i] [0], max = a[i] [0]; - наибольшее и наименьшее значение элементов строк, столбцов

Опишем методы программы №3: - cin - функция ввода;

- cout - функция вывода;

rand() - генератор случайных чисел.

Основной конструкцией являются вложенные циклы обработки вида: for (int i = 0; i < n; i )

{ for (int j = 0; j <m; j )

{

\\

}

}

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

4. Составление программ с использованием функций при обработке одномерных массивов

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

Словесное представление алгоритма: Найти для каждого массива количество элементов, значение которых меньше среднего между минимальным элементом и максимальным. Массивы размерности 18, 12 и 10 соответственно и строятся из элементов по следующим формулам: b[i]=2.8 - (i 4.5) c[i]=-12.6 (i-2.2) (4.1) z[i]=-9.1 - (i 5.7)

В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1-9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу, в которой для выполнения всех расчетов использовать несколько функций, каждая из которых выполняет отдельную задачу: ввод данных, вывод результатов, нахождение промежуточных и конечных результатов. Необходимо обосновать декомпозицию программы на функции.

4.2 Анализ существующих методов решения задачи

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

Декомпозируем задачу на подзадачи: - формирование массива с учетом формулы вида (4.1);

- вывод массива;

- поиск максимума и минимума в массиве.

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

4.3 Блок-схема решения задачи

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

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

4.4

Краткое описание программы

В начале программы выполнено подключение стандартных библиотек: #include

#include

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы №4 и их инициализирующие значения: const int n1 = 18, n2 = 12, n3 = 10; - размеры массивов double b[n1], c[n2], z[n3]; - массивы

Опишем методы программы №4, уточнив параметры для вызова пользовательских методов: - double SEARCHMAX (double a[], int n) - функция, выполняющая поиск максимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

- double SEARCHMIN (double a[], int n) - функция, выполняющая поиск минимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

- int Count (double a[], int n, double max, double min) - функция поиска для массива а количества элементов, значения которых меньше среднего между минимальным элементом и максимальным.

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

5. Составление программ с использованием функций при обработке матриц

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

Словесное представление алгоритма: Заданы массивы F (8), G (11), H (14). Для каждого из массивов найти произведение ненулевых элементов, если количество положительных элементов больше половины и сумму отрицательных элементов, в противном случае. Элементы массивов определяются по формулам: Элементы массивов необходимо определить по формулам: Fi = 1,4i tg (i - 5,5);

Gj = 8,5j tg (j 3,9);

Hk = 2,9k - tg (k 1,7). (5.1)

В соответствии с методическими указаниями необходимо изучить теоретический материал приложений, литературных источников [1-9], рассмотреть пример. Для автоматизации алгоритма необходимо составить программу, в которой использована подпрограмма-функция для формирования и обработки массивов. Массивы необходимо описать в основной программе. Формирование, вывод и обработку массивов необходимо выполнить в подпрограмме при вызове ее из главной программы.

5.2 Анализ существующих методов решения задачи

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

Вынесем в программу описание данных и вызов подпрограммы. Детализируем подзадачи подпрограммы: - поиск максимума в массиве;

- поиск минимума в массиве;

- поиск суммы отрицательных элементов;

- поиск произведения ненулевых элементов;

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

5.3 Блок-схема решения задачи

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

Рисунок 5.1 - Укрупненная блок-схема алгоритма

5.4 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек: #include

#include

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы №5 и их инициализирующие значения:

const int n1 = 8, n2 = 11, n3 = 14; - размеры массивов double f[n1], g[n2], h[n3]; - массивы

Опишем методы программы №5, уточнив параметры для вызова пользовательского метода: - double SEARCHMAX (double a[], int n) - функция, выполняющая поиск максимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

- double SEARCHMIN (double a[], int n) - функция, выполняющая поиск минимального значения массива a и возвращающая это значение. Вызов функции выполняется трижды.

- double Calc (double a[], int n) - функция поиска произведения ненулевых элементов, если количество положительных элементов больше половины и сумму отрицательных элементов, в противном случае.

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

6. Составление программ для вывода графических изображений

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

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

6.2 Анализ существующих методов решения задачи

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

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

6.3 Краткое описание программы

В начале программы выполнено подключение стандартных библиотек: #include «stdafx.h»

#include

Основной метод int _tmain (int argc, _TCHAR* argv[]) является точкой входа в программу.

Опишем данные программы №6 и их инициализирующие значения: #define Red RGB (255,0,0) #define Blue RGB (0,0,255) - цвета static HWND HWND; - дескриптор окна

HPEN HPEN; - кисть

HDC DRAWHDC - контекст устройства

Опишем методы программы №6, уточнив параметры для вызова пользовательского метода: void Paint (int NLEFTRECT, int NTOPRECT, int NRIGHTRECT, int NBOTTOMRECT) - функция рисования графических примитивов. int Draw_Ellipce (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DRAWHDC=0) - функция рисования эллипса. int Draw_Rect (HWND Wnd, int x1, int y1, int x2, int y2, int Pen, HDC DRAWHDC = 0) - функция рисования прямоугольника.

HWND GETCONSOLEWNDHANDLE(void) - функция получения дескриптора окна.

Вывод
Выполнение данной курсовой работы в соответствии с индивидуальными заданиями распределено на 6 этапов. В процессе выполнения каждого этапа: - сформулирована развернутая постановка задачи и сформирована словесная / словесно-формульное представление алгоритма;

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

- сделан анализ и выбран метод решения задачи по классической теории алгоритмов;

- разработана программа, реализующая решение задачи;

- получены и проанализированы результаты решения задачи;

- оформлено описание решения задачи.

Список литературы
Биллиг В.А. Основы программирования на C#. - М.: Изд-во «Интернет-университет информационных технологий - ИНТУИТ.ру», 2006. - 488 c.

Ватсон К. C#. - М.: Лори, 2004. - 880 с.

Вирт Н. Алгоритмы и структуры данных. - Спб: Невский диалект, 2001 г. - 352 с.

Либерти Д. Программирование на C#. - СПБ.: Символ-Плюс, 2003. - 688 с.

Прайс Д., Гандэрлой М. Visual C#.NET. Полное руководство. - Киев: «Век», 2004. - 960 с.

Робинсон С., Корнес О., Глинн Дж. и др. C# для профессионалов. В двух томах. - М.: Лори, 2003. - 512 с.

Смайли Д. Учимся программировать на C# вместе с Джоном Смайли. - Киев: «ДИАСОФТ», 2003. - 528 с.

Тай Т., Лэм Х.К. Платформа.NET. Основы. - СПБ.: Символ-Плюс, 2003. - 336 с.

Шилдт Г. Полный справочник по C#. - М.: Издательский дом «Вильямс», 2004. - 752 с.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?