Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Перечень контрольных вопросов




End.

Begin

Const

Uses

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

На языке Free Pascal

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

 

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

на ____листах

 

 

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

№ зач. кн. _________

 

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

Самара

200_ г.

 

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

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

,

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

Прежде всего, обратим внимание на то, что функции tg(x) в языке Free Pascal отсутствует. Значит, следует заменить её отношением sin(x)/cos(x).

Учитывая, что операцию возведения в куб придётся заменить операцией умножения, обозначим это отношение через «t» и вычислять его будем индивидуально. Опишем ее как переменную. Величины a, z, x можно описать в программе как константы, так как их значения заранее определены условием задачи. Если же описать их как переменные, то нужные значения указываются при вводе.

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

 

program Zadacha1;

{$mode objfpc}{$H+}

Classes, SysUtils

{ you can add units after this };

a=0.59; z=-4.8; x=2.1;

var t, y, p: real;

writeln('a=', a:6:2, ' x=', x:6:2, ' z=',z:6:2);

t:= sin(x*x)/cos(x*x);

y:= a*t*sqr(t) + sqrt(z*z/(a*a + x*x));

p:= ln(a+x*x)+sqr(sin(z/a));

writeln('Result');

writeln; //вывод результата

writeln('y=', y:8:3,' p=', p:8:3);

readln //эта процедура без списка

//аргументов оставляет открытым окно для считывания результата

 

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

 

a= 0.59 x= 2.10 z= -4.80

Result

y= 21.635 p= 2.532

Замечания.

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

2. При небольших показателях степени задача возведения в степень решается умножением. Например: х32∙х. При дробных и больших значениях показателя степени вычисление производится по формуле: Ах = ех∙ln(А) или (exp(x*lm(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, что позволит протестировать программу по всем трем условиям. Поскольку в задаче три условия, число блоков «решение» в алгоритме должно быть два (на единицу меньше). Блок-схема одного из вариантов алгоритма решения задачи и соответствующая программа будут иметь вид:

program Zadacha2; {$mode objfpc}{$H+} uses Classes, SysUtils { you can add units after this }; label out; var x, y: real; const k=1.2; a=2; b=4; begin writeln('vvedite x'); readln(x); if (x<=2) and (x>=0) then y:=sin(x) else if (x>=4) and(x<=6) then y:=k*ln(x) else begin writeln('function NO'); goto out; end; writeln('y=',y:8:3); //вывод результата out: readln end.    

 

 

 

 
 

 

 


 

Рис. 12. Блок-схема алгоритма задачи 2

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

 
 
vvedite x y= 0.841 vvedite x function NO vvedite x y= 1.931

 

 


Пример выполнения задания 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):

program Zadacha3; {$mode objfpc}{$H+} uses Classes, SysUtils; var x, t: real; n: byte; begin writeln ('vvedite x'); readln (x); t:=0; //обнуление суммы for n:=1 to 10 do t:=t+ 1/n; t:=5* sqr(x)*t; writeln ('t=', t:6:2); //вывод результата readln end.    

.

 

 

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

 

 

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

 

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

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

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

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

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

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

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

 

 
 

 

 


 

 

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

 
 
program Zadacha4; {$mode objfpc}{$H+} uses Classes, SysUtils; var y,x:real; begin x:=0; writeln(' Tabl '); writeln('-----------------------'); repeat y:=cos(x); writeln('| x=',x:6:2, ' | y=',y:6:2, ' |'); writeln('-----------------------'); x:=x+0.5; until x>1; while x<=3 do begin y:=sin(x); writeln('| x=',x:6:2, ' | y=',y:6:2, ' |'); writeln('-----------------------'); x:=x+0.5; end; readln end.  


Результаты работы

программы:

 
 
Tabl ----------------------- | x= 0.00 | y= 1.00 | ----------------------- | x= 0.50 | y= 0.88 | ----------------------- | x= 1.00 | y= 0.54 | ----------------------- | x= 1.50 | y= 1.00 | ----------------------- | x= 2.00 | y= 0.91 | ----------------------- | x= 2.50 | y= 0.60 | ----------------------- | x= 3.00 | y= 0.14 | -----------------------

 


 

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

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

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

 

 

 
 
program Zadacha5; {$mode objfpc}{$H+} uses Classes, SysUtils { you can add units after this }; const n=10; var i, Imax:byte; Xmax: real; // наибольший элемент x: array[1..n] of real; begin for i:=1 to n do begin write('vvedite ', i, ' element massive x'); readln(x [i ]); //ввод элемента массива Х end; Xmax:= x[1]; //кандидат в Хmax Imax:=1; //его номер Imax for i:=2 to n do if x[i] > Xmax then begin//поиск Хmax Xmax:=x[i]; Imax:=i; end; writeln; writeln('Xmax=', Xmax:6:2, ' Imax=', Imax); readln //вывод результата end.  


 

 

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

 
 
vvedite 1 element massive x 2 vvedite 2 element massive x -8 vvedite 3 element massive x 6 vvedite 4 element massive x -10 vvedite 5 element massive x 6 vvedite 6 element massive x 4 vvedite 7 element massive x -7 vvedite 8 element massive x 3 vvedite 9 element massive x 5 vvedite 10 element massive x -8   Xmax= 6.00 Imax=3

 


Рис. 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. Вставка оглавления:

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

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

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

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

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

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

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

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

 

1. Алфавит Free Pascal

2. Операции в Free Pascal

3. Идентификаторы в Free Pascal

4. Типы данных в Free Pascal

5. Целые типа данных в Free Pascal

6. Вещественные типы данных в Free Pascal

7. Логический тип данных в Free Pascal

8. Символьный тип данных в Free Pascal

9. Строковый тип данных в Free Pascal

10. Структура программы консольного приложения в Lazarus

11. Где и как описываются константы, переменные, метки и типы данных?

12. Стандартные функции Free Pascal

13. Оператор присваивания в Free Pascal

14. Пустой и составной операторы в Free Pascal

15. Процедуры ввода с клавиатуры Read и Readln в Free Pascal

16. Процедуры вывода на монитор Write и Writeln в Free Pascal

17. Последовательность действий при выполнении оператора присваивания.

18. Как вывести переменные с сопровождением их значений именами переменных?

19. Как организовать пропуск одной, двух строк при выводе?

20. Какие структуры вычислительных процессов Вы знаете?

21. Формат условного оператора ifthenelse.

22. Вложенные условные операторы.

23. Формат оператора перехода Goto

24. Какие действия выполняются операторами условного и безусловного переходов?

25. Зачем нужно при отладке программы тестировать все ветви алгоритма?

26. Что такое итерационный циклический процесс? Его отличия от цикла с заданным числом повторений.

27. Чем отличаются циклы "до" от циклов "пока"?

28. Назначение и формат оператора whiledo?

29. Назначение и формат оператора repeatuntil?

30. Как подсчитать количество повторений в итерационном цикле?

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

32. Преимущества использования операторов цикла в программе.

33. Использование оператора цикла fortodo.

34. Использование оператора цикла fordowntodo.

35. Чем отличается оператор fortodo от fordowntodo.

36. Организация вычисления сумм.

37. Организация вычисления произведения.

38. Что такое массив? Описание типа – массив.

39. Какие операторы языка можно использовать для описания массивов?

40. Какие типовые операции с элементами характерны для массивов?

41. Что такое подпрограмма? Ее назначение.

42. Понятие функций. Объявление функций и формат вызова.

43. Понятие процедур. Объявление процедур и формат вызова.

44. Назначение модулей.

45. Структура модуля и его подключение в программу.

 




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


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


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



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




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