Методические указания к лабораторным работам по дисциплине "Информатика" для студентов специальности 230102



страница2/6
Дата06.07.2013
Размер0.54 Mb.
ТипМетодические указания
1   2   3   4   5   6

Операторы цикла

Язык C++ имеет удобные операторы организации циклов. Общая форма записи операторов цикла такова:

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

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

for (выражение_1; выражение_2; выражение_3) оператор;
Оператор while организует повторение оператора до тех пор пока значение выражения не примет значение false. Истинность выражения проверяется перед входом в цикл. Следовательно, возможна ситуация, когда оператор не выполнится ни разу.

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

Наиболее сложная форма оператора цикла – это оператор for.

Перед вхождением в цикл выполняется выражение_1. Затем проверяется значение выражения_2. Повторение тела цикла происходит до тех пор, пока выражение_2 не примет значение false. Циклически повторяемый участок состоит из оператора и выражение_3. Как выражение_1, так и выражение_3 могут быть любой, в том числе и пустой последовательностью простых операторов, разделяемых операцией запятая.

Задания на лабораторную работу
Задание 1

  1. Проанализировать текст двух программ. Ответить на вопрос:

Что будет напечатано в результате выполнения программ?

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

  1. Как работает оператор switch в двух предложенных программах?

Продемонстрировать работу оператора, выполняя программу по шагам.
Программа 1

#include

main()

{

int i=0X7, j=07, k=7,n;

if (i==j) n=++k;

else

n=k++;

switch(n)

{

case 7:printf("\n Вариант 1");break;

case 8:printf("\n Вариант 2");break;

case 9:printf("\n Вариант 3");break;

default:printf("\n Вариант 4");

}

}
Программа 2

#include

main()

{

int i=0X7,j=07,k=7,n;

if (i==j) n=++k;

else

n=k++;

switch(n)

{

case 7:printf("\n Вариант 1");break;

case 8:printf("\n Вариант 2");

case 9:printf("\n Вариант 3");break;

default:printf("\n Вариант 4");

}

}
Задание 2

  1. Проанализировать текст двух программ. Ответить на вопрос:

Что будет напечатано в результате выполнения программ?

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

3.
Посчитать число итераций цикла с предусловием и цикла с постусловием для каждой программы.
Программа 1

#include

#include

main()

{

int a=5, b=2 k=0, n;

for (n=b;n<=a;n++)

k++;

while (k<4)

{

a=a % b;

k++;

}

do

{

b=b%a;

k--;

}

while (k>4);

printf("%d\n",a);

printf("%d\n",b);

printf("%d\n",k);

}

Программа 2

#include

#include

main()

{

int a=5, b=2 k=0, n;

for (n=b;n<=a;n++)

k++;

while (k<=4)

{

a=a % b;

k++;

}

do

{

b=b%a;

k--;

}

while (k>4);

printf("%d\n",a);

printf("%d\n",b);

printf("%d\n",k);

}

Лабораторная работа № 3
ВЫЧИСЛЕНИЯ С ЗАДАННОЙ ТОЧНОСТЬЮ
Суммы рядов

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

- основание натурального логарифма.

Если вычислить сумму членов ряда для , то получим следующий результат:

n=1, e=2.0000000;

n=2, e=2.5000000;

n=3, e=2.5666667;

n=4, e=2.7083333;

n=5, e=2.7166667;

n=6, e=2.7180556;

n=7, e=2.7182540;

n=8, e=2.7182788;

n=9, e=2.7182815;

n=10, e=2.7182818.
Чем больше членов ряда участвуют в сложении, тем более точным получается искомое значение.

Значение числа =2.718281828…

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

Пример вычисление суммы членов бесконечного ряда

Требуется вычислить сумму членов ряда с заданной точностью :
,

где

– сумма членов ряда;

– номер очередного члена ряда.

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

,

где

- очередной член ряда;

- предыдущий член ряда.

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

Пример реализации алгоритма

#include

#include

#include

main()

{

float x,eps, //аргумент и точность

y=1, //текущее значение члена ряда

sum=1; // сумма членов ряда равна

// значению первого члена ряда

int n=1; //счетчик членов ряда

cout << "\nВводите аргумент: ";

cin >> x;

cout << "\nВводите точность: ";

cin >> eps;

do {

y=-y*pow(x,2)/2/n/(2*n-1);

sum+=y;

n+=1;

}

while (fabs(y) >= eps); /* Ряд знакопеременный, поэтому

сравниваем абсолютное значение члена

ряда с заданной точностью*/

cout << "\nСумма членов ряда: " << sum;

cout << "\nКоличество членов ряда: " << n-1;}

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

  1. Как оптимизировать нахождение текущего члена ряда?

  2. Можно ли получить абсолютно точное решение для суммы членов бесконечного ряда?

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


Задания на лабораторную работу

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

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму ряда с точностью eps:



Вариант 2

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 3

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 4

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 5

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 6

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 7

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 8

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 9

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 10

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 11

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 12

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 13

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 14

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 15

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:



Вариант 16

Вычислить сумму с точностью eps:


Вариант 17

Вычислить сумму с точностью eps:



Вариант 18

Даны действительные числа x, eps (x<>0, eps>0).

Вычислить сумму с точностью eps:


Вариант 19

Вычислить сумму с точностью eps:


Вариант 20

Найти сумму ряда с точностью eps


Вариант 21

Найти сумму ряда с точностью eps


Лабораторная работа № 4
МАССИВЫ
Массив - это расположенные вплотную друг за другом в памяти элементы одного и того же типа.

Каждый массив имеет имя. Доступ к отдельным элементам массива осуществляется по имени массива и индексу (порядковому номеру) элемента.

Основные свойства массива:

  1. все элементы массива имеют один тип;

  2. все элементы в памяти расположены друг за другом; индекс первого элемента равен нулю;

  3. имя массива является указателем константой, равной адресу начала массива (первого байта первого элемента массива).

Признаком массива является наличие квадратных скобок. Константа или константное выражение в квадратных скобках задает число элементов массива.

При описании массива может быть выполнена инициализация.

Доступ к отдельным элементам массива осуществляется либо с помощью индекса, либо операцией *

array[i] эквивалент *(array+i)

Многомерные массивы

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

Многомерные массивы хранятся в памяти в порядке возрастания самого правого индекса (по строкам)

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

Примеры программ с использованием матриц

Пример 1

Соотношения индексов строки и столбца на главной и побочной диагонали квадратной матрицы:


j =n-i-1



а00

а01

а02

а03

а
Обозначения:

i - индекс строки

j - индекс столбца

04

а10

а11

а12

а13

а14

а20

а21

а22

а23

а24

а30

а31

а32

а33

а34

а
i= j
40

а41

а42

а43

а44




j > i

j < i

j > i

j < n-i-1

j < i

j < n-i-1

1)

2)

3)

4)

Ниже приведены фрагменты программ вычисления суммы элементов выделенной части матрицы.

1)

s=0;

for (i = 0; i < n; i++)

for (j = i ; j < n; j++)

s += a [i] [j];


2)

s=0;

for (j = 0; j< n; j++)

for (i= j ; i < n; i++)

s += a [i] [j];

3)

s=0;

for (i = 0; i < n/2; i++)

for (j = i ; j < n-i -1 ; j++)

s += a [i] [j];


4)

s=0;

for (j = 0; j < n/2; j++)

for (i= j ; i < n-i -1; i++)

s += a [i] [j];


Пример 2

Дана матрица а.

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

Ниже представлена схема формирования элемента b22.

а00

а01

а02

а03

а04




b00

b01

b02

b03

b04

а10

а11

а12

а13

а14




b10

b11

b12

b13

b14

а20

а21

а22

а23

а24




b20

b21

b22

b23

b24

а30

а31

а32

а33

а34




b30

b31

b32

b33

b34

а40

а41

а42

а43

а44




b40

b41

b42

b43

b44

Фрагмент программы, реализующий заданный алгоритм формирования элементов матрицы b


i - индекс строки матрицы а

j - индекс столбца матрицы а
k - индекс строки матрицы b

l - индекс столбца матрицы b

for (k = 0; k < n; k++)

for (l = 0 ; l< n; l++)

{

b[k][l]=0;

for (i = 0; i < k; i++)

for (j = l ; j < n; j++)

b[k][l]=+= a [i] [j];

}

Пример 3

Сортировка строк матрицы

Строки в данном примере сортируются по невозрастанию характеристик строк. Характеристикой строки считается сумма элементов строки.

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

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

Исходный код программы находится на диске U:, в разделе методических материалов по информатике в папке "Примеры".
Для управления цветом выводимой информации используйте функции управления экраном, объявленные в заголовочном файле conio.h, textcolor и cprintf.
Пример вывода на экран заданным цветом переменной i.

#include

int main(void)

{

int i;

for (i=0; i<15; i++)

{

textcolor(i);

cprintf("Color=%d \r\n" , i);

}

return 0;

}

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

  1. Чем отличается одномерный массив от многомерного?

  2. Какие способы доступа к элементам массива вы знаете?

  3. Какое соотношение индексов строки и столбца на главной диагонали квадратной матрицы?

  4. Какое соотношение индексов строки и столбца на побочной диагонали квадратной матрицы?

  5. Сколько проходов необходимо сделать при использовании метода "пузырька", для того, чтобы неупорядоченный массив был полностью упорядочен?


Задания на лабораторную работу
Вариант 1

Дана целочисленная квадратная матрица.

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

Вариант 2

Дана целочисленная квадратная матрица.

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

Вариант 3

Дана целочисленная квадратная матрица.

Определить произведение элементов в тех строках, которые не содержат отрицательных элементов. При выводе на экран матрицы выделить эти строки другим цветом.
Вариант 4

Дана целочисленная квадратная матрица.

Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. При выводе на экран матрицы выделить элементы этих диагоналей другим цветом.
Вариант 5

Дана целочисленная квадратная матрица.

Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. При выводе на экран матрицы выделить элементы этих диагоналей другим цветом.

Вариант 6

Дана целочисленная квадратная матрица.

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

Вариант 7

Дана целочисленная квадратная матрица.

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

Вариант 8

Дана целочисленная квадратная матрица.

Найти максимальный элемент выделенной части матрицы. При выводе на экран матрицы выделить этот элемент другим цветом.



Вариант 9

Дана целочисленная квадратная матрица.

Найти минимальный элемент выделенной части матрицы. При выводе на экран матрицы выделить этот элемент другим цветом.



Вариант 10

Дана целочисленная квадратная матрица.

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


Вариант 11

Дана целочисленная квадратная матрица.

Найти сумму элементов выделенной части матрицы. При выводе на экран матрицы выделить эту часть матрицы другим цветом.



Вариант 12

Дана целочисленная квадратная матрица.

Найти сумму элементов выделенной части матрицы. При выводе на экран матрицы выделить эту часть матрицы другим цветом.



Вариант 13

Дана целочисленная квадратная матрица.

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


Вариант 14

Дана целочисленная прямоугольная матрица а.

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

Вариант 15

Дана целочисленная прямоугольная матрица а.

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

Вариант 16

Дана целочисленная прямоугольная матрица а.

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

Вариант 17

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

Вариант 18

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

Вариант 19

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

Вариант 20

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

Вариант 21

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

Лабораторная работа № 5
ФУНКЦИИ И ПЕРЕДАЧА ПАРАМЕТРОВ
С увеличением объема программы возрастает сложность ее отладки, сопровождения и модификации. Естественным способом борьбы со сложностью любой задачи является ее разбиение на части. В С++ задача может быть разделена на более простые с помощью функций. Использование функций в программе ведет к улучшению ее структуры:

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

  • упрощается процесс отладки;

  • часто используемые функции можно помещать в библиотеки.

Параметры функции

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

Формальные параметры - параметры, перечисленные в заголовке функции.

Фактические параметры - параметры, записанные в операторе вызова функции.

Способы передачи параметров

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

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


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

Методы решения нелинейных уравнений

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

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

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

Приближенное решение нелинейного уравнения , где определена и непрерывна для всех состоит из двух этапов:

  1. отделение корней, то есть установление интервала, в котором содержится один и только один корень ;

  2. уточнение приближенных корней, то есть доведение до заданной степени точности.

Для отделения корней можно использовать графический метод.

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

1   2   3   4   5   6

Похожие:

Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам по дисциплине «Моделирование систем» для студентов всех форм обучения специальности
Имитационное моделирование систем управления с помощью пакета программ vissim: Методические указания к лабораторным работам по дисциплине...
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам «спектрофотометрический анализ»
Методические указания к лабораторным работам «спектрофотометрический анализ» по спецкурсу «оптические методы анализа» для студентов...
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания по планированию проектов с помощью «Microsoft Project»
Методические указания к лабораторным работам по дисциплине «Управление проектами» для студентов и слушателей факультета «Инженерный...
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconДепартамент научно-технологической политики и образования
Методические указания к лабораторным работам по дисциплине «Теоретические основы прогрессивных технологий» (физика) предназначены...
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconДепартамент научно-технологической политики и образования
Методические указания к лабораторным работам по дисциплине «Теоретические основы прогрессивных технологий» (физика) предназначены...
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам для студентов Казань 2004 Составители: М. Г. Габидуллин, Д. С. Смирнов удк 691: 620
Проектирование составов и испытания тяжелых бетонов и строительных растворов. Методические указания к лабораторным работам по курсу...
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам по дисциплине "Моделирование систем" для студентов всех форм обучения специальности
Имитационное моделирование автоматических систем с помощью пакета программ vissim
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам
Дискретная математика: Методические указания к лабораторным работам / Рязанская государственная радиотехническая академия; Сост....
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам №1,2,3,4 для студентов 3-го курса физико-технического факультета Екатеринбург 2000
Механика сплошных сред: Методические указания к лабораторным работам для студентов 3-го курса физико-технического факультета
Методические указания к лабораторным работам по дисциплине \"Информатика\" для студентов специальности 230102 iconМетодические указания к лабораторным работам для студентов строительных специальностей
Древесина методические указания к лабораторным работам для студентов строительных специальностей
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org