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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    59,06 Кб
  • Опубликовано:
    2014-05-03
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Содержание

Нормативные ссылки

         Введение

         1. Общие требования к курсовой работе

1.1    Темы курсовых работ

1.2    Состав курсовой работы

.3      Пояснительная записка

.4      Коллективные работы

. Краткие методические указания

. Типовой пример

3.1 Формулировка задачи

.2 Спецификации задачи

3.3 Математическая постановка задачи

.4 Описание вычислительных методов

.5 Схема алгоритма. Описание

.6 Текст программы и схема алгоритма

.7 Ручной просчет отладочного варианта

.8 Результаты машинного тестирования программы

. Перечень тем курсовых работ

.1 Задание №1

.2 Задание №2

.3 Дополнительные задания

Список рекомендуемой литературы

Приложение А (обязательное). Титульный лист курсового работы

Приложение Б (обязательное). Форма задания на курсовое проектирование

Приложение В (справочное). Запись алгоритма с помощью схем

Приложение Г (справочное). Правила оформления текстовых документов

Нормативные ссылки

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

ГОСТ Р 7.05-2008 - СИБИД. Библиографическая ссылка. Общие требования и правила составления.

ГОСТ 2.105-95 - ЕСКД. Общие требования к текстовым документам.

ГОСТ 7.9-95 - СИБИД. Реферат и аннотация. Общие требования.

ГОСТ 19.701-80 - ЕСПД. Схемы алгоритмов, программ, данных и систем.

Введение

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

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

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

         1. Общие требования к курсовой работе


         1.1 Темы курсовых работ


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

        

         1.2 Состав курсовой работы


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

В пояснительную записку должны входить:

-    титульный лист (приложение А);

-       задание на курсовое проектирование (приложение Б) с подписью студента и датой выдачи;

-       реферат (объем ПЗ, количество таблиц, рисунков, схем, программ, приложений, краткая характеристика и результаты работы); (по ГОСТ 7.9);

-    содержание;

-    нормативные ссылки;

·   введение;

·   основная часть, включающая:

а) спецификации задачи (входные, выходные данные программ и используемых процедур и функций);

б) математическую постановку задачи;

в) описание методов вычислительной математики, используемых при решении;

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

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

е) описание алгоритмов и программ в соответствии с ЕСПД и нормативными документами;

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

з) результаты машинного тестирования программы;

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

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

-       список использованных источников;

-       подпись, дата.

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

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

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

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

.3 Пояснительная записка

Пояснительная записка должна быть оформлена на листах формата А4, имеющих поля. Все листы следует сброшюровать и пронумеровать.

Текст пояснительной записки набирается в формате WORD с использованием следующих установок:

·   шрифт - Times New Roman;

·   межстрочный интервал - 1,5;

·   размер шрифта - 14 пт.

Поля страницы составляют:

·   левое - 30 мм ;

·   правое - 15 мм ;

·   верхнее - 15 мм;

·   нижнее - 25 мм.

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

Заголовки разделов начинаются с абзацного отступа. Заголовки подразделов набирают с абзаца строчными буквами (кроме первой прописной). Перенос слогов в заголовках не допускается, точка в конце не ставится. Номера разделов обозначают арабскими цифрами без точки в конце. Подразделы нумеруются арабскими цифрами в пределах каждого раздела (например, «2.3»). Пункты нумеруются арабскими цифрами в пределах каждого подраздела (например, «2.3.1»).

Иллюстрации обозначаются словом «Рисунок» и нумеруются последовательно арабскими цифрами.

Размеры знаков для формул: прописные - 5 мм, строчные 2,5 мм, показатели степени и индексы - 2 мм.

Формулы нумеруются арабскими цифрами в пределах раздела. Номер формулы состоит из номера раздела и порядкового номера формулы (например, «(3.5)») и помещается в круглых скобках у правого поля листа на строке самой формулы.

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

Более подробно правила оформления текстовых документов рассматриваются в Приложении Г.

.4 Коллективные работы

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

2. Краткие методические указания

Для задания, указанного преподавателем, необходимо:

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

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

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

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

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

-       ввести программу в компьютер;

-       отладить и протестировать ее.

3. Типовой пример

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

.1      Формулировка задачи

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

.2      Спецификации задачи

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

-    знак числа;

-       последовательность двоичных цифр (0 или 1, 2-ввод числа закончен).

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

-    произведение и количество положительных десятичных чисел;

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

.3 Математическая постановка задачи

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

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

В зависимости от знака числа В накапливается либо в произведении Р, либо в сумме S, что приводит к изменению значения либо М (счетчика положительных чисел), либо N (счетчика отрицательных чисел).

Таблица 1

Характеристика переменных

Имя переменной

Смысл переменной

Назначение переменной

Ограничения

L

Двоичная цифра

Исходная

0 или 1; 2 - ввод числа закончен

R

Код знака числа

Исходная

0 - (+), 1 - (-)

B

Число в десятичной системе счисления

Промежуточный


P

Произведение положительных чисел

Результат


M

Кол-во положительных чисел

Результат


S

Сумма отрицательных чисел

Результат


N

Кол-во отрицательных чисел

Результат



.4 Описание вычислительных методов

Двоичное число представляет собой последовательность, составленную только из цифр 0 и 1. Причем, в отличие от десятичного числа, в котором каждый разряд обозначает степень десятки, в двоичном числе каждый разряд обозначает степень двойки. Так, младший разряд обозначает 20, второй разряд -21, третий - 22 и т. д.

Например, двоичное число 101001 в десятичной системе счисления будет иметь вид: 1*20+ 0*21+ 0*22+1*23+ 0*24+1*25= 41.

Таким образом, если вводить двоичное число в обратном порядке, то перевод его в десятичное число D можно осуществлять по формуле

, (1)

где B[k] - цифра в k-м разряде двоичного числа.

.5 Схема алгоритма. Описание

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

Ветвление осуществляется по коду знака числа. Если число положительное, работает левая ветвь, где переменная Р накапливает произведение положительных чисел и значение М (счетчика положительных чисел) увеличивается на 1. Если число отрицательное, работает правая ветвь, где полученному числу присваивается знак (-), а затем оно прибавляется к сумме предыдущих отрицательных чисел, а значение переменной N (счетчика отрицательных чисел) увеличивается на 1.

Пользователь имеет возможность либо продолжить ввод двоичных чисел - ввести 1, либо прекратить ввод - ввести 0. В последнем случае на печать будут выданы значения Р, М, S, N, и алгоритм завершит свою работу. К указанным в п. 3.3 списку переменных добавлены необходимые дополнительные (табл. 2).

Таблица 2

Характеристика переменных

Имя переменной

Смысл переменной

Назначения переменной

Ограничения

K

Определяет разряд вводимой двоичной цифры

Вспомогательная


А

Признак окончания ввода чисел

Вспомогательная

0 - ввод закончен 1 - нет


.6 Текст программы и схема алгоритма

 System;

namespace ConsoleApplication1

{

class Class1

{void Main()

{// Описание переменных, // Произведение чисел, // Сумма чисел, // Количество отрицательных, // Двоичное число, // Степень двойки, // Цифра двоичного числа, // Количество положительных, // Знак числа;

{

// Присвоение начальных значений= 1; // Начальное значение счетчика произведения= 0; // Начальное значение счетчика суммы= 0; // Количество отрицательных чисел= 0; // Количество положительных чиселbuf; // Объявление врем. переменной// Цикл ввода двоичных чисел

{.WriteLine("Ввод двоичного числа ...");.WriteLine("Введите код знака числа (+) - 0, (-) - 1");= Console.ReadLine(); // Ввод знака числа= Convert.ToInt32(buf);.WriteLine("Ввод: по одной цифре, начиная с последней");= 0; // Обнуление врем. переменной= 1; // Вес первого разряда =1.WriteLine("Введите 0 или 1, если ввод числа закончен, введите 2");

// Повторять, пока L меньше 2// Цикл ввода двоичного числа

{= Console.ReadLine(); // Ввести цифру 0 или 1

L = Convert.ToInt32(buf);(L < 2) // Пpовеpка ввода 2

{= B + L * K; // Суммировать весовой коэффициент= K * 2; // Вычислить вес нового разряда

}

}(L < 2);(R == 0) // Пpовеpка знака числа

{ // Если положительное= P * B; // Вычислить произведение= M + 1; // Увеличить счетчик

}

{ // Если отрицательное= -B; // Изменить знак десятичного числа= S + B; // Вычислить сумму= N + 1; // Увеличить счетчик

}.WriteLine(" Ввод чисел закончен ?"); //Опрос конца ввода чисел.WriteLine(" Введите 0 - Нет, 1 - Да ");

buf = Console.ReadLine();= Convert.ToInt32(buf);

}

while (A != 1);

// Вывод результатов вычислений.WriteLine("Произведение положит. чисел P="+P+" кол-во M=" + M);.WriteLine("Сумма отрицательных чисел S="+S + " кол-во N=" + N);

}

}

}

}

    

                                                                Ввод двоичного числа

                                            _ _ _  _ _     Введите код знака

                                                                (+) - 0, (-) - 1

                                                                Ввод осуществляется по

                                               _  _ _ _    одной цифре, начиная

                                                               с последней

                                                                Введите 0 или 1,

                                               - - - -     если ввод закончен, введите 2

   

                                              

                

                                           

                                               

                                              

                   

                                                                     

                                                

                                                                                                      

                                                                                                    

                                  

                                                                    

                                           

                                                                                     _  _ _ _                                                                           

                                                  

  



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

3.7 Ручной просчет отладочного варианта

программирование алгоритм вычислительный отладочный

Для случая, когда исходная информация содержит следующие двоичные числа: -101, 111.

(2) = -5 (10) 111 (2) =7 (10)

N=1 M=1

S= -5 P=7

.8 Результаты машинного тестирования программы


4. Перечень тем курсовых работ

.1 Задание №1

1. Даны натуральные числа n, k, причем n > 0. Напечатать k десятичных знаков числа 1/n. Вывести эти знаки в виде гистограммы. Программа должна использовать только целые числа.

2. Дано натуральное число N. Определить длину периода 1/n. Период дроби равен периоду в последовательности остатков. Построить график зависимости периода от N.

3. Найти наименьшее значение функции:


и значение аргумента, при котором оно получено, если X изменяется от 0 до 10 с шагом 0,1. Для найденного x подсчитать сумму членов ряда:  Построить график y(x).

1. Реализовать перевод чисел между десятичной, двоичной и восьмеричной системами счисления.

На заданном отрезке изменения X {a, b} с шагом h найти наименьшее и наибольшее значения функции и запомнить значения аргумента, при которых они получены. Приняв последние за новые границы интервала изменения аргумента, вычислить на нем 10 значений y, включая граничные точки. По полученным значениям построить график y(x).

1. Даны взаимно простые натуральные числа p, q ( p < q ). Найти периодическую и непериодическую части десятичной дроби, равной p/q. Вывести эти части на графики в виде гистограмм.

2. Получить все четырехзначные натуральные числа, в записи которых нет двух одинаковых цифр. Вывести их в виде гистограммы.

3. Дано натуральное k. Вставить между некоторыми цифрами, записанными в таком порядке: (1, 2, 3, 4, 5, 6, 7, 8, 9), знак (+ ) или (-) так, чтобы значением получившегося выражения было число k. Напpимеp, если k=122, то подойдет следующая расстановка: 12+34-5-6+78+9.

4. Даны k значений натуральных чисел n. Найти все различные цифры, входящие в запись чисел n и их количество. Найти число с наибольшим и наименьшим количеством различных цифр. Построить гистограмму зависимости количества различных цифр в записи числа от его порядкового номера.

5. На заданном отрезке изменения X {a, b} с шагом h найти наибольшее и наименьшее значения функции:

.

Построить на данном отрезке график y(x). Значение многочлена вычислять, используя схему Горнера.

1. Напечатать все перестановки из 0 и 1 на n позиций. Отсортировать их как десятичные числа по убыванию. Вывести полученные числа на график в виде гистограммы.

2. Ввести натуральное n, значение которого записано с помощью 0 и 1. Сдвинуть на k-позиций по кольцу запись числа n (n = 1001, k = 2, n = 0110). Не использовать специальных операций.

3. Даны k (k > 1) натуральных n. Выбросить из записи числа n цифры 0 и 2, оставив прежним порядок остальных цифр.

Пример: 590125012 -> 59151.

4. На заданном отрезке изменения X {a, b} с шагом h подсчитать значения:

,

построить график S(X) и найти значения X, при которых S принимает наименьшее и наибольшее значения. Для этих значений вычислить:

 .

1. Даны k (k>1) натуральных x. Расположить цифры в числах так, чтобы в начале стояла максимальная цифpа, а в конце - наименьшая. Массивы не использовать. Пример: 3829 -> 9382.

2. "Вечный календарь". По дате 23.04.2039 или другой дате XXI века определить день недели. Напечатать календарь на текущий месяц.

3. Получить все перестановки из цифр 1, 2, 3, 4. Отсортировать их как десятичные числа по убыванию.

4. Получить все сочетания из девяти цифр 0, 1, 2, ..,8 по 4 элемента в каждом. Отсортировать их как десятичные числа по убыванию. (В сочетаниях цифры можно использовать несколько раз, сочетания типа 1234 и 4321 считаются одинаковыми).

5. Получить все размещения из 9 элементов 1,2,3,..9 по 3 элемента в каждом. Отсортировать их как десятичные числа по убыванию (В размещениях цифры можно использовать только один раз).

6. На заданном отрезке изменения X {a, b} с шагом h подсчитать значения:

 ,

а также сумму (Q), произведение (Р), количество (М) отрицательных S. Построить график S(X).

1. Даны натуральные числа a, b, c, которые обозначают число, месяц, год. Проверить корректность даты. Напpимеp: дата 30.02.1998 некорректна. Найти номер этого дня с начала года.

2. В процессе голодания вес пациента за 30 дней снизился с m до n кг. Установлено, что ежедневные потери веса пропорциональны весу тела. Вычислить таблицу снижения веса пациентов для различных стартовых весов для k дней после начала голодания.

3. Ввести натуральное n, состоящее из записи цифрами 0,1,2 и 3. На выходе n должно быть таким, что вначале записи идут 0, затем 1,2 и 3. Напpимеp : 200131 -> 001123.

4. Получить все шестизначные “счастливые” номера (0 <= n <=999999 ). («Счастливым» считается номер, у которого сумма первых трех цифр равна сумме последних трех цифр, например: 246813.)

5. На заданном отрезке изменения X {a, b} с шагом изменения h и заданном А вычислить S:

,

а затем У по формуле:


Построить график Y(X) и определить, при каком Х Y имеет минимальное значение.

1. По коэффициентам многочлена x³+ax²+bx+c найти корни уравнения x³+ax²+bx+c=0.

2. Даны k значений целых натуральных n. Определить сколько пар одинаковых соседствующих цифр входит в запись этих чисел. Построить гистограмму зависимости количества пар одинаковых цифр от порядкового номера числа n.

3. Дано натуральное n. Получить сумму тех из чисел вида:

, которые являются утроенными нечетными числами. Вывести все эти числа на график в виде гистограммы.

1. Даны k значений натуральных n. Найти количество и сумму тех n, которые делятся на 5 и не делятся на 7. Вывести эти числа на график в виде гистограммы.

Даны действительные числа a, b ( a << b ). Найти третий член из генерации чисел , который не пpинадлежит отрезку [a, b].

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

2. Напечатать в порядке возрастания корни уравнений:

 ,

вычисленные с заданной точностью  > 0, и вывести их на график в виде гистограммы.

1. Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны треугольника (при определении расстояний учесть, что площадь треугольника вычисляется и через его стороны, и через основание и высоту).

2. Реализовать арифметические операции над двумя комплексными числами (+, -, *, /, возведение в степень одного числа).

3. Найти наименьшее общее кратное четырех заданных натуральных чисел.

По вещественному числу a>0 вычислить величину . Корни  вычислять с точностью  = 0.0001 по следующей итерационной формуле:  (n=0, 1, 2,…), приняв за ответ приближение yn+1, для которого .

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

2. Напечатать все перестановки чисел 1....n, чтобы каждая следующая получалась из предыдущей перестановкой двух соседних чисел. Например, при n=3 следует переставлять:

3.21 → 23.1 → 2.13 → 12.3 →1.32 →3.12.

Точка расположена там, где намечается перестановка.

3. Вывести все разбиения целого положительного числа n на целые положительные слагаемые. Пример: n=4, разбиения 1+1+1+1, 2+1+1, 2+2, 3+1, 4.

4. Даны две функции: y=ax²+bx+c и z=x³+dx²+ex+f. Выяснить, в каких точках их графики пересекают оси OX и OY, а также пересекаются между собой (если пересекаются). Построить оба графика.

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

6. Найти площадь n-угольника по введенным координатам его вершин.

7. Даны k значений натуральных n. Найти количество и произведение тех n, которые делятся на 6 и не делятся на 11. Вывести эти числа на график в виде гистограммы.

8. По первому члену и коэффициенту найти все n членов, их сумму и произведение для арифметической и геометрической прогрессий.

.2 Задание №2

1. Дан неубывающий массив положительных целых чисел a[1]≤a[2]≤…≤a[n]. Найти наименьшее целое положительное число, которое нельзя представить в виде суммы нескольких элементов этого массива (элемент массива должен быть использован один раз).

2. Даны два массива: x[1] ≤… ≤ x[k], y[1] ≤ … ≤ y[l] и число q. Найти сумму вида x[i] + y[j], наиболее близкую к числу q (число действий порядка k + l, дополнительная память - фиксированное число переменных, массивы не изменять).

3. Даны два массива x[1] ≤… ≤ x[k], y[1] ≤ … ≤ y[l]. Найти их «пересечение», т.е. массив z[1] ≤… ≤ z[m], содержащий их общие элементы, причем, кратность каждого элемента в массиве z равняется минимуму из его кратностей в массивах x и y .Число действий должно быть порядка k+ l.

4. Дана матрица размера n*n. Развернуть ее на 90°, 180°, 270°. Сосчитать сумму элементов главной диагонали всех матриц и найти их определители.

5. Массив целых чисел x[1] ... x[n] «свернуть в кольцо» и повернуть вправо на К позиций (К может быть больше n).

6. Реализовать операции с очередью в массиве. Пусть очередь прирастает справа, убывает слева. Длина массива должна соответствовать длине очереди.

7. Даны четыре матрицы размера m*n. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю. Найти определитель новой матрицы.

8. Реализовать операции со стеком в массиве. Количество элементов в стеке должно соответствовать длине массива.

9. В системе координат X, Y заданы координаты вершин выпуклого многоугольника: массив координат X; массив координат Y; число вершин многоугольника и координаты произвольной точки Q, Z. Определить, принадлежит ли точка Q, Z многоугольнику.

10.В (0, 1)-матрице подсчитать число изолированных 0-областей, т.е. областей, состоящих из одних нулей. Отметим, что 0-область может состоять только из одного нулевого элемента. Например, для (0, 1)-матрицы вида А5х5 :

1 0 1 0 0

1 1 1 0

0 0 1 0

0 1 1 0

0 1 1 0 таких областей будет три.

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

12.Доказать, что можно найти самый легкий и самый тяжелый из камней (одновременно), количество которых равно (2*n+1), сделав 3*n взвешиваний. Указание: разбить камни на пары (n пар и один камень) и сравнить камни внутри пар.

13.Массив целых чисел x[1] ... x[n] (n - четное ) «свернуть в кольцо», а затем разбить его на два кольца, содержащих одинаковое число элементов.

14.Используя массивы, реализовать основные операции над множествами:

·   определение принадлежности элемента a множеству S;

·   добавление элемента а в S;

·   удаление элемента а из S;

·   объединение элементов двух множеств.

15.Разработать и запрограммировать нерекурсивный вариант алгоритма быстрой сортировки. [Указание. Для хранения упорядоченных пар (i, j) использовать магазин. Пара, хранящаяся в магазине, означает, что должны быть упорядочены элементы Xi, ..., Xj. Например, первоначально магазин должен был бы содержать пару (1, 8). После того, как значение Х5=5 выбрано в качестве среднего, пара (1, 8) должна быть удалена из магазина, а в магазин должны быть помещены пары (1, 4) и (6, 8). Алгоритм заканчивает работу, когда магазин пуст.]

16.Описать процедуру sort(x), упорядочивающую по неубыванию числа массива x следующим методом: все числа из x упорядочить по последней цифре и перенести во вспомогательный массив y; затем числа из y упорядочить по предпоследней цифре (при равенстве этих цифр сохранять упорядоченность по последней цифре) и записать их снова в массив x; далее числа из x упорядочить по третьей от конца цифре и перенести в массив y и т.д. (Учесть, что в конце концов числа должны оказаться в x).

17.Дан массив. Реализовать сортировку несколькими методами (перестановкой, выбором, вставкой).

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

19.Даны три целые матрицы размером 94. Напечатать ту из них, где больше нулевых строк.

20.type имя = (Алла, … , Юрий, нет);

Предполагая уже описанные функции Отец (х) и Мать (х), значениями которых являются имена соответственно отца и матери человека по имени х или идентификатор нет, если отсутствуют сведения о соответствующем родителе, описать логическую функцию Потомок (а, b).

21.Даны вещественные матрицы A, B и C размером 1020 . Вычислить для каждой из них величину :


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

19.Напечатать все цифры десятичной записи чисел 2500 и 1!+2!+3!+…+100!. (Рекомендация: представить «длинные» натуральные числа в виде массивов из цифр и реализовать нужные операции над ними).

20.Дано n вещественных чисел (n=100). Упорядочить их по неубыванию методом фон Неймана: завести два массива A и B и записать исходные числа в А; упорядочить пары соседних чисел (A1 и А2, А 3 и А 4 и т.д.) и записать их В; взять из В по две соседние упорядоченные пары и, слив их в упорядоченные четверки, снова записать в А; затем каждые две соседние четверки из В слить в упорядоченные восьмерки и перенести в А и т.д.

21.Описать логическую функцию поиск (s, ss, k, n), проверяющую, входит ли подстрока ss в ту часть строки s, которая начинается с k-й позиции, и, если входит, присваивающую параметру n номер позиции, с которой начинается первое вхождение ss в эту часть строки s. Используя данную функцию, заменить в строке x все вхождения подстроки y в подстроку z.

22.Описать функцию изм(x, y, z), которая в том из векторов (одномерных массивов) x, y и z, где больше всего отрицательных элементов (считать, что такой вектор один), все его положительные элементы заменяет: на их кубы, если это вектор x или вектор z, и на их обратные величины, если это вектор y.

23.Заданный вещественный массив из n различных элементов (n=100) упорядочить по возрастанию следующим методом быстрой сортировки: выбрать какой-нибудь (например, средний) элемент массива и переставить элементы массива так, чтобы слева от выбранного элемента оказались только меньшие элементы, а справа - только большие (тем самым выбранный элемент окажется на своем окончательном месте), после чего рекурсивно применить этот же метод к левой и правой частям массива.

24.Дан двумерный массив. Рассматривая его построчно, написать программу, удаляющую дубликаты строк (сделать так, чтобы строки не повторялись).

25.Массив целых чисел x[1] ... x[n] использовать для формирования кольцевого списка и организовать следующие операции обработки списка:

-       создать копию списка;

-       добавить элемент в начало списка;

-       удалить n-й элемент из списка;

-       вставить элемент после n-го элемента списка.

30.Дана последовательность из n*m цифр. Найти среднее арифметическое значение этой последовательности и переставить в ней цифры так, чтобы, разбив эту последовательность на n групп по m элементов, получить среднее арифметическое значение каждой группы, приблизительно (с точностью ) равное среднему арифметическому значению всей последовательности.

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

32.В данном массиве целых чисел найти и вывести все те числа, цифры которых представляют упорядоченную последовательность.

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

34.Входная данная строка символов может содержать целые числа. Выделить их и найти максимальное из них.

35.Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива.

Поменять местами первый и последний элементы стека, а затем развернуть стек, т.е. «дно» стека сделать вершиной, а вершину - «дном».

36.Реализовать стек, используя массив. Количество элементов в стеке должно соответствовать длине массива. Удалить элемент, который находится в середине стека, если нечетное число элементов, а если четное, то два средних. Затем удалить каждый второй элемент стека.

37.Массив целых чисел x[1] ... x[n] «свернуть в кольцо» и упорядочить элементы в списке по возрастанию. Вставить в кольцо три произвольных числа и переупорядочить его по убыванию.

38.«Поле чудес». Программа читает из файла слово и его описание. Игрок пытается угадать слово, вводя буквы. Угаданные буквы открываются. Предусмотреть подсчет очков и возможность участия нескольких игроков (1, 2 или 3).

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

40.Элементами динамического списка являются записи, в которых хранится информация о студентах ФКТАС: имя, фамилия, группа и оценки за последнюю сессию. Обеспечить ввод этих данных и разбить всех студентов в новые списки по группам, элементами которых являются записи с полями: группа, количество студентов в группе, массив с фамилиями студентов (отсортированный по алфавиту), средний балл группы за сессию. Найти лучшую по успеваемости группу.

41.В тексте встречаются различные символы, числа, а также знаки математических операций: +, -, *, /. Прочитать текст слева направо, выделяя из него числа и производя над ними заданные математические операции. (Например, текст оры!№;12ппр+?5пр дает результат 17.)

42.Даны 50 слов различной длины. В тексте эти слова «зашумлены» - т.е. некоторые буквы заменены другими буквами или символами. Обеспечить «распознавание» этих слов по наибольшему соответствию образцам и выдать «чистый» текст.

43.Заданы координаты n городов (А,Б,В,…). По введенным названиям городов, времени отправления и средней скорости поезда вычислить время его прибытия из первого города во второй.

44.Игра «Память». Вывести таблицу 10x10 из символов или букв на несколько секунд для запоминания (предусмотреть изменения количества секунд). Затем закрыть таблицу. При угадывании двух одинаковых ячеек они остаются открытыми. При несовпадении обе ячейки закрываются. Цель игры - открыть все ячейки. Вести учет времени, на основании которого начислять очки.

4.3 Дополнительные задания

1. Разработка БД на языке C#.

2. Классы на языке C#.

4. Программирование сокетов на языке C#.

5. Реализация метода Симпсона на языке C#.

         Примечание. Студент может выбрать любую другую тему, согласовав ее предварительно с преподавателем.

Список рекомендуемой литературы

1. Малыхина М.П., Частикова В.А. Программирование на языке высокого уровня C#. Учебное пособие с грифом УМО. - Краснодар: Изд-во КубГТУ, 2011. - 251 с.

2. Павловская Т.А. C#. Программирование на языке высокого уровня: учебник для вузов. - СПб.: Питер, 2007. - 432 с.

3. Шилдт Г. C# 2.0. Серия «Полное руководство». Пер. с англ. - М.: ЭКОМ Паблишерз, 2007. - 976 с.

4. Фаронов В.В. Создание приложений с помощью C#. Руководство программиста. - М.: Эксмо, 2008. - 576 с.

5. Малыхина М.П. Программирование на языке высокого уровня: учеб. пособие. - СПб.: БХВ-Петербург, 2006.

6. Малыхина М.П., Частикова В.А., Миклашевская Л.Н. Программирование на языке высокого уровня. Методические указания к курсовой работе по дисциплине «Программирование на языке высокого уровня» для студентов всех форм обучения специальности 220400. -Краснодар: Изд. КубГТУ, 2004.

7. Фролов А.В., Фролов Г.В. Язык C#. Самоучитель. - М.: ДИАЛОГ-МИФИ, 2003.

8. Шильд Г. Полный справочник по C#. Пер. с англ. - М.: Вильямс, 2004.

Приложение А

(обязательное)

Титульный лист курсовой работы

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра ___________________________________________________

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине ______________________________________________

на тему ____________________________________________________

Выполнил(а) студент(ка) группы________________________________

____________________________________________________________

(ф.и.о.)

Допущен к защите __________________________________________

Руководитель проекта ________________________________________

Защищен _______________ Оценка ________________________

Члены комиссии _____________________________________________

(подпись, дата, расшифровка подписи)

20__ г.

Приложение Б

(обязательное)

Форма задания на курсовое проектирование

ФГБОУ ВПО

«Кубанский государственный технологический университет»

(КубГТУ)

Кафедра____________________________________________________

Факультет___________________________________________________

Утверждаю.

Зав. кафедрой______________

_________________________

З А Д А Н И Е

на курсовое проектирование

Студенту_______________________ группы_____________ курса___

факультета _________________________________________________

специальности ______________________________________________

___________________________________________________________

(код и наименование специальности)

Тема работы_______________________________________________

___________________________________________________________

Содержание задания__________________________________________

___________________________________________________________

___________________________________________________________

Рекомендуемая литература_____________________________________

___________________________________________________________

___________________________________________________________

Срок выполнения проекта: с "____" ________по "____"_______20___г.

Срок защиты: "____"_______20___г.

Дата выдачи задания: "____"_______20___г.

Руководитель проекта ________________________________________

подпись , ф.и.о., звание, степень

Задание принял студент _______________________________

подпись, дата

Приложение В

(справочное)

Запись алгоритма с помощью схем

Запись алгоритма с помощью схем предполагает изображение с использованием графических символов-блоков, каждый из которых предписывает исполнение определенных действий. Совокупность символов образует схему алгоритма. Графические символы между собой соединяются линиями потока информации. Основное направление потока идет сверху вниз и слева направо. Учитывая это, стрелки на схемах, совпадающие с таким потоком информации, могут не проставляться. Правила выполнения схем алгоритмов регламентирует ГОСТ 19.701-90.

Ниже в таблице 1 приведены изображения наиболее часто употребляемых блоков и даны пояснения к ним.

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

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

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

При выполнении схем алгоритмов необходимо выдерживать минимальное расстояние 3 мм между параллельными линиями потоков и 5 мм между остальными блоками. Вычерчивая блоки, необходимо соблюдать соотношение между высотой b и шириной блока а (b=1,5а, при а=10,15,20,…мм).

Таблица 1В-Графические обозначения символов, применяемые при составлении схем алгоритмов

N п/п

Название символа

Символ

Отображаемая функция

1

Блок вычислений (процесс)

 

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

2

Логический блок (решение)


Выбор направления выполнения алгоритма в зависимости от некоторых условий (условия)

3

   Блоки ввода-вывода


Общее обозначение ввода или вывода данных (вне зависимости от физического носителя)




Вывод данных, носителем которых служит документ (печатающее устройство)

4

Начало-конец (вход-выход)


Начало или конец программы, останов, вход или выход в подпрограммах

5

Предопределенный процесс (подпрограмма)


Вычисления по стандартной подпрограмме или подпрограмме пользователя

6

Блок модификации (заголовок цикла)


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

7

Соединитель


Указание связи между прерванными линиями потока информации в пределах одной страницы

8

Межстраничный соединитель


Указание связи между частями схемы, расположенными на разных листах

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

К основным идеям структурного программирования относятся:

-    отказ от бессистемного использования оператора Goto;

-       структуризация алгоритма;

-       пошаговая детализация.

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

-    алгоритм необходимо составлять поэтапно;

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

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

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

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

В структурном программировании существует несколько базовых управляющих структур:

-    структура следования, где каждое действие выполняется после того, как закончится предыдущее:


-    структура разветвления - выполнение действий, определяемых признаком P. В зависимости от него для передачи информации выбирается либо ветвь «Да», либо ветвь «Нет»:


-       структура повторения реализована как цикл с предусловием: пока условие истинно, тело цикла выполняется; выход из цикла осуществится тогда, когда условие станет ложным:


Если при входе в данную структуру условие ложно, то вход в цикл не происходит и управление передается следующему за ней структурному элементу.

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

В языке C# помимо уже перечисленных структур существует еще ряд других:

-    коррекция, где действия выполняются только в ветви «Да»:


·   вариант - осуществляется выбор ветви по значению некоторой управляющей переменной B, называемой селектором; если В имеет значение 1, то выполнится оператор Оп1, если - 3, то выполнится оператор Оп2, если - 5, то выполнится оператор Оп3, если же В имеет значение, отличное от указанных, то выполнится оператор Оп:


·   цикл с постусловием:


·   цикл с параметром:


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

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

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


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

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

Приложение Г

(справочное)

Правила оформления текстовых документов

Текстовые документы оформляются в соответствии с ГОСТ 2.105. Ниже приведены некоторые выдержки, полезные для оформления курсовых работ.

Для текстовых документов устанавливаются следующие поля:

·   левое - 30 мм ;

·   правое - 15 мм ;

·   верхнее - 15 мм;

·   нижнее - 25 мм.

Отступ абзаца - 15-17 мм.

Главы и разделы оформляются следующим образом:

.Типы (ТИПЫ)

1.1   ----------------

1.2    ----------------

1.2.1 Функции

Перечисления:

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

б) -----------------

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

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

г) -----------------

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

Заголовок пишется с прописной буквы без точки в конце, если он состоит из двух предложений, разделенных точкой. Расстояние между заголовком текста и текстом - 3-4 интервала (15 мм). Расстояние между заголовками раздела и подраздела - 2 интервала (8 мм).

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

Список литературы располагают в конце, его включают в содержание.

Нумерация в документе должна быть сквозная.

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

Нельзя сокращать физические единицы без цифр.

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

Знаки >, <, =, >=, <=, <>, №, %, ВКЛ и другие выделяются шрифтом или кавычками.

Особые сокращения (пояснения) помещают перед терминами в конце текста.

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

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


где m - масса образца, кг;

V - объем, м³.

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

Формулы могут быть либо машинописные, либо рукописные.

Формулы нумеруются сквозной нумерацией:

m= p * v. (1)

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

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

Примечание - ____________

Примечания

__________

__________

Иллюстрации нумеруются сквозной нумерацией, арабскими цифрами (Рисунок 1). Иллюстрации приложений нумеруются отдельно (Рисунок А.2). Допускается также отдельная нумерация в разделах (Рисунок 2.1). Иллюстрации могут сопровождаться пояснительной надписью (Рисунок 1 - Детали прибора).

Приложения располагают в порядке ссылок на них с указанием наверху, посередине страницы:

Приложение А

(обязательное)

Каждое приложение начинается с новой страницы. Оно должно иметь заголовок (в центре, с прописной буквы) отдельной строкой. Приложения обозначаются русскими буквами (кроме Е, З, Й, О, Ч, Ь, Ы, Ъ). Допускается также обозначение латинскими буквами (кроме I, O) и арабскими цифрами (при нехватке букв). Если в документе только одно приложение, оно всегда обозначается

Приложение А

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

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

Таблицы нумеруются сквозной нумерацией (Таблица 1). Допустима нумерация в пределах раздела (Таблица 3.2).

В тексте должны быть ссылки на таблицы. При ссылке следует указывать слово «таблица».

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

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

A

B

A

B






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

Наименование




1 -------------




2 -------------





Обозначения должны быть пояснены в тексте.

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

Интервал в таблице 1.1-1.7 мм.

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

При наличии небольшого цифрового материала его дают текстом, а не таблицей:

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

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

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

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

 

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