Часть 2. составление и отладка программы. вычисление и обработка результатов

Порядок выполнения лабораторных работ

1 Изучите теоретический материал к лабораторной работе.

2 Ознакомьтесь с примерами программ на языке С.

3 Составьте алгоритм и программу по указанному варианту задания.

4 Отладьте программу и выполните расчеты на ЭВМ.

5 Оформите отчет о выполненной работе.

Содержаниеотчета

Отчет должен содержать:

1) цель работы;

2) условие задачи;

3) блок-схему алгоритма решения задачи;

4) Программу;

5) решение задачи (листинг) на ЭВМ;

6) краткие выводы по работе.

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

Изучение интегрированной среды С

(2 часа)

Цель работы: научиться использовать интегрированную среду С.

Теоретические сведения

Вид интегрированной среды и ее возможности зависят от типа и версии компилятора.

Пример

/* ЗАНЯТИЕ N 1

Разработал Петров Ю.В. */

/* <-Это начало многострочного комментария

Это окончание многострочного комментария -> */

// <-Это однострочный комментарий

#include <stdio.h> //Директива препроцессора (#include) включает

#include <conio.h> //Заголовочные файлы с расширением (.h)

void main(void) //Главная функция

{ //Начало составного оператора (блока, тела функции)

clrscr(); //Функция очистки экрана

printf("\n\t Здравствуй,\n"); //Функция вывода на экран

printf("\n мир!"); // '\n' '\t' -управляющие

// последовательности

} //Конец составного оператора (блока, тела функции)

/* Результат выполнения программы

Здравствуй,

мир! */

Ход работы

1 Выполнить загрузку интегрированной среды разработки С (IDE) для Turbo C, расположенной в каталоге N:\APL\TC\BIN\TC.EXE, из активной директории.

2 Изучить особенности IDE (структуру меню и подменю), а также повторить возможности текстового редактора (типа Brief), изучить «горячие» клавиши.

3 Выполнить загрузку программ-примеров (N:\APL\TC\LAB\*.CPP), их корректировку, сохранение и компиляцию.

4 Изучить непонятные синтаксические конструкции с использованием встроенной помощи. Скопировать пример из помощи в активное окно и изучить его работу.

5Повторить выполнение пунктов 1-4 для интегрированной среды разработки Borland C (N:\APL\BC\BIN\BC.EXE).

6Сравнить возможности IDE Turbo C и Borland C.

7 Написать отчет и сделать выводы по работе, изучив контрольные вопросы по теме.

Вопросы для контроля и самостоятельной работы

1Как осуществляется запуск и выход из IDE?

2 Как осуществляется настройка путей для подключения внешних файлов?

3 Перечислите режимы компиляции. Что они обозначают?

4 Как производится подключение библиотеки графических функций?

5 Как осуществляется открытие и закрытие окон, переход между окнами, копирование текста из окна в окно?

6 Как осуществляется модификация имени файла?

7 Что такое проект? Как проиизводится создание, дополнение и выполнение проекта?

8 Почему загрузка IDE осуществляется из активной директории?

9 Назовите «горячие » клавиши и их назначение.

10Как выделить комментарии вС?

11 Как подключиться заголовочные файлы, что они содержат?

12Что обозначается словом main()?

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

Операторы присваивания, ввода, вывода.

Программирование линейного

Вычислительного процесса

Цель работы - выработать практические навыки в написании и отладке простых С-программ на линейный вычислительный процесс.

Теоретические сведения

Одной из основных задач при программировании является ввод и вывод данных. В С для этого применяют ряд функций – printf(), scanf(), cprintf(), ecvt(), fprintf(), fread(), fscanf(), hutc(), puts(), putw(), sprintf(), vprintf(). Функция printf() осуществляет форматированный вывод в поток stdout. Объявление функции находится в заголовочном файле <stdio.h>.

Синтаксис объявления функции

printf() #includ <stdio.h> printf (const char* format [,argument,…]);

В скобках [ ] указаны необязательные элементы спецификации.

Спецификация формата, определяющая вывод аргументов, имеет вид:

%[flags] [width] [.precision] [F/N/h/l/L] type

Функция scanf() - Осуществляет форматированный ввод из потока stdin

Синтаксис #include <stdio.h>

int scanf(const char *format[,adress, ...]);

Неотображаемыми символами являются пробел ( ), символ табуляции (\t), символ перехода на новую строку (\n) и другие управляющие последовательности. Если функция scanf() встречает неотображаемый символ в форматной строке, она будет считывать, но не сохранять всю последовательность символов вплоть до следующего отображаемого символа во входном потоке.

Отображаемыми символами являются все другие символы кода ASCII, за исключением символа процента (%). Если функция scanf() встречает в строке формата отображаемый символ, то она прочитает, и сохранит соответствующий ему символ.

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

Спецификация формата функции …scanf()имеет следующий вид

% [*] [widht] [F|N] [h|l|L] <type>

Спецификация формата начинается с символа процента (%). После этого символа следуют символы спецификации. Ниже представлено общее описание строки формата scanf(), управляющей формированием потока данных.

Символ или спецификатор Чем управляет или что определяет
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru *- подавление назначения width – ширина поля Size часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -   часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru - Отменяет присваивание следующего поля ввода Максимальное число считываемых символов Изменяет размер по умолчанию адресного аргумента

Символы типа

Символ Ожидается на входе Тип аргумента
d D o O i I u U x X e, E f g, G s c Десятичное целое Десятичное целое Восьмеричное целое Восьмеричное целое Десятичное целое Десятичное целое Десятичное целое без знака Десятичное целое без знака Шестнадцатеричное целое Шестнадцатеричное целое Число с плавающей запятой Число с плавающей запятой Число с плавающей запятой Строка символов Символ Указатель на int (int *arg) Указатель на long (long *arg) Указатель на int (int *arg) Указатель на long (long *arg) Указатель на int (int *arg) Указатель на long (long *arg) Указатель на unsigned int (unsigned int *arg)   Указатель на unsigned long (unsigned long *arg)   Указатель на int (int *arg)   Указатель на long (long *arg)   Указатель на float (float *arg)   Указатель на float (float *arg)   Указатель на float (float *arg)   Указатель на массив символов (char arg[ ]) Указатель на символ (char *arg)

Пример

/* ЗАНЯТИЕ N 2

Разработал Сидоров К.В. */

#include <stdio.h> //Директива препроцессора (#include) включает

#include <conio.h> //Заголовочные файлы с расширением (.h)

#include <string.h>

int a; //Объявление глобальной переменной типа int

int main(void) //Главная функция

{//Начало составного оператора (блока, тела функции)

char c,buf[20]; //Объявление локальных переменных

char *pst="\"slovo\"";//Объявление локальной переменной c

float f=26.6; //инициализацией

double d;

clrscr(); //Функция очистки экрана

printf(" Ввод переменной типа char: "); //Функция вывода на экран

fflush(stdin); //Функция очистки буфера клавиатуры

scanf("%c",&c); //Функция ввода данных,

// & - операция взятия адреса

printf(" Вывод переменной типа char: ");

printf("%c\n",c);

printf("\n Ввод переменной типа int: ");

scanf("%d",&a);

printf(" \t Вывод переменной типа int\n");

printf(" Формат вывода (int): +6d #6o #8x\n");

printf("\t\t |%+6d|%#6o|%#8x|\n ",a,a,a);

printf("\n Ввод переменной типа int: ");

scanf("%d",&a);

printf("\t Вывод переменной типа int\n");

printf(" Формат вывода (int): -6d +6d #8d\n");

printf("\t\t |%-6d|%+6d|%#6d|\n",a,a,a);

printf("\n Вывод исходной cтроки: %s\n\n",pst);

printf(" Ввод cтроки в массив: ");

scanf("%s",buf);

printf(" Вывод cтроки из массива: %s\n\n",buf);

printf(" Ввод переменных типа float and double (через пробел):\n");

printf("\t\t ");

scanf("%f %lf",&f,&d);

printf("\t Вывод переменных типа float and double\n");

printf(" Формат вывода (float): 10.6f 10.6e +10.6g\n");

printf("\t\t |%10.6f|%10.6e|%+10.6g|\n",f,f,f);

printf(" Формат вывода (double): 10.8lf 10.8e 10.8g\n");

printf("\t\t |%10.8lf|%10.8e|%+10.8g|\n ",d,d,d);

getche(); //Функция ввода символа с клавиатуры

return 0; //Оператор возврата значения из функции (0)

} //Конец составного оператора (блока, тела функции)

/* Результат выполнения программы

Ввод переменной типа char: u

Вывод переменной типа char: u

Ввод переменной типа int: 78

Вывод переменной типа int

Формат вывода (int): +6d #6o #8x

| +78| 0116| 0x4e|

Ввод переменной типа int: 90

Вывод переменной типа int

Формат вывода (int): -6d +6d #8d

|90 | +90| 90|

Вывод исходной cтроки: "slovo"

Ввод cтроки в массив: символы 45!"#:$.;?%;?

Вывод cтроки из массива: символы 45!"#:$.;?%;?

Ввод переменных типа float and double (через пробел):

78.89 6778.0

Вывод переменных типа float and double

Формат вывода (float): 10.6f 10.6e +10.6g

| 78.889999|7.889000e+01| +78.89|

Формат вывода (double): 10.8lf 10.8e 10.8g

|6778.00000000|6.77800000e+03| +6778| */

Ход работы

1 Изучить теоретические сведения.

2 Выполнить загрузку интегрированной среды разработки С (IDE) для
Borland C, расположенной в каталоге N:\APL\BC\BIN\BC.EXE, из активной директории.

3Ознакомиться с форматом функций printf()иscanf().

4 Скопировать примеры для функций printf, scanf из встроенной помощи в активное окно и изучить их работу. Изучить синтаксические конструкции, приведенные во встроенной помощи.

5 Выполнить загрузку программ-примеров (N:\APL\TC\LAB\*.CPP),их корректировку с использованием различных возможностей функций printf (), scanf (),сохранение файлов и компиляцию.

6 Написать отчет и сделать выводы по работе.

7 Подготовиться к защите лабораторной работы, изучив вопросы по данной теме, изучив контрольные вопросы по теме.

Задание к лабораторной работе

Составьте программу для вычисления функции b=f(x,y,z), где z=j(x,y). Вид функции и исходные данные приведены в таблице 1.

Таблица 1

Вар. f(x,y,z) j(x,y) x y
e|x-y|(tg2z)x часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -4,52 0,75
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 2,87 0,84
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 1,82 18,25
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 5,34 3,85
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -2,75 -1,42
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 1,54 -3,26
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 1,82 18,23
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -0,85 1,25
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 0,12 -8,75
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 1,58 3,42
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 0,42 -0,87
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -15,24 4,67
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 6,55 -2,78
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 0,84 0,65
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 1,12 0,87
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 0,27 4,38
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 6,35 7,32
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 0,42 1,23
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 4,32 -0,54
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 0,83 2,38
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -0,93 -0,25
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 3,25 4,12
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -0,72 -1,42
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 3,98 -1,63
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 2sin(px+y) 3,91 -0,51
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -0,62 5,54
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -4,58 2,32
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -3,44 5,28
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 5,48 2,25

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

Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... else, условная операция (?:).

Цель работы: Изучить реализацию в языке ветвящихся вычислительных процессов . Научиться писать программы, используя операторы: ветвления if...else, переключения switch в паре с операторомbreak,оператор перехода goto, тернарную условную операцию(?:).

Теоретические сведения

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

Оператор if…else(если…иначе)

Формат оператораif…elseприведен ниже:

if(<выражение>) <оператор 1>

[else <оператор2>]

Действия оператора зависят от значения выражения. Реализация различных возможностей выполняется следующими способами. Если <выражение> в скобках не равно Æ(“Истинно”), то будет выполнятся <оператор1>. В противном случае, если указанное <выражение> равно Æ (“Ложно”), то будет выполняться <оператор2> в блоке else,если он присутствует.

В теле оператора ifможет находиться один или более операторов. Если должны выполняться два или более операторов, их необходимо заключить в операторные скобки: "{"и"}". <Выражение> представляет собой запись логического условия или условий. Например: 1) if(i<=j)...; 2) if(size= =a)...; 3) if(t>10 && v<3) ..; 4) if(a){…}else{…}; 5) if(!a){…}else{…}.

В первом случае <выражение>истинно, если значение переменнойi будет меньше или равно значению переменной j; во втором случае условие будет истинно, если значения переменных size и a будут равны; в третьем выражении истина будет соблюдаться, когда переменная tбудет больше десяти “И” (&&)переменная v будет меньше трех. В четвертом случае первый блок будет выполняться при ане равном Æ, в противном случае выполняется блок после else. В пятом выполняются действия, обратные, указанные в четвертом варианте. Вместо переменных можно использовать выражения, которые будут непосредственно вычисляться, например: if ( (i+2)/3 < 4*j)...выделение. Основные операции, которые ставятся между сравниваемыми величинами, следующие :

= = - знак "равно" (Не путать с присваиванием "="(!)); ! = - знак "не равно"; < -знак "меньше"; <= - знак "меньше или равно";   > - знак "больше"; > = - знак "больше или равно".

Основные логические операции, которые ставятся между сравниваемыми выражениями (если их два как в примере 3 или более), следующие :

!- операция "НЕ". Пример: if ( !(num % 2) )... // истина -еслиnumнечетно.

&& - операция "И". Пример 3 (см. выше).

||- операция "ИЛИ".Пример: if ( i+n*2<l || i%2=0)...

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

Пример

...

printf("Ввести три числа через пробел: ");

scanf(" %d%d%d ", &a, &b, &c);

if (a<=b && a<=c) printf("\ n Наименьшее: %d", a);

else

if (b<=a && b<=c) printf("\ n Наименьшее: %d", b);

else printf("\ n Наименьшее: %d", c);

...

Ход работы

1 В соответствии с индивидуальным заданием разработать программу с применением операторов ветвления, выбора варианта, разрыва, перехода (при составлении программы использовать операторы if…else).

2 Набрать программу и устранить ошибки.

3 Изучить работу операторов, различные возможности их применения.

4 Получить результаты.

5 Оформить отчет и сделать выводы по работе, изучив контрольные вопросы по теме.

Индивидуальное задание к лабораторной работе №5

Вычислить значение функции

y = f(x), где

ì f1(z), если z < 0;

x = í f2(z), если 0 £ z £ 8;

î f3(z), если z > 8;

z = cos(с).

Значения функций приведены в таблице 5.1.

Таблица 5.1 - индивидуальное задание

Вар. f(x) f1(z) f2(z) f3(z) c
x2+8x-6 z3-3z2 zln(z) Ez-e-z 5,1
X3lnx2 e-z+3z ln|z| Cosz+z2 5,4
X1/4+sinx 2z-ln|z| tgz-2z Sin3z 4,1
X4+2sinx2 sinz+tgz cos3z+3/z Z2+lnz2 3,2
Cosx3 z2+2sinz lnz+2z Ez+1/z 4,7
Sinx+2lnx 2z+tgz lnz4+2z Cosz+2z 1,3
Sin4x2 sinz2-z3 часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 2sinz2 1,6
Tgx-4x3 1/cos2z z-ln|z| Z3+sinz 1,5
Lnx-e2x z2+ez cos4z/z3 Tg(z+1/z) 2,7
2x-lnx 2cosz+1/z z3-2ln|z| Tg2z+z3 3,8
3x-sinx 3tg3z 1/cos4z E2z+sinz 1,6
4x2+cosx 3z/sinz z2+2sinz 2z-ln|z| 2,4
часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru +cosx z2+lnz2 ez+1/z Z4-sinz 4,1
x1/3+2x ln|cosz| 2z+ez Tg2z 2,5
Sin4x+2x z5/sin2z e-2z+tgz Cos4z+z1/3 3,2
Tg4x+1/x z/sinz1/5 2ztg3z Z часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru +8 1,4
Ln(1/x) zsin2z-8 lnsinz0,8 часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru -2,5 2,3
e2x+4x cos(p /4)-z 1/(ez+1) arctg(z+3) 4,1
Cosx4+x/2 sin(z+30° ) lncos(pz/6) e-tg(z-2) 3,2
2tgx+ex z+cos(p +z) z3+z1/3 Z4-lnz 2,8
2lnx2 arccosz2 sinz+lncosz Z3-sin(p x) 1,7
Cos2x/3 z2+ln(z+4) e(z-5)+sinz часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru 2,2
1/tgx4 e-4z+2+z2 cos(z1/3+2) Sin(p +4z2) 5,6
e2x-x3 tg(z2+ часть 2. составление и отладка программы. вычисление и обработка результатов - student2.ru ) ln(sinz+5) Z4+z2-cosz 3,4
Tgx-2lnx arcsin(z+3) z3-z2+cosz Ln(z3+4z) 2,5
Cosx4+x/2 lnsinz0,8 cos(p /4)-z Z/sinz1/5 3,7
Ln(x+x2) 2ztg3z sin(p +4z2) Z3+z1/3 2,6
Cosx4+2x tg(z+1/z) e2z+sinz Cosz1/5 3,8
Sin4x+2x z2+lnz2 cos3z+3/z Cos(p /4)-z 5,8
3ln(x2+5) z4-lnz sinz+tgz Sinz+lncosz 3,5

Контрольные вопросы для подготовки и самостоятельной работы

1Какой тип должно иметь <выражение> в операторахifи switch?

2Можно ли использовать оператор goto для передачи управления наelse, метку case…; default:?

3С помощью каких операторов можно досрочно завершить выполнение операторов if…else, switch?

4 Можно ли использовать в качестве <выражения> в оператореswitch указатель?

5 Можно ли использовать в качестве константного <выражения> в операторе switchконстанту?

6 Обязательно ли использовать операторbreakв операторе switch? Каково его действие? Что происходит при отсутствии break?

7 Какому из вложенных операторов if относится else при наличии и отсутствии операторных скобок ¢¢{¢¢и ¢¢}¢¢.

8 Какие типы операндов допустимы в условной операции (? :)?

9 Объясните работу операторов в приведенных примерах.

10 Как объявить и использовать метки в программе?

Лабораторная работа 7

Наши рекомендации