Варианты к заданию 3

1.  Вводится номер месяца. Выводится название время года своим цветом (лето – зеленным, осень – желтым, зима – белым, весна – красным). Если месяца с таким номером нет, выводится сообщение об ошибке в центре экрана белыми символами на красном фоне.

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

3.  Вводится номер месяца и год. Выводится количество дней в месяце.

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

5.  Вводится номер дня недели. Выводится расписание уроков на этот день.

6.  Вводится номер дня недели. Выводится название дня недели и слово: “выходной”/“рабочий”. Использовать 2 конструкции CASE.

7.  Вводится номер месяца. Выводится название месяца. Цвет устанавливается по времени года.

8.  Вводится символ. Выдается расшифровка: буква, знак препинания, цифра, пробел, другой символ.

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

10.  Преобразовать строчную русскую букву в прописную.

11.  Выводится список операторов. Вводится номер оператора. Выводится описание оператора.

12.  Вычислить значение дискретной функции Y=f(x):

X

-3

-2

-1

0

1

2

3

4

5

6

7

8

Y

5

5

3

5

5

5

5

3

7

7

3

7

1.  Вычислить значение дискретной функции Y=f(x):

НЕ нашли? Не то? Что вы ищете?

X

-10

-9

-8

-7

-6

-5

-4

-3

-2

-1

0

1

Y

X2

X2

-X

X2

-X

2x

X2

X2

X2

X2

2x

2x

1.  Вычислить значение дискретной функции Y=f(x):

X

13

14

15

16

17

18

19

20

21

22

23

24

Y

0

1

-1

0

0

-1

-1

1

0

1

1

1

1.  Выводится меню: New, Open, Save, Save as, Print, Exit. Выводится описание действий при выборе номера пункта.

2.  Выводится меню: Cut, Copy, Paste, Del, Print, Exit. Выводится описание действий при выборе номера пункта.

3.  Вводится время суток. Выводится соответствующий текст: сон, подъем, завтрак, обед, ужин, занятия, отдых.

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

5.  Вводится число месяца. Выводится название дня недели. (по вариантам – смотри календарь).

6.  Вводится количество точек. Выводится название фигуры (точка, отрезок, треугольник, N-угольник) или ошибка.

Содержание отчета

Отчет должен содержать:

Тексты заданий (по вариантам);

Тексты программ с комментариями;

Протоколы работы программ;

Выводы по работе.

Контрольные вопросы

Какие операторы ветвления вы знаете?

Запишите конструкцию условного оператора, в котором присутствует только ветвь для невыполнения условия.

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

К какому из нескольких слов if относится слово else?

Как уменьшить количество проверок условий при вычислении значения функции на всей числовой оси?

Чем отличаются конструкции IF и SWITCH? В каких случаях применение этих конструкций недопустимо или нежелательно?

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

Как записать последовательность операторов для вычисления следующей функции:

Запишите известные вам логические операции и укажите их приоритет.

Как записываются операции сравнения?

Нарисуйте схему алгоритма для определенного фрагмента программы.

Литература

1.  . С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2002. – 464с.

2.  , . С/С++. Структурное программирование: практикум. – СПб.: Питер, 2002. – 240с.

3.  Митницкий теории алгоритмов и язык программирования С. Учебное пособие. –М.: МФТИ, 2001. – 180с.

4.  Могилев А. В. и др. Информатика. М.: Изд. центр “Академия”, 2000. – 816 с.

5.  Толковый словарь стандарта языка Си. СПб.: Питер, 1994.

6.  Подбельский С++: Учебное пособие. – М.: Финансы и статистика, 2002 – 560с.

7.  , Фомин на языке Си. – М.: Финансы и статистика, 2002 – 600с.

8.  Алексеев техника и программирование. Практикум по программированию: Практ. пособие. - М.: Высшая школа, 1991. – 400с.

9.  Информатика. Базовый курс. / и др. – СПб.: Питер, 2000. – 640с.

Лабораторная работа № 4

Циклические программы

Цели работы:

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

Получение навыков по отладке и тестированию программ.

Краткие теоретические сведения

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

Цикл с предусловием while

Цикл с предусловием реализует структурную схему, приведенную на рис. 1 и имеет вид:

while (выражение) оператор;

Здесь:

·  Выражение – это любое условие, содержащее поверку на равенство или неравенство, а также любое выражение, имеющее тип «число» или «указатель». Если число или указатель отличны от нуля, условие выполняется, а, следовательно, и операторы в цикле тоже.

·  Оператор – это простой (один) или составной (несколько операторов), вызовов функций. Составной оператор заключается в фигурные скобки.

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


Рис. 1. Рис. 2

Пример 1. Программа печатает таблицу значений функции y= x2 +1 в веденном диапазоне:

#include <stdio. h>

void main(){

float Xn, Xk, Dx;

printf (”Введите диапазон и шаг изменения аргумента :”);

scanf(”%f%f%f”, &Xn, &Xk,&Dx);

printf(”| X | Y |\n”); //шапка таблицы

float X=Xn; // установка параметра цикла

while(X<=Xk){ // проверка условия продолжения

// тело цикла

printf(”| %5.2f | %5.2f |\n”, X, X*X+1);

X+=Dx; // модификация параметра

} // конец цикла while

}

Пример 2. Программа находит все делители целого положительного числа:

#include <iostream. h>

main(){

int num;

cout<< “\n Введите число: “; cin>> num;

int half = num/2; //половина числа

int div = 2; //кандидат на делитель

while (div <=half){

if(!(num % div))cout<<div<<”\n;

div++;

}

}

Распространенный прием программирования – организация бесконечного цикла с заголовком while (true) либо while(1) и принудительным выходом из тела цикла по выполнению какого-либо условия

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

...

{...

While(int x=0) /*начинается область действия х*/

{ /* тело цикла */

}

...

}/*конец области действия х*/

...

Цикл с постусловием do... while

Цикл с постусловием реализует структурную схему, приведенную на рис. 2 и имеет вид:

do оператор while (выражение);

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

Пример 3. Программа осуществляет проверку ввода, пока пользователь не нажмет клавишу «у» (Yes).

#include<iostream. h>

main(){

char answer;

do{

cout<< ”\n Купи слоника!”; cin>> answer;

}while(answer!=’y’);

}

Пример 4. Программа вычисляет квадратный корень вещественного аргумента Х с заданной точностью Eps по итерационной формуле:

Yn = Ѕ (Y n-1 +X/Y n-1 ),

Где Y n-1 – предыдущее приближение к корню ( в начале вычислений выбирается произвольно), Yn - последующее приближение. Процесс вычислений прекращается, когда приближения станут отличаться друг от друга по абсолютной величине менее чем на величину заданной точности. Для вычисления абсолютной величины используется стандартная функция fabs(), объявление которой находится в заголовочном файле <math. h>.

#include <stdio. h>

#include<math. h>

main(){

double X, Eps;

double Yp, Y=1;

printf(“Введите аргумент и точность :”);

scanf(“%Lf%Lf”, & X,& Eps);

do{

Yp=Y;

Y=(Yp+X/Yp)/2;

}while(fabs(Y-Yp)>=Eps);

printf(“\nКорень из %lf равен %lf”,X, Y);

}

Циклы while и do...while очень похожи и в большинстве случаев один из них может быть заменен на другой без изменения тела цикла. Один проход таких циклов называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять ещё раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

Рассмотрим еще несколько примеров для работы с клавиатурой:

// очистка буфера клавиатуры

While (kbhit()) getch();

// выполнять цикл, пока не нажата любая клавиша

Do { … } while (!kbhit());

// На каждом проходе ожидается нажатие клавиши, код которой записывается в с.

// цикл прекращается при нажатии клавиши <ESC> (код 27)

While ((c=getch())!=27) { … }

// То же самое. Знак неравенства заменен на минус,

// так как если коды не равны, их разница отлична от нуля и условие истинно

While ((c=getch())-27) { … }

Цикл с параметром

В языке Си цикл с параметром (параметрами) по сути, является циклом с предусловием. На самом деле, и условие, и параметры могут отсутствовать.

Формат оператора:

for (инициализация; выражение; модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемых в цикле. В этой части можно записать несколько операций присваивания через запятую, либо функции ввода параметров. Эта часть выполняется только один раз и эквивалентна начальным установкам для цикла while или do...while.

Выражение определяет условие выполнения цикла. Цикл с параметром реализован как цикл с предусловием.

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

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

Бесконечный цикл реализуется следующим способом:

for(;;) { тело цикла };

Пример:

Рассмотрим копирование десяти элементов одного массива в другой:

for (int i=0; i<10; i++) q[i]=p[i];

Это эквивалентно

int i = 0;

while (i<10) {

q[i] = p[i];

i++;

}

но более удобочитаемо, поскольку вся информация, управляющая

циклом, локализована. При применении операции ++ к целой

переменной к ней просто добавляется единица. В цикле одновременно может изменяться несколько параметров по разным законам, например:

for (i=-3, x=1.57, scanf(”%d”, &k); i<10 && k+i<100; i=i++, k=2*i-5, x=cos(x)) { ... }

Здесь переменные i и x получают начальные значения присваиванием, а k – вводом с клавиатуры. Пример выглядит экзотически с точки зрения логики, но такие конструкции имеют право на существование.

Таким образом, оператор for в языке Си является наиболее универсальным оператором цикла. Отличие цикла for от других видов циклов состоит в том, что, как правило, в заголовке выполняются какие-либо действия на каждом проходе цикла, а в других циклах подобные действия выполняются чаще в теле цикла. (На самом деле в заголовке цикла while тоже можно выполнять операции). Разница в логике работы проявляется при использовании оператора continue.

Операторы break и continue

Операторы break вызывает прерывание выполнения любого цикла (for, while, do...while) и переход на первый оператор после цикла. Фактически он может быть заменен на оператор перехода goto, если метка стоит после цикла. Но в случае вложенных друг в друга циклах с помощью оператора перехода можно выйти сразу из всех циклов, перескочив через уровни вложенности с помощью метки, а с помощью break – только из того, внутри которого записан оператор break.

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

Операторы break и continue имеет смысл применять только после проверки какого-либо условия.

Задания для подготовки к работе

Изучить:

-  организацию итерационных циклов и циклов с параметрами;

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

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

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

Задания к работе

1.  Составить программу для вычисления корня уравнения методом итераций. Вывести имена переменных и условия в окно Watch и выполнить программу по шагам. Заполнить таблицу трассировки.

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

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

Шаг

отрезков

интеграл

абс. погр

отн. погр., %

1

10

2.25235

1,14

53.00

2

20

3.17334

0,65

19%

3

40

...

...

...

4. Составить программу согласно варианта

Варианты уравнений к заданию 1.

Вариант

Уравнение

Отрезок

Точность

1

ex – e-x – 2 = 0

[0; 1]

10-3

2

[2; 3]

10-3

3

x – 2 + sin (1 / x) = 0

[1.2; 2]

10-4

4

1 – x + sin x – ln (1 + x) = 0

[0; 1.5]

10-5

5

x2 – ln (1 + x) – 3 = 0

[2; 3]

10-4

6

[0; 0.85]

0.5·10-4

7

ln x – x + 1,8 = 0

[2; 3]

0.5·10-4

8

0,1x2 – x ln x = 0

[1; 2]

0.5·10-3

9

x + cos (x0,52 + 2) = 0

[0.5; 1]

10-3

10

[0; 1]

10-3

11

x2 +10x – 10 = 0

[0; 1]

10-5

12

3x – 4 ln x – 5 = 0

[2; 4]

0.5·10-3

13

[2; 3]

10-3

14

[2; 3]

0.5·10-3

15

2x – 3 ln x – 3 = 0

[2; 3]

10-3

Приложение 2. Варианты рядов к заданию 2.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10