|
ПРИМЕР ВЫПОЛНЕНИЯ Лабораторной РАБОТЫ
Вычислить на ЭВМ значения у и р, используя расчетные формулы-
у=а 3x2+
p=ln(a+x2)+sin2
при значениях а=0,59, z=-4.8, х=2,1
Схема алгоритма решения представлена на рис. 3. В блоке 2 вводятся исходные данные а, х, z. В блоке 3 вычисляется значение тангенса. В блоках 4 и 5 вычисляются значения функций у и р. а в блоке 6 осуществляется вывод вычисленных значений.
Program lab_1(input,output); { лабораторная работа №2} {СТУДЕНТА ГРУППЫ ___ ИВАНОВА И.И.} var a,x,z,y,p,c: real; begin writeln(‘введите a,x,z’); read(a,x,z); c:=sin(x*x)/cos(x*x); y:=a*c*c*c*sqr(sin(z*z/(a*a+x*x))); p:=ln(a+x*x)+sqr(sin(z/a)); writeln(‘y=’,y:8:3,’p=’,p:8:3); end.
Если сравнивать язык Си с языком Pascal, то можно сделать вывод, что Си дает большую свободу действиям программиста. С другой стороны Си позволяет совершить ошибки, которые в Pascal совершить невозможно.
Методические рекомендации к выполнению лабораторной работы Отчет к лабораторной работе должен содержать: 1. Постановка задачи a) Список входных данных b) Список выходных данных c) Список промежуточных переменных 2. Разработка алгоритма решения задач a) Разработка блок-схемы решения задачи. b) Список функций 3. Разработка программного кода к алгоритму. 4. Проверка алгоритма (листинг) a) Рассмотрение всех не стандартных ситуаций b) Ограничения и допущения, если имеются 5. Ответы на контрольные вопросы.
Задание к лабораторной работе Разработать алгоритм решения задачи (по вариантам) и написать программы на языках Си и ТР.
Контрольные вопросы 1. Опишите особенности линейной алгоритмической конструкции. 2. В чем сходства и различия языков Си/С++ и Turbo Pascal? 3. Сравните структуры программ, названия основных типов данных, описание раздела подключения библиотек, раздел описания переменных, функции ввода-вывода данных. Оформите в таблице сравнений:
Лабораторная работа № 3 ПРОГРАММИРОВАНИЕ ПРОЦЕССОВ с разветвляющейся структурой
Цель работы: овладение практическими навыками разработки алгоритмов и программ с разветвляющейся структурой на языках Turbo Pascal и С.
Теоретический материал На практике редко удается представить схему алгоритма решения задачи в виде линейной структуры. Часто в зависимости от каких-либо значений промежуточных результатов необходимо организовать вычисления по одним или другим формулам. В зависимости от выполнения некоторого логического условия вычислительный процесс осуществляется по одной или другой ветви. Алгоритм такого вычислительного процесса называется алгоритмом разветвляющейся структуры. В качестве условия в разветвляющемся алгоритме может быть использовано любое понятное исполнителю утверждение, которое может соблюдаться (быть истинно) или не соблюдаться (быть ложно). Такое утверждение может быть выражено как словами, так и формулой. Таким образом, алгоритм ветвления состоит из условия и двух последовательностей команд. В зависимости от того, в обеих ветвях решения задачи находится последовательность команд или только в одной, разветвляющиеся алгоритмы делятся на полные и не полные (сокращенные). Стандартные блок-схемы разветвляющегося алгоритма приведены ниже:
Условные конструкции в ТР. Разветвления в программах используют операторы перехода, условный и выбора варианта. 1) Оператор безусловного перехода GOTO позволяет изменять последовательность выполнения операторов в программе. Формат записи оператора: GOTO <метка>; где <метка> - имя метки, отличающей ту строку, на которую требуется выполнить переход. Имя метки должно быть предварительно описано в разделе описания меток Label. Неправильное использование в программе оператора GOTO усложняет читаемость программы. Например: Label 1,3,8,10; ..... Goto 8 ..... 8: x: = A+ B 2) Составной оператор (begin … end) представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin … end. Этот оператор записывается следующим образом: begin <оператор 1>; <оператор 2>; .................. <оператор N> end; Составной оператор используется в тех случаях, когда в соответствии с правилами записи языка TURBO PASCAL можно записать только один оператор, в то время как требуется выполнить несколько операторов. Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой.Перед символом end точку с запятой можно не ставить, т. к. это слово не является отдельным оператором. Если же «;» будут поставлены, то они будут рассматриваться как пустой оператор, т. е. оператор не выполняющий никакого действия.Сам блок операторов программы является (можно считать) составным оператором, т. к. он тоже заключен в операторные скобки BEGIN... END, внутри которых располагается последовательность операторов, разделенных «;». Например: Begin A:=2; B:=x+y; End;
3) Условный оператор IF обеспечивает в зависимости от условия выбор одного из возможных действий.
Существует два варианта записи оператора: a) Полный вариант: If S then A else B; b) Укороченный вариант: If S then A; где: S – условие (логическое выражение), которое проверяется на истинность. A – оператор (только один!), выполняющейся, если выражение S – истинно. B – оператор (только один!), выполняющейся, если выражение S – ложно. Если вместо A или B требуется использовать несколько операторов, то применяется составной оператор (BEGIN... END). Примеры использования оператора IF приведены в Приложении 1. 4) Оператор выбора варианта Case … of … end. Используется для обработки ситуаций с несколькими вариантами решения (путем выбора одного из нескольких операторов), выбираемых в зависимости от некоторого выражения, называемого селектором. Существует две формы записи этого оператора:
где S – выражение порядкового типа, значение которого вычисляется; сl,c2,...,сN—это константы или метки, с которыми сравниваются значения выражения селектора (S). Они должны быть одного гита с селектором. Выбор оператора определяется совпадением значения селектора S и константы (метки сl,c2,...,cN), стоящей перед оператором. < оператор 1 >, < оператор 2 >, < оператор N > — один оператор, либо составной оператор (begin... end), < оператор > — оператор, который выполнится, если значение выражения S не совпадет ни с одной из меток (констант) сl,c2,...,cN. Примеры использования оператора IF. a) IF p>0.5 THEM GOTO 15; b) IF (x>0) AND (x<=10) THEN T:=x*3 ELSE T:=SQRT(y); Вложенные IF: IF X<=A THEN Z:=sin(x) ELSE IF x>0 THEN Z:=sin(x)/cos(x) ELSE Z:=cos(x); Ключевое слово ELSE всегда относится к ближайшему ему IF.
Пример 1. Вычислить и вывести на экран значение заданной функции
где t=2.2.
Текст программы: Program Lab21; Const t=2.2; Var x,z:real; Begin Writeln('Введите x'); Read(x); If x<0.5 then z:=(ln(exp(3*ln(x)))+sqr(x))/sqrt(x+t) else if x=0.5 then z:=sqrt(x+t)+1/x else z:=cos(x)+t*(sqr(sin(x))); Writeln ('z=',z:8:3); End. Результат выполнения программы: z(0.1)=-4.548 z(0.5)=3.643 z(1)=2.098
Пример 2. Ввести число от 0 до 5. Вывести его название на английском языке.
Текст программы: Program lab22; Var i:0..5; Begin Writeln('Введите целое число от 0 до 5'); Read(i); Case i of 0:writeln('zero'); 1:writeln('one'); 2:writeln('two'); 3:writeln('three'); 4:writeln('four'); 5:writeln('five'); end; End.
Пример 3. Определение частного от деления целых чисел {Вариант № 1 (с применением оператора GOTO)} Program DELZEL_1(input,output); Label metka1; Var x, y, Res: integer; BEGIN Write (‘ Введите делимое: ’); Readln (x); Write (‘ Введите делитель: ’); Readln (y); If y = 0 then begin Writeln (‘ Деление на ноль! ’); GOTO metka1; end; Res: = x div y; Writeln (‘ Частное равно: ‘, Res: 10: 3); metka1; {метка пустого оператора} END.
{Вариант № 2 (без оператора GOTO)} Program DELZEL_1(input,output); Var x, y, Res: integer; BEGIN Write (‘ Введите делимое: ’); Readln (x); Write (‘ Введите делитель: ’); Readln (y); If y < > 0 then begin Res: = x div y; Writeln (‘ Частное равно: ‘, Res: 10: 3); end Else Write (‘ Деление на ноль! ’); END.
Условные конструкции в Си/С++. 1. Операторы if Эти операторы иначе называются условными операторами и позволяют реализовывать разветвления в программах. Пример 4. Программа осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы; предполагается, что Вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров:
#include <iostream.h> void main() { const float fac = 2.54; float x, in, cm; char ch = 0; cout << "введите длину: "; cin >> x >> ch; if (ch == 'i') { // inch - дюймы in = x; cm = x*fac; } else if (ch == 'c') // cm - сантиметры { in = x/fac; cm = x; } cout << in << " in = " << cm << " cm\n"; } Условие в операторе if должно быть заключено в круглые скобки.
2. Операторы switch Оператор switch производит сопоставление значения с множеством констант. Проверки в предыдущем примере можно записать так:
switch (ch) { case 'i': in = x; cm = x*fac; break; case 'c': in = x/fac; break; default: in = cm = 0; break; }
Операторы break применяются для выхода из оператора switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default.
3. Проверки Проверка значения может осуществляться или оператором if, или оператором switch:
If (выражение) оператор Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|