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






Скачать 347.7 Kb.
НазваниеЛабораторная работа №1
страница3/4
Дата публикации16.01.2015
Размер347.7 Kb.
ТипЛабораторная работа
ley.se-todo.com > Информатика > Лабораторная работа
1   2   3   4

Пример 1. Вычислить значения функции f(x)=2 cos x+3, при xϵ{1; 4; 7,5; 20}. Вывести результаты в два столбца: в первом - значения x, во втором - значения f(x). Вычисления провести двумя способами: с помощью функции и процедуры.

Решение. Аргумент и результат функции – действительные числа, поэтому используем тип Real. В теле функции будет только оператор присваивания – для вычисления значения выражения. Процедура отличается строкой заголовка, - для передачи в основную программу результатов вычислений добавим параметр-переменную fx. Чтобы вывести результаты в виде таблицы, используем форматный вывод.

program proc_1;

function f(x:Real):Real;

begin

f:=2*cos(x)+3

end;
procedure proc_f(x:Real;var fx:real);

begin

fx:=2*cos(x)+3

end;
var x,fx:real;

begin

Writeln('с использованием процедуры:');

Writeln(' x f(x)');

x:=1; proc_f(x,fx); Writeln(x:6:2, fx:6:2);

x:=4; proc_f(x,fx); Writeln(x:6:2, fx:6:2);

x:=7.5; proc_f(x,fx); Writeln(x:6:2, fx:6:2);

x:=20; proc_f(x,fx); Writeln(x:6:2, fx:6:2);

Readln;

Writeln('с использованием функции:');

Writeln(' x f(x)');

Writeln(1:6, f(1):6:2);

Writeln(4:6, f(4):6:2);

Writeln(7.5:6:2, f(7.5):6:2);

Writeln(20:6, f(20):6:2);

Readln;

end.

Пример 2. Написать рекурсивную функцию поиска n-го члена последовательности, заданной следующим образом: A1=1, A2=3, Ai=3Ai-2-Ai-1. Вывести через пробел значения рекурсивной функции при значениях аргумента от 1 до 10 включительно.

Решение. По условию задачи аргумент может принимать только целые значения, поэтому функция имеет параметр-значение типа Integer. Выход из рекурсии в данном случае осуществляется при двух значениях аргумента (при i=1, i=2), поэтому в рекурсивной функции необходимы два вложенных условных оператора или оператор выбора case. В приведенном листинге использованы операторы if, попробуйте самостоятельно записать решение с оператором выбора. В основной программе значения аргумента - целые последовательные числа, - воспользуемся циклом с параметром for.

program proc_2;

function A(i:Integer):Integer;

begin

if i=1 then A:=1 else

if i=2 then A:=3 else А:=3*A(i-2)-A(i-1)

end;

var i:Integer;

begin

for i:=1 to 10 do Write(A(i),' ');

Readln

end.

^ Варианты заданий

Задание 1. Составить программу для решения задачи с применением функции пользователя.

  1. Даны координаты вершин треугольника (x1,y1), (x2,y2), (x3,y3). Используя функцию вычисления расстояния между двумя точками, найти периметр треугольника. Формула для вычисления расстояния между двумя точками:

.

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



  1. Найти положение свободно падающего в глубокий колодец камня через 0,1; 0,2; 0,3; 0,4; 0,5; 0,6; 0,7; 0,8; 0,9; 1,0 сек. после начала падения, используя функцию вычисления пути:

, где g=9,8.

  1. Две бочки имеют цилиндрическую форму, известны высота и диаметр каждой из них. Выяснить, в которую бочку поместится больше воды. В решении использовать функцию нахождения объема цилиндра: V=πR2H, где R – радиус основания, H – высота цилиндра.

  2. Даны значения первого члена и знаменателя геометрической прогрессии. Написать функцию вычисления суммы n первых членов геометрической прогрессии. Вычислить значения сумм для nϵ{2,4,6,8,10}.



  1. Создав функцию пользователя, вычислить значения функции f(x) при заданных значениях аргумента x. Вывести результаты в два столбца: в первом - значения x, во втором - значения f(x).



  1. Одновременно толкают два маятника с длинами нитей l1 и l2. Выяснить, сколько всего колебаний они совершат за P секунд, используя для вычислений функцию нахождения периода колебаний математического маятника:

, где g=9,8, l – длина нити.

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

, 

  1. Используя функцию вычисления плотности населения, выяснить, на сколько уменьшится плотность населения, если число жителей сократится на Х человек.

  2. При поступлении в некоторый вуз учитывают результаты ЕГЭ по трем дисциплинам. Для вычисления рейтинга используют формулу , где E1, E2, E3 – результаты ЕГЭ. Известны результаты двух абитуриентов. Используя функцию подсчета рейтинга, выяснить, у кого из них выше шансы поступления.

  3. Тариф предусматривает оплату телефонных разговоров следующим образом: при продолжительности разговора меньше ^ P минут стоимость одной минуты составляет S1 копеек, в противном случае – S2 коп/мин (S1, S2, P - константы). Используя функцию вычисления стоимости одного разговора, найти суммарную стоимость трех звонков известной продолжительности.

  4. На товар дважды была сделана скидка – на p1, а затем на p2 процентов. Первоначальная стоимость товара составляла S рублей. Используя функцию вычисления стоимости товара с учетом скидки на P процентов, найти стоимость товара после двойной скидки.



Задание 2. Составить программу для решения задания 1, используя процедуру пользователя вместо функции.

Задание 3. Вывести через пробел значения рекурсивной функции при значениях аргумента от 1 до 10 включительно. Рекурсивная функция должна осуществлять следующие вычисления:

  1. Найти член последовательности, заданной формулой: Di=7+Di-1 при i>1. Значение первого члена последовательности вводится пользователем.

  2. Найти натуральную степень числа с использованием формулы: an=a·an-1.

  3. Найти член последовательности, заданной формулой: Ai=Ai-1-Ai-2, при i>2. Значения i, первого и второго членов последовательности вводятся пользователем.

  4. Найти член арифметической прогрессии с помощью формулы: an=an-1+d, при n>0. Значения n, d и a0 вводятся пользователем.

  5. Найти значение выражения cos(cos(cos...cos(cos(cos x)))),

где cos используется n раз. Значения x и n вводятся пользователем.

  1. Найти член последовательности, заданной следующим образом:
    y1=0; y2=10; yn=2yn-1-yn-2, где n>2.

  2. Найти член последовательности, заданной формулой Bi=4·Bi-1, при i>1. Значения i и первого члена последовательности вводятся пользователем.

  3. Найти член геометрической прогрессии с помощью формулы

bi=bi-1·q, где значения i, q и b0 вводятся пользователем.

  1. Найти значение выражения sin(sin(sin...sin(sin(sin x)))), где sin используется n раз. Значения x и n вводятся пользователем.

  2. Найти член последовательности, заданной следующим образом:



  1. Найти член последовательности, заданной формулой , при i>1. Значения i и первого члена последовательности вводятся пользователем.

  2. Найти член последовательности, заданной следующим образом:
    x1=1; xn=xn-1+n+3, где n≥2.

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

  1. Для чисел a, b, c найти значение выражения min(a,ab)+min(a,ac)+1 с использованием функции вычисления минимального из двух чисел.

  2. Дан квадрат со стороной а, диагональ этого квадрата является стороной второго квадрата, диагональ второго квадрата – стороной третьего. Найти длину стороны третьего квадрата, используя функцию вычисления длины диагонали квадрата по его стороне:



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

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

  1. В чем состоит принципиальное отличие процедур от функций?

  2. Чем отличается вызов функции от вызова процедуры?

  3. Укажите формальные и фактические параметры в составленных программах.

  4. Как описать в процедуре параметр-переменную?

  5. Какие переменные в языке Паскаль называются локальными, а какие глобальными?

  6. Какие процедуры и функции называют рекурсивными?

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

^ ОБРАБОТКА МАССИВОВ

Цель работы: овладеть основными приемами работы с одномерными и двумерными массивами.

Общие сведения

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

Перед выполнением работы необходимо ознакомиться с теоретическим материалом по теме «Массивы» ([1], с. 67-73).

Пример 1. Составить программу, позволяющую в одномерном массиве, состоящем из N вещественных элементов, вычислить сумму положительных элементов.

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

program massiv_1;

const N=10;

type mas=array [1..N] of Real;
procedure Vvodmas(var A:mas);

var i:Integer;

begin

for i:=1 to N do A[i]:=-50+Random(101)+random;

end;
procedure Vivodmas(A:mas);

var i:Integer;

begin

for i:=1 to N do Write(A[i]:8:2);

Writeln

end;
function Summa(A:mas):real;

var i: Integer; s:real;

begin

s:=0;

for i:=1 to N do if A[i]>0 then s:=s+A[i];

Summa:=s;

end;
var A: mas;

begin

Randomize; Vvodmas(A);

Writeln('Исходный массив:'); Vivodmas(A);

Writeln('Ответ: ', Summa(A):0:2);

Readln

end.

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

Решение. Преобразования необходимо провести в каждом столбце массива, поэтому параметр внешнего цикла в процедуре обработки - номер столбца j, а вложенного – номер строки i.

Для перестановки двух элементов в столбце массива необходимо найти номера их строк n1 и n2, а затем поменять местами значения элементов с использованием промежуточной переменной p.

Чтобы найти наибольший по модулю элемент столбца, введем дополнительную переменную max, которая будет хранить максимальное по модулю значение в текущем столбце массива на данный момент. (Можно решить задачу без использования переменной max. Подумайте, как это сделать.)

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

const n=10; m=7;

type mas=array [1..n,1..m] of Integer;
procedure Vvodmas(var D:mas);

var i,j:Integer;

begin

for i:=1 to n do

for j:=1 to m do

D[i,j]:=-50+Random(101);

end;
procedure Vivodmas(D:mas);

var i,j:Integer;

begin

for i:=1 to n do

begin

for j:=1 to m do Write(D[i,j]:4);

Writeln;

end;

end;
procedure Obmen(a,b: real; var D:mas);

var i,j,p,n1,n2,max: Integer;

begin

for j:=1 to m do

begin

n1:=1; max:=abs(D[1,j]);{считаем первый элемент столбца наибольшим по модулю}

for i:=2 to n do

if abs(D[i,j])>max then {обнаружен больший элемент}

begin n1:=i; max:=abs(D[i,j]) end;
i:=n; {перебираем элементы столбца, начиная с последнего}

while (i>=1)and (D[i,j]>a)and(D[i,j]
n2:=i;

if n2<>0 then {если элемент, не принадлежащий интервалу (a,b), был найден}

begin

p:=D[n1,j]; D[n1,j]:=D[n2,j]; D[n2,j]:=p; {обмен значений}

end;

end;

end;
var D: mas; a,b:Real;

begin

Randomize; Vvodmas(D);

Writeln('Исходный массив:'); Vivodmas(D);

Write('Введите через пробел концы интервала (a,b): '); Readln(a,b);

Obmen(a,b,D);

Writeln('Ответ:'); Vivodmas(D);

Readln

end.
1   2   3   4

Похожие:

Лабораторная работа №1 iconЛабораторная работа «Ремонт торцевых уплотнений» Лабораторная работа...
Машины и аппараты химических производств и предприятий строительных материалов, в 2004 г защитил кандидатскую диссертацию по специальности...

Лабораторная работа №1 iconЛабораторная работа №2
Работа со списками. Создание автоматических промежуточных отчетов и сводных таблиц

Лабораторная работа №1 iconЛабораторная работа 1
Цель работы: ознакомиться с топографической картой и научиться решать следующие задачи

Лабораторная работа №1 iconЛабораторная работа 8
Машковский М. Д. Лекарственные средства Медицина, 1984. ч. I, с. 325, 403, ч. II, с. 320, 322

Лабораторная работа №1 iconМежрегиональный центр переподготовки специалистов Лабораторная работа №1
В методических указаниях к лабораторным работам дополнительно рассматривается необходимый для их выполнения теоретический материал....

Лабораторная работа №1 iconЛабораторная работа №4 Тема 1
Написать и выполнить безымянный блок pl/sql, который выводит значение символьной переменной

Лабораторная работа №1 iconЛабораторная работа №1
...

Лабораторная работа №1 iconЛабораторная работа №6 Тема 1
Создать хранимую процедуру pl/sql, которая выводит наибольшее из двух чисел, заданных в качестве аргументов

Лабораторная работа №1 iconЛабораторная работа №8
Цель работы – определение радиуса кривизны плоско-выпуклой линзы с помощью интерференционной картины колец Ньютона

Лабораторная работа №1 iconРасписание лекций и практических работ по биологии 9 января, воскресенье
Лабораторная работа «Сравнительный анализ хромосом млекопитающих». Профессор О. В. Саблина



Школьные материалы


При копировании материала укажите ссылку © 2018
контакты
ley.se-todo.com

Поиск