Смекни!
smekni.com

Методические указания к лабораторным работам по курсу «Программирование на языках высокого уровня» (стр. 1 из 7)

Сибирский государственный университет

телекоммуникаций и информатики

Методические указания

к лабораторным работам

по курсу «Программирование на языках высокого уровня»

Язык программирования С

Новосибирск

2006

УДК 681.3.06

Ктн, доцент И.В. Перцев, ктн, доцент В.А.Перцева

Данные методические указания включают в себя 12 лабораторных работ для изучения курса «Программирование на языке высокого уровня». Эти работы помогут студентам освоить как базовые понятия программирования на алгоритмическом языке Си (интегрированная среда, программы разветвляющейся и циклической структуры, массивы), так и более сложные вопросы (рекурсии, функции, работа с файлами, работа с динамической памятью).

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

Методические указания предназначены для студентов инженерно-технических факультетов, изучающих программирование во 2-м семестре.

Кафедра Прикладной математики и кибернетики.

Для специальности 220400

Утверждено редакционно-издательским советом СибГУТИ в качестве методических указаний

Сибирский государственный университет

Телекоммуникаций и информатики, 2006г.

Введение

Язык Си является универсальным языком программирования. Первоначально он появился в операционной системе UNIX, и развивался как основной язык систем, совместимых с ОС UNIX. Сам язык, однако, не связан с какой-либо одной операционной системой или машиной; и хотя его называют языком системного программирования, так как он удобен для написания операционных систем, он может использоваться для написания любых больших вычислительных программ, программ для обработки текстов и баз данных.

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

Работа в интегрированной среде Borland С на примере программ линейной структуры

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 (“&bsol;n Введите гипотенузу и угол треугольника ”);

scanf (“%f%f “,&c,&x); // ввод значений вещественного типа

a=c*sin(x);

b=c*cos(x);

S=a*b;

printf (“&bsol;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 и служат для вывода на экран и ввода с клавиатуры соответственно. Управляющие символы &bsol;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&bsol;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&bsol;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("&bsol;n Введите номер месяца :"); scanf("%d",&m);

printf("&bsol;n В %4d месяце дней: ",m);

switch(m){

case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("тридцать один&bsol;n");break;

case 2: printf ("двадцать восемь &bsol;n");break;

case 4: case 6: case 9: case 11: printf("тридцать&bsol;n");break;

default: printf("&bsol;n Номер месяца неверен &bsol;n");}

getch ();

}

В примере программы, если номер месяца превышает 12, выводится сообщение о неверном вводе месяца, для чего используется default. Оператор break служит для прерывания цикла проверки и перехода в конец переключателя. В случае отсутствия break, происходит переход на следующую ветвь. Функция getch, подключающаяся заголовочным файлом conio.h, ожидает нажатия любой клавиши. Это позволяет просмотреть результаты, не используя ALT+F5 для просмотра экрана пользователя.

3. ВЫПОЛНЕНИЕ РАБОТЫ

Составить программы разветвляющейся структуры согласно вариантам задания 1 (использ7 уя IF) и задания 2 (используя SWITCH) .

Варианты задания 1

1) Даны четыре числа. На сколько их сумма меньше их произведения?