Программы разветвлённой структуры
Стр 1 из 4Следующая ⇒ Лабораторная работа №1 Работа в интегрированной среде С на примере программ линейной структуры 1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков работы в интегрированной среде Borland C, изучение структуры программы на языке С. 2. ОСНОВНЫЕ СВЕДЕНИЯ Чаще всего линейные алгоритмы используются для программирования вычислений по формулам. В этом случае удобно использовать набор стандартных функций Си, содержащихся в заголовочном файле math.h: Sin (x) - sin x; cos (x) – cos x; tan(x) - tg х; log (x) - ln x; log10(x) – lg x; exp(x) - показательная функция ex; sqrt (x)- корень квадратный от х; роw(x, y) – x в степени y; abs(x)- модуль x.; acos(x) – arccos x; asin(x) – arcsin x; atan(x)- arctg x; sinh(x)- sh x; cosh (x) – ch x; tanh(x)-th x. Для тригонометрических функций аргумент х измеряется в радианах и имеет тип double, как и значения функций. Пример программы линейной структуры Вычислить площадь и стороны прямоугольного треугольника, если известны гипотенуза c и угол x. Для вычислений воспользуемся формулами: a=c×sin x; b=c×cos x; S=ab ; Программа вычислений имеет вид: //lab1_prim.c вычисление высот и площади треугольника #include <stdio.h> //заголовочный файл для организации ввода-вывода #include <math.h> //заголовочный файл математических функций main() //главная функция { float a,b,c,x, S; //описание переменных вещественного типа printf (“\n Введите гипотенузу и угол треугольника ”); scanf (“%f%f “,&c,&x); // ввод значений вещественного типа a=c*sin(x); b=c*cos(x); S=a*b; printf (“\n Результаты: a=%7.2f b=%7.2f S=%7.2f “,a, b, S); return 0; } Комментарий в программе не влияет на компиляцию программы, а служит для разъяснения действий основных блоков текста и программы в целом. Однострочный комментарий действует от двух символов // до конца строки. Многострочный комментарий заключается в пары символов /* и */.
Вторая строка программы #include <stdio.h> является директивой компилятора для включения заголовочного файла stdio.h, в котором содержатся средства ввода-вывода (связи с внешними устройствами), отсутствующие в самом языке Си. Третья строка - #include<math.h> является директивой компилятора для включения заголовочного файла math.h, обеспечивающего выполнение математических функций. Программа на языке Си состоит из ряда функций, из которых функция main (главная) является обязательной и служит точкой входа в программу. В круглые скобки заключаются параметры функции, причем наличие круглых скобок обязательно, если даже список параметров пуст. В фигурные скобки заключаются составной оператор (несколько операторов). Для придания тексту программы наглядности открывающая и соответствующая ей закрывающая фигурные скобки печатаются на одном уровне, а заключенный между ними текст, сдвигается на 1-2 символа вправо, вложенный блок также сдвигается вправо и т.д. Образуется иерархия вложенных блоков, придающая программе на Си характерный вид. В программе описаны переменные a, b, c, х, S вещественного типа (float). В отличие от других языков в Си учитывается регистр при определении имени переменной, т.е. s и S – разные переменные. Функции printf и scanf содержатся в заголовочном файле stdio.h и служат для вывода на экран и ввода с клавиатуры соответственно. Управляющие символы \n в функции printf служат для перевода на новую строку. Символ & в функции scanf указывает на адрес вводимой переменной. Ввод и вывод переменных вещественного типа производится в формате f. Признаком форматного вывода в функции printf является %. При выводе между знаком процента и форматной переменной f можно включить общую ширину поля вывода и число позиций после десятичной точки. Оператор return 0; служит для выхода из функции main в Интегрированную Среду, 0 является признаком успешного окончания программы. Завершает текст программы закрывающая фигурная скобка, означающая конец функции main.
3. ВЫПОЛНЕНИЕ РАБОТЫ 3.1. Наберите и выполните приведенную выше программу вычисления высот треугольника по заданным сторонам. 3.2. Составьте и выполните программу линейной структуры согласно вариантам заданий. Варианты заданий Вычислить значение функции переменных при заданных значениях параметров: 1. x=4y2/(4z-2t3) при t=1; z=3; y=sin t. 2 x=4y3-z/t при t=2; z=3; y=cos(t+z). 3. x=6t2-(z+1)/y2 при y=2; z=4; t=sin(2+z). 4. x=(8z2+1)/(y+t2) при z=1; t=2; y=t+z. 5 x=8z / (et+2)-y2 при t=3; z=ctg t +2; y=4. 6. x=8z/(et+2)-y2 при t=1; z=t+2; y=4. 7. x=2y+3 sh t- z при y=2; t=5 / (1+y2); z=4 8. x=3 y2/ (4 tg z-2t2) при t=0.5; z=6; y=t+2 ctg z. 9. x=4y2 /(4y ez - 2t3) при t=1; z=3; y=sin t. 10. x=4 ln y3-z / t при t=2; z=3; y=cos(t+z). 11. x=6 t2- (ctg z+1)/ y2 при y=2; z=4; t=sin(2+z). 12. x=(8z2+1)/(y et +t2) при z=1; t=2; y=tg t+z. 4. КОНТРОЛЬНЫЕ ВОПРОСЫ 4.1. Что такое алгоритм линейной структуры, программа линейной структуры? 4.2. Для чего используются заголовочные файлы? 4.3. Структура программы на языке Си. Лабораторная работа №2 Программы разветвлённой структуры 1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении алгоритмов и программ разветвленной структуры. 2. ОСНОВНЫЕ СВЕДЕНИЯ Алгоритм разветвленной структуры - это алгоритм, в котором вычислительный процесс осуществляется по одной из ветвей. Если количество ветвей две – то используется условный блок, если больше – то множественный выбор. В программах используют соответственно условный оператор IF или оператор SWITCH для реализации разветвленного алгоритма. 2.1. Условный оператор IF Условный оператор в языке Си имеет формат: if (условие) оператор1; else оператор2; (полная форма) или if (условие) оператор1; (сокращенная форма). Если оператор1 и оператор2 состоят из одного оператора, то в фигурные скобки они не заключаются. Если оператор1 и/или оператор2 являются составным оператором (несколько операторов), то он заключается в фигурные скобки. Условие всегда заключается в круглые скобки. В качестве примера приведем программу вычисления наибольшего из значений функции y1=x²+1, y2=7-x², y3=x+1 для любого х. //lab2_prim1.c #include <stdio.h> main() { float x,y1,y2,y3,max; printf("Введите x\n"); scanf(“%f “,&x); y1=x*x+1; y2=7-x*x; y3=x+1; if (y1>y2) max=y1; else max=y2; if (y3>max) max=y3;
printf (“ x=%8.2f y1=%8.2f y2=%8.2f y3=%8.2f max=%8.2f\n”,x,y1,y2,y3,max); } 2.2 Множественный выбор В программах с множественным выбором используется переключатель switch, который сравнивает значение выражения, указанного за ним, и выполняет один из операторов, метка которого совпадает с этим значением. Общий вид: Switch (выражение) { case метка_1: список_операторов_1; ………………………………………. case метка_n: список_операторов_n; default: операторы; } Значения выражения и меток должны быть целочисленными константами. Например, определим количество дней по введенному номеру месяца. //lab2_prim2.c множественный выбор #include<stdio.h> #include<conio.h> // Заголовочный файл для работы с терминалом int m; main() { printf("\n Введите номер месяца:"); scanf("%d",&m); printf("\n В %4d месяце дней: ",m); switch(m){ case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("тридцать один\n");break; case 2: printf ("двадцать восемь \n");break; case 4: case 6: case 9: case 11: printf("тридцать\n");break; default: printf("\n Номер месяца неверен \n");} getch (); } В примере программы, если номер месяца превышает 12, выводится сообщение о неверном вводе месяца, для чего используется default. Оператор break служит для прерывания цикла проверки и перехода в конец переключателя. В случае отсутствия break, происходит переход на следующую ветвь. Функция getch, подключающаяся заголовочным файлом conio.h, ожидает нажатия любой клавиши. Это позволяет просмотреть результаты, не используя ALT+F5 для просмотра экрана пользователя. 3. ВЫПОЛНЕНИЕ РАБОТЫ Составить программы разветвляющейся структуры согласно вариантам задания 1 (используя IF) и задания 2 (используя SWITCH). Варианты задания 1 1) Даны четыре числа. На сколько их сумма меньше их произведения? 2) Даны четыре числа. Вычислить сумму положительных среди них чисел. 3) Даны четыре числа. Вычислить произведение отрицательных среди них чисел. 4) Даны четыре числа. Все отрицательные среди них числа заменить на 0. 5) Даны четыре числа. Определить сколько среди них отрицательных и сколько положительных. 6) Даны четыре числа. Определить порядковый номер наименьшего среди них.
7) Даны два числа. Большее из этих двух чисел заменить их полусуммой, а меньшее удвоенным произведением. 8) Даны три числа. Меньшее среди них заменить на 0. 9) Даны четыре числа. Найти разность между наибольшим и наименьшим среди них. 10) Даны три числа K, M и N. Поменять их значения местами таким образом, чтобы K < M < N. 11) Даны четыре разных числа. Найти среди них два наибольших. 12) Даны три числа. Поменять местами большее и меньшее из этих чисел.
4. КОНТРОЛЬНЫЕ ВОПРОСЫ 4.1. Сравните виды условных операторов Си. 4.2. Всегда ли ставятся скобки и какие в условном операторе? 4.3. Зачем ставятся в переключателе операторы break и default? 4.4. Как будет работать программа из примера без break?
Лабораторная работа №3
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|