Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Методические указания по выполнению заданий




Программирование алгоритмических структур

на ЯВУ C#

 

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

на ____листах

 

 

Студент(ка) группы (роспись) Фамилия И. О.

№ зач. кн. _________

 

Руководитель Фамилия И. О.

Самара

200_ г.

 

Рис. 10. Образец оформления титульного листа

Пример выполнения задачи 1. Вычислить значение переменных y и p, используя значения входных данных и расчетные формулы:

,

где а = 0.59, z = -4.8, x = 2.1

Расчетные функции y и p опишем как переменные. Величины a, z, x можно описать в программе как константы, так как их значения заранее определены условием задачи. Если же описать их как переменные, то нужные значения указываются при вводе.

Теперь составим блок-схему алгоритма (рис. 11) и напишем программу.

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

const double x = 2.1, a = 0.59, z = -4.8;

double y = 0, p = 0;

y = a * Math.Pow(Math.Tan(x * x), 3) +

Math.Sqrt(z * z / (a * a + x * x));

p = Math.Log(a + x * x) + Math.Pow(Math.Sin(z / a), 2);

Console.WriteLine("Результаты");

Console.WriteLine();

Console.Write("y=");

Console.WriteLine(y.ToString());

//формат вывода по умолчанию

Console.WriteLine();

Console.WriteLine("p={0:E}",p);

//экспоненциальный формат вывода переменной

Console.WriteLine();

Console.WriteLine("y={0,5:f} p={1,5:f}", y, p);

//фиксированный формат вывода переменных

Console.WriteLine("Нажми клавишу Enter");

Console.ReadKey();

}

}

}

 

Результаты выполнения задачи1:

Замечания.

1. В программе предусмотрен форматный вывод вещественных переменных y и p, который устанавливает при выводе на печать 5 символов, 2 из которых отведены для дробной части (F).

2. При небольших показателях степени задача возведения в степень решается умножением. Например: х32∙х. При дробных и больших значениях показателя степени вычисление производится по формуле: Ах = ех∙ln(А) или (exp(x*ln(a)).

Пример выполнения задания 2. Вычислить на ПЭВМ значения функции:

 
 
где k=1.2, a=2, b=4, xÎ0…6  

 


Обратим внимание, что функция y не определена в диапазоне a < x < b {(x > a) and (x < b)}. В этой ситуации программа должна обеспечить вывод соответствующего сообщения, например "функция не определена". Таким образом, фактически имеем три диапазона изменения x:

 

функция

sin(x) не определена k·ln(x)

0 2 4 6 x

 

Примем диапазон изменения x от 0 до 6, что позволит протестировать программу по всем трем условиям. Поскольку в задаче три условия, число блоков «решение» в алгоритме должно быть два (на единицу меньше). Блок-схема одного из вариантов алгоритма решения задачи и соответствующая программа будут иметь вид:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double x, y, k = 1.2;

Console.Write("Введите х ");

x = Convert.ToDouble(Console.ReadLine());

/*преобразует вводимое с клавиатуры число в виде строки в вещественный тип данных*/

Console.WriteLine();

if (x <= 2 & x > 0)

{

y = Math.Sin(x);

Console.WriteLine("x={0,3:f} y={1,3:f}", x, y);

}

else

if (x <= 6 & x > 4)

{

y = k * Math.Log(x);

Console.WriteLine("x={0,3:f} y={1,5:f}", x, y);

}

else Console.WriteLine("x={0,3:f} Func No",x);

Console.WriteLine();

Console.WriteLine("Нажми любую клавишу");

Console.ReadKey();

}

}

} Результаты решения задачи 1:

 


 

 

 

 

 
 

 

 


Пример выполнения задания 3. Используя оператор fo to do, вычислить на ПК значения функции , при х=0,5.

Параметром цикла является аргумент n.

При вычислении конечных сумм и произведений искомый результат формируется постепенно. При вычислении суммы сначала вычисляется S1 = S0 + S(n1), во втором повторе цикла эта сумма увеличивается на второе слагаемое и получается S2 = S1 + S(n2), в третьем повторе - на третье слагаемое S3 = S2 + S(n3) и т.д. Здесь S0 - начальное значение суммы и т.к. S1 должна быть равна S(n1), то S0 = 0.

При вычислении произведения сначала вычисляется Р10×P(n1), затем Р2 = Р1×P(n2) и т.д. Здесь Р0 - начальное значение произведения и т.к. Р1 должно быть равно P(n1), то Р0 = 1.

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

Блок-схема алгоритма решения задачи и соответствующая программа будут иметь вид (рис. 13):

 

static void Main(string[] args)

{

double x = 0.5, t = 0, n;

for (n = 1; n <= 10; n++)

t = t + 1/ n; // накопление суммы в теле цикла

t = 5*Math.Pow(x,2) * t;

Console.WriteLine("Сумма членов ряда = {0:#.###}", t);

Console.ReadKey();

}

 

 

Результаты работы программы:

 

 

 


Рис. 13. Блок схема алгоритма задания 3.

 

Пример выполнения задания 4. Используя операторы while… и do… while, вычислить значения функции

, в диапазоне изменения x от 0 до 3 с шагом 0.5.

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

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

Для вычисления y при х£1 будем использовать алгоритмическую структуру "цикл-до", а при вычислении функции в диапазоне 1<x£3 – "цикл-пока".

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

С учетом сказанного, программа, соответствующая представленному алгоритму будет иметь вид:

 

 
 

 

 


 

 

Рис. 14. Блок схема алгоритма задания 4.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double y, x = 0;

Console.WriteLine("_____________________");

do

{

y=Math.Cos(x);

Console.WriteLine(" x = {0,2:f} | y = {1,3:f}", x,y);

Console.WriteLine("_____________________");

x=x+0.5;

}

while (x<=1);

while (x<=3)

{

y=Math.Sin(x);

Console.WriteLine(" x = {0,2:f} | y = {1,3:f}", x,y);

Console.WriteLine("_____________________");

x=x+0.5;

}

Console.ReadKey();

}

}

}

 
 


Результаты работы программы:

 

 

Пример выполнения задания 5.

В массиве из N £ 10 элементов вычислить наибольший элемент массива Х и его номер.

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

 

Рассмотрим вариант, когда одномерный

массив инициализирован заранее, например:

 

static void Main(string[] args)

{

int[] A = new int[10] { -5, 6, -8, 2, 4, 9, -7, 4, 1, 0 };

// одномерный массив А из 10 целых чисел

int Amin; // минимальный элемент

int Imin; // номер минимального элемента

for (int i = 0; i < 10; i++)

Console.WriteLine("A[" + i + "]=" + A[i]);

Console.WriteLine(); // вывод элементов массива

Amin = A[0]; // предположение

Imin = 0;

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

if (A[i] < Amin)

{

Amin = A[i]; // выявление min элемента

Imin = i; // его индекс

}

Console.WriteLine("Минимальный элемент: {0} ", Amin);

Console.WriteLine("Его индекс: {0} ", Imin);

Console.ReadKey();

}

 

Рис. 15. Блок схема алгоритма задания 5

Результаты работы программы:

 
 

 


Для создания оглавления в пояснительной записке с помощью средств текстового редактора необходимо:

I. Организовать дополнительную страницу перед описательной частью выполнения заданий с целью размещения на ней будущего оглавления. Для этого:

– поместить курсор на место вставки оглавления (перед заголовком Выполнение заданий);

– выбрать команду Разрыв … в меню Вставка;

– в диалоговом окне Разрыв установить переключатель Новую страницу и нажать кнопку ОК.

Присвоить заголовку название Оглавление.

II. Аналогично организовать дополнительную страницу для рецензии и присваивается название заголовок Рецензия.

III. Присвоить стили всем заголовкам, которые должны быть в оглавлении. Например,

1. Рецензия (стиль Заголовок 1)

2. Оглавление (стиль Заголовок 1)

3. Выполнение заданий (стиль Заголовок 1)

3.1. Задание 1 (стиль Заголовок 2)

3.2. Задание 2 (стиль Заголовок 2)

3.3. Задание 3 (стиль Заголовок 2)

3.4. Задание 4 (стиль Заголовок 2)

3.4. Задание 5 (стиль Заголовок 2)

4. Выводы по работе (стиль Заголовок 1)

5. Литература (стиль Заголовок 1)

IV. Вставка оглавления:

– установить курсор в место вставки оглавления в начало новой страницы, но после заголовка «Оглавление»;

– активизировать команду Вставка\Ссылка\Оглавление и указатели;

– в диалоговом окне Оглавление и указатели открыть вкладку Оглавление;

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

– наличие флажка Показать номера страниц позволяет для каждого элемента списка отображать номера страниц;

– установка флажка Номера страниц по правому краю даёт возможность выровнять номера страниц по правому полю;

– в поле Уровни задать количество уровней для оглавления (в примере два);

– нажать кнопку ОК.




Поделиться с друзьями:


Дата добавления: 2014-10-17; Просмотров: 427; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.07 сек.