Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Контрольная работа: Выражения и условный оператор IF. Операторы циклов. Массивы и подпрограммы

Название: Выражения и условный оператор IF. Операторы циклов. Массивы и подпрограммы
Раздел: Рефераты по информатике, программированию
Тип: контрольная работа Добавлен 16:41:24 15 августа 2010 Похожие работы
Просмотров: 278 Комментариев: 2 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

Томский межвузовский центр дистанционного образования

Томский государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра экономика

Контрольная работа №1

по дисциплине «информатика»

автор пособия Тимченко С.В., Сметанин С.И.

вариант №1

Выполнила

Студентка гр.З-828-Б

Специальности 080105

Афонина Юлия Владимировна

Г. Нефтеюганск

2009 г.


Задание №1. «Выражения и условный оператор IF»

1. Вычислить значение функции f в точке x.

Решение :

Program prog1;

Var

f,x: real ;

Begin

writeln ('Расчет значения функции в заданной точке');

write (' Введите число x: ');

readln (x);

if x<0 then f:=SQR (x+3) else

begin

if x<4 then f:=sin(x-2)/(SQR(x)-16)

else f:=SQRT (x-4);

end ;

writeln (' Значение f(',x:0:8,') = ',f:0:8);

readln ;

end .

Тестирование программы:

1. X=-1 (выполнено первое условие, x<0):

Расчет значения функции в заданной точке

Введите число x: -1

Значение f(-1.00000000) = 4.00000000

2. X=3 (выполнено второе условие, 0<=x<4):

Расчет значения функции в заданной точке

Введите число x: 3

Значение f(3.00000000) = -0.12021014

3. X=5 (выполнено третье условие, x>=4):

Расчет значения функции в заданной точке

Введите число x: 5

Значение f(5.00000000) = 1.00000000

Программа дает верные результаты, отладка завершена.

2. Какие типы использовались при описании переменных в программе?

При описании данной программы использовались переменные вещественного типа.

3. Чем определяется выбор того, или иного типа?

Типом данных называется множество допустимых значений этих данных, а также совокупность операций над ними. Типы делятся на следующие группы: простые, структурированные, указатели, процедурные, объекты. Есть стандартные (предопределенные) и определяемые программистами в разделе, начинающемся со слова Type. Простые типы определяют упорядоченное множество значений элементов и делятся на вещественные, целые, символьный, логический, перечисляемый и тип-диапазон. Вещественные типы определяют дробные числа и представлены 5 стандартными типами: real, single, double, extended, comp. Целые типы определяют целые числа и представлены 5 стандартными типами: integer, longint, shortint, byte, word, стандартный символьный тип char определяет полный набор допустимых символов. Стандартный логический тип Boolean представляет собой тип данных, каждый элемент которого может принимать 1 из 2-х значений: False (ложь), True (правда). Перечисляемый тип не является стандартным и определяется набором идентификаторов, к которым может совпадать значение элемента данных.

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

Задание №2. «Операторы циклов»

1. Задание:

Вычислить сумму s значений функции f в точках xi которые берутся с заданного интервала [a ;b ] через равные отрезки длиной h . Длина отрезка рассчитывается по формуле . Здесь i =1,2,3…n – номер точки; n – задаваемое количество точек; a – начло и b – конец интервала изменения x . Вывести на экран результаты вычислений, полученные при помощи следующих циклов:

- While логическое_выражение Do тело _цикла ;

- Repeat тело _цикла Until логическое _выражение ;

- For параметр :=мин ._значение To макс . Do тело _цикла ;

- For параметр :=макс ._значение DownTo мин . Do тело _цикла ;

При выполнении задания сначала в программе требуется задать значение исходных данных: границы интервала a и b , количество точек n . Это можно сделать, описав соответствующие константы в разделе объявления констант Const .

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

Решение :

Program prog2;

const

a=3;

b=10;

n=10;

var

s,x,h:real ;

i:integer ;

begin

writeln ('Вычисление суммы значений функции');

h:=(b-a)/(n-1);

writeln (' a = ',a);

writeln (' b = ',b);

writeln (' n = ',n);

writeln (' h = ',h:0:8);

writeln ;

{цикл "while"}

writeln ('1. Цикл "while"');

x:=a;

s:=0;

i:=1;

while i<=10 do

begin

s:=s+sin (x+3)/exp (2/5*ln (x+3));

x:=x+h;

i:=i+1;

end ;

write (' Значение s: ');

writeln (s:0:8);

{цикл "repeat"}

writeln ('2. Цикл "repeat"');

x:=a;

s:=0;

i:=1;

repeat

s:=s+sin (x+3)/exp (2/5*ln (x+3));

x:=x+h;

i:=i+1;

until i>10;

write (' Значение s: ');

writeln (s:0:8);

{цикл "for ... to ... do"}

writeln ('3. Цикл "for ... to ... do"');

x:=a;

s:=0;

for i:=1 to 10 do

begin

s:=s+sin (x+3)/exp (2/5*ln (x+3));

x:=x+h;

end ;

write (' Значение s: ');

writeln (s:0:8);

{цикл "for ... downto ... do"}

writeln ('4. Цикл "for ... downto ... do"');

x:=a;

s:=0;

for i:=10 downto 1 do

begin

s:=s+sin (x+3)/exp (2/5*ln (x+3));

x:=x+h;

end ;

write (' Значение s: ');

writeln (s:0:8);

readln ;

End .

Тестирование программы:

Переменные a, b, h заданы в разделе констант в программе:

const

a=3;

b=10;

n=10;

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

Вычисление суммы значений функции

a = 3

b = 10

n = 10

h = 0.77777778

Результаты вычислений, полученные при помощи различных циклов:

1. Цикл While:

1. Цикл "while"

Значение s: 0.15809431

2. Цикл repeat:

2. Цикл "repeat"

Значение s: 0.15809431

3. Цикл For … To … Do:

3. Цикл "for ... to ... do"

Значение s: 0.15809431

4. Цикл For … DownTo … Do:

4. Цикл "for ... downto ... do"

Значение s: 0.15809431

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

2. Опишите оператор While.

Оператор While имеет следующую структуру:

While логическое выражение do оператор ;

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

В частности, если в самом начале работы While при вычислении логического выражения получается ложь, то оператор не выполнится ни разу. Как обычно, в качестве оператора может выступать некоторый составной оператор. Может показаться странным, что оператор While вообще когда-нибудь заканчивает свою работу. В самом деле, почему одно и то же логическое выражение сначала было истинным, а потом, после нескольких выполнений оператора, стало ложным? Логическое выражение зависит от нескольких переменных, значение которых меняется во время выполнения оператора, что влечет за собой изменения значения логического выражения. В принципе, это вовсе не означает, что каждый оператор While когда-нибудь заканчивает работу. То есть, не исключена ситуация, когда логическое выражение всегда будет истинным, и оператор While будет работать вечно. Такая ситуация называется зацикливанием. Таким образом, при использовании оператора While и вообще других циклических операторов нужно быть аккуратным и стараться избегать зацикливаний. Это значит, что при программировании любого цикла нужно стараться всегда объяснить самому себе, почему этот цикл не будет вечным, а когда-нибудь закончит свою работу.

3. В чем ее основные отличия от остальных циклов Turbo Pascal?

Цикл while имеет следующие отличия от оператора repeat :

1) В операторе while проверка условия выхода выполняется в начале выхода, а у repeat в конце.

2) Тело цикла может выполняться ни разу в while , а в repeat всегда выполняется хотя бы один раз;

3) Условие выхода удовлетворяется, если выражение ложно, repeat – если истинно;

4) Тело цикла должно содержать только один оператор, а в repeat можно поместить любое количество операторов.

Оператор For: Если значение условного выражения истинно, то цикл продолжает выполняться, а если значение условного выражения ложно, то происходит выход из цикла. После выхода из цикла идет переход к следующему оператору программы. Изменение – это выражение, определяющее, как будет меняться параметр цикла. В операторе for сначала проверяется условие и если значение условия "истинно", то идёт выполнение тела цикла (блока операторов или простого оператора).

Задание №3. «Массивы и подпрограммы»

Результатом выполнения третьего задания должна быть программа, написанная с использованием подпрограмм – не менее 2 процедур и 1 функции.

Задание связанно с действиями над квадратной матрицей m[n,n], у которой количество строк и столбцов равно n (2 ≤ n ≤ 10). Матрицы могут быть либо вещественного, либо целого типа. Значения компонентов матрицы следует задавать случайным образом и в таком диапазоне, чтобы полученные данные были нетривиальными, т.е. неочевидными, не лежащими на поверхности.

Задание:

1) Найти минимальное и максимальное значение компонентов квадратной вещественной матрицы m [n ,n ].

2) Поменять местами в матрице m [n ,n ] компоненты строки, содержащей минимум, с компонентами столбца, содержащего максимум. Если минимумов или максимумов в матрице несколько, то взять строку и столбец первых встречных при переборе из минимумов и максимумов соответственно.

3) В одномерный массив v [n ] записать компоненты главной диагонали измененной матрицы m [n ,n ] (индексы строки и столбца главной диагонали равны).

4) Вычислить сумму компонентов полученного массива v [n ].

5) На экран вывести исходную матрицу m [n ,n ], первые встреченные минимальную и максимальную компоненты с индексами, измененную матрицу m [n ,n ], массив v [n ], сумму компонентов массива v [n ].

Решение.

В следующей программе использованы 3 процедуры:

- input_matrix для ввода n и заполнения матрицы m[n,n];

- output_matrix для вывода матрицы на экран;

- change_matrix для изменения элементов стоки и столбца матрицы;

и одна функция:

- vector_v для вывода на экран вектора v [ n ] и суммирования его элементов.

Формат вывода результатов расчета задается постоянной digits :

const

digits=3;

которая указывает, сколько знаков после запятой отображать.

Программа :

program prog3;

const

digits=3;

type

matrix=array [1..10, 1..10] of real;

vector=array [1..10] of real;

var

m:matrix ;

v:vector ;

n:integer ;

procedure input_matrix (var m:matrix ; var n:integer );

var

p1,p2,a,b:real ;

input:boolean ;

i,j:integer ;

begin

input:=false ;

repeat

writeln ('Введите размер квадратной матрицы n');

writeln ('не менее 2 и не более 10:');

readln (n);

if (n<2) or (n>10) then

begin

writeln (' Вы ввели неправильный размер матрицы,');

writeln ('n должно быть не менее 2 и не более 10.');

end

else

begin

input:=true ;

end ;

until input;

writeln ('Введителевую a иправую b границы ');

writeln ('диапазона значений компонент матрицы:');

write ('a = ');readln (a);

write ('b = ');readln (b);

if a>b then

begin

p1:=a;

a:=b;

b:=p1;

end ;

if a=b then begin p1:=0; p2:=b; end

else if b=0 then begin p1:=a; p2:=0; end

else begin p1:=b-a; p2:=a; end ;

{p1 - расстояние между левой и правой границей}

{p2 - левая граница}

randomize ;

for i:=1 to n do

for j:=1 to n do

m[i,j]:=p2+random *p1;

end ; {input_matrix}

procedure output_matrix(var m:matrix ; n:integer );

var

i,j:integer ;

begin

for i:=1 to n do

begin

for j:=1 to n do

begin

write (m[i,j]:0:digits);

write (' ');

end ;

writeln ;

end ;

writeln ;

end ; {output_matrix}

procedure change_matrix(var m:matrix ;n:integer );

var

i,j:integer ;

min_r,min_c,max_r,max_c:integer ;

min_z,max_z:real ;

value:real ;

begin

min_z:=100000;

for i:=1 to n do

for j:=1 to n do

if m[i,j]<min_z then

begin

min_r:=i;min_c:=j;min_z:=m[i,j];

end ;

writeln ('Минимальное значение и индексы:');

write (min_z:0:digits);

write ('; столбец: ');

write (min_c);

write (', строка: ');

writeln (min_r);

max_z:=-100000;

for i:=1 to n do

for j:=1 to n do

if m[i,j]>max_z then

begin

max_c:=j;max_r:=i;max_z:=m[i,j];

end ;

writeln ('Максимальное значение и индексы:');

write (max_z:0:digits);

write ('; столбец: ');

write (max_c);

write (', строка: ');

writeln (max_r);

{изменение элементов строки и столбца}

write ('Изменение элементов ');

write (min_r);

write (' строки и ');

write (max_c);

writeln (' столбца');

for i:=1 to n do

begin

value:=m[min_r,i];

m[min_r,i]:=m[i,max_c];

m[i,max_c]:=value;

end ;

end ; {change_matrix}

procedure vector_v(m:matrix ;var v:vector ;n:integer );

var

i:integer ;

s:real ;

begin

for i:=1 to n do

v[i]:=m[i,i];

s:=0;

for i:=1 to n do

s:=s+v[i];

writeln ('Вектор v[n]:');

for i:=1 to n do

write (v[i]:0:digits,' ');

writeln ;

write ('Сумма компонентов вектора: ');

writeln (s:0:digits);

end ; {vector_v}

begin

input_matrix(m,n);

writeln ('Первоначальнаяматрица');

output_matrix(m,n);

change_matrix(m,n);

writeln ('Новаяматрица');

output_matrix(m,n);

vector_v(m,v,n);

readln ;

end .

Тестирование программы:

Введите размер квадратной матрицы n

не менее 2 и не более 10:

3

Введите левую a и правую b границы

диапазона значений компонент матрицы:

a = -5

b = 5

Первоначальная матрица

4.326 -3.582 -2.539

-2.236 -1.983 1.980

2.884 3.248 -1.216

Минимальное значение и индексы:

-3.582; столбец: 2, строка: 1

Максимальное значение и индексы:

4.326; столбец: 1, строка: 1

Изменение элементов 1 строки и 1 столбца

Новая матрица

4.326 -2.236 2.884

-3.582 -1.983 1.980

-2.539 3.248 -1.216

Вектор v[n]:

4.326 -1.983 -1.216

Сумма компонентов вектора: 1.127

Результаты тестирования:

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

- минимальное и максимальное значения определены верно;

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

- изменены местами нужные строка и столбец.

Отладка завершена.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений06:46:34 19 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
19:52:17 28 ноября 2015

Работы, похожие на Контрольная работа: Выражения и условный оператор IF. Операторы циклов. Массивы и подпрограммы

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

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



Результаты(150043)
Комментарии (1830)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru