Методическая разработка по C.45 страниц

–PAGE_BREAK–File, найти, открыть и переименовать какой-либо файл из каталога примеров пакета Turbo C++.

                 Используя команды экранного меню Edit, отработать приемы редактирования.

Контрольные вопросы.

1.Какая команда позволяет сохранить на диске файл, который находится в активном окне?

2.Какая команда отображает на экране блок диалога, позволяющий открыть файл?

3.Какая команда позволяет распахивать на весь экран активное окно?

4.Для чего служит команда Change Dir?

5.Какая команда позволяет осуществлять циклическое перемещение от одного открытого окна к следующему?

6.Какая команда позволяет выполнять программу в режиме отладки с отслеживанием внутри функции?

7.Для чего служит команда Inspect?

8.Какая команда позволяет выполнять программу в режиме отладки, выполняя функцию за один шаг?

9.Какая команда позволяет удалить текст из окна не помещая его в текстовый буфер?

10.Для чего служит команда Arguments?

11.Какая команда позволяет копировать выбранный текст в текстовый буфер?

12.Какая команда позволяет заносить выбранный текст в текстовый буфер и удалять выбранный текст из окна?

13.Для чего служит команда Trace Into?

14.Какая команда позволяет отображать на экране кадр контекстной подсказки?

15.Какая команда позволяет осуществить переход к предыдущей ошибке?

16.Какая команда позволяет инициализировать программу?

17.Какая команда позволяет компилировать в OBJ-файл?

18.Какая команда позволяет выполнять программу?

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

20.Для чего служит команда DOS Shell?

21.Какая команда позволяет включить или выключить полный набор меню?

22.Какая команда позволяет регенерировать изображение на экране?

23.Какая команда позволяет сохранить файл под другим именем?

24.Для чего служит команда Get Info?

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

Ввод — вывод данных

(2 часа)
Цель работы:Изучение структуры исполняемого файла, типов данных и операторов ввода-вывода системы TURBO C++.

Функция Main

 Каждый исполняемый файл системы (Турбо) Си (программа) должен содержать функцию main.

 Код- задающий тело функции main, заключается в фигурные скобки {и}.

Общая структура функции main такова:
 main()

 {

 /* Код, реализующий main */

 }

 

 Комментарии
 Текст на (Турбо) Си, заключенный в скобки /* и */, компилятором игнорируется. Комментарии служат двум целям: документировать код и облегчить отладку. Если программа работает не так, как надо, то иногда оказывается полезным закомментировать часть кода ( т.е. вынести ее в комментарий ), заново скомпилировать программу и выполнить ее. Если после этого программа начнет работать правильно, то значит, закомментированный код содержит ошибку и должен быть исправлен.

 
Директивы Include

 

Во многие программы на (Турбо) Си подставляются один или несколько файлов, часто в самое начало кода главной функции main.
Появление директив

 #include

 #include «файл_2»

 …

 #include

приводит к тому, что препроцессор подставляет на место этих директив тексты файлов файл_1, файл_2,…, файл_n соответственно.

Если имя файла заключено в угловые скобки , то поиск файла производится в специальном разделе подстановочных файлов. В отличие от многих других операторов (Турбо) Си директива Include не должна оканчиваться точкой с запятой.
Макро

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

 #define pi 3.1415926

связывает идентификатор pi со значением 3.1415926. После значения макро (;) не ставится.
Типы данных

В (Турбо) Си переменные должны быть описаны, а их тип специфирован до того, как эти переменные будут использованы.

При описании переменных применяется префиксная запись, при которой вначале указывается тип, а затем — имя переменной.

Например:

 float weight;

 int exam_score;

 char ch;

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

Переменные можно инициализировать в месте их описаний.

 Пример:

 int height = 71 ;

 float income =26034.12 ;
Простейшими скалярными типами, предопределёнными в (Турбо) Си, являются

 char Представляется как однобайтовое целое число

 int Двубайтовое целое

 long Четырёхбайтовое целое

 float Четырёхбайтовое вещественное

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

 printf(“\nВозраст Эрика — %d. Его доход $%.2f”,age,income);

Предполагается, что целой переменной age (возраст) и вещественной переменной income (доход) присвоены какие-то значения.

Последовательность символов “\n” переводит курсор на новую строку.

Последовательность символов «Возраст Эрика -» будет выведена с начала новой строки. Символы %d — это спецификация для целой переменной age. Следующая литерная строка ” Его доход $ “. %2f — это спецификация ( символ преобразования формата ) для вещественного значения, а также указание формата для вывода только двух цифр после десятичной точки. Так выводится значение переменной income

Символ

формата

    Тип выводимого объекта

%с                               char

 %s                              строка

 %d                              int

 %o                             int ( в восьмеричном виде )

 %u                  unsigned int

 %x                  int ( в шестнадцатеричном виде )

%ld                 long ( в десятичном виде )

%lo                 long ( в восьмеричном виде )

%lu                 unsigned long

%lx                 long ( в шестнадцатеричном виде )

%f                   float/double ( c фиксированной точкой)

 %e                  float/double ( в экспоненциальной форме )

%g                   float/double ( в виде f или е в зависимости                                  от значения )

%lf                  long float ( c фиксированной точкой )

%le                 long float ( в экспоненциальной форме )

 %lg                long float ( в виде f или е в зависимости

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

 Каждой вводимой переменной в строке функции scanf должна соответствовать спецификация. Перед именами переменных необходимо оставить символ &. Этот символ означает «взять адрес».
Пример:

             #include

             main()

             {

             int weight, /*вес*/

                        height; /*рост*/

             printf(” Введите ваш вес: “);

             scanf(“%d”, &weight);

             printf(” Введите ваш pocт: “);

             scanf(“%d”, &height);

             printf(“\n\nВес = %d, рост = %d\n”,

                         weight,height);

             }

Задание:

 Составить и распечатать программу вывода на экран своих анкетных данных различного типа: — вводимых с клавиатуры,

                          — с помощью директивы define,

                          — инициализированных при описании.

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

Операторы и операции

(2 часа)

Цель работы: Изучение арифметических, логических операций и операций отношения и присваивания.

 Основу языка (Турбо) Си составляют операторы. Оператором-выражения называют выражение, вслед за которым стоит точка с запятой. В (Турбо) Си точки с запятой используются для разделения операторов. Принято группировать все операторы в следующие классы: присваивания, вызов функции, ветвления и цикла.

 В оператореприсваиванияиспользуется операция присваивания =,

 Например:
             c = a * b;
 Действие такого оператора можно описать следующими словами: ” с присваивается значение а, умножение на b “. Значение, присваиваемое переменной с, равняется произведению текущих значений переменных а и b.

 Операторы часто относятся более чем к одному из четырех классов.

 Например: оператор:

             if ( ( c = cube( a * b ) ) > d )

             …

 составлен из представителей следующих классов: присваивания, вызов функции, и ветвление.

 К понятию оператора вплотную примыкает понятие операции.

Различаютследующие группы операций (Турбо) Си: арифметические операции, операции отношения, операции присваивания, логические операции, побитовые операции, операция вычисления размера (sizeof) и операция следования (запятая).

Арифметические операции
 К арифметическим операциям относятся: сложение (+), вычитание (-), деление (/), умножение (*) и остаток (%). Все операции (за исключением остатка) определены для переменных типа int, char, float. Остаток не определен для переменных типа float. Все арифметические операции с плавающей точкой производятся над операндами двойной точности.

 

Операции отношения

 

В языке определены следующие операции отношения: проверка на равенство (==), проверка на неравенство (!=), меньше (), больше или равно (>=).

Все перечисленные операции вырабатывают результат типа int. Если данное отношение между операндами истинно, то значение этого целого — единица, а если ложно, то нуль.

Все операции типа больше-меньше имеют равный приоритет, причем он выше, чем приоритет операций == и !=. Приоритет операции присваивания ниже приоритета всех операций отношений. Для задания правильного порядка вычислений используются скобки.
Логические операции

 

В языке имеются три логические операции:

 && операции И (and)

 || операции ИЛИ (or)

 ! отрицание

 

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

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

Вычисление выражений, содержащих логические операции, производится слева направо и прекращается (усекается), как только удается определить результат. Если выражение составлено из логических утверждений (т.е. выражения, вырабатывающие значения типа int), соединенных между собой операцией И (&&), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается значение нуль. Если выражение составлено из логических утверждений, соединенных между собой операцией ИЛИ (||), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается ненулевое значение.

 Вот несколько примеров, в которых используются логические операции:

 if( i > 50 && j == 24)

             …

             if( value1 50 || value4

             …
Операции присваивания

 К операциям присваивания относятся =, +=, -=, *= и /=, а также префиксные и постфиксные операции ++ и –. Все операции присваивания присваивают переменной результат вычисления выражения. Если тип левой части присваивания отличается от типа правой части, то тип правой части приводится к типу левой.

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

Например:

 a = ( b = c ) * d;

 Вначале переменной d присваивается значение с, затем выполняется операция умножения на d, и результат присваивается переменной а.

 Операции +=, -=, *= и /= являются укороченной формой записи операции присваивания. Их применение проиллюстрируем при помощи следующего описания:

             a += b означает a = a + b.

             a -= b означает a = a — b.

             a *= b означает a = a * b.

             a /= b означает a = a / b.
Префиксные и постфиксные операции ++ и — используют для увеличения (инкремент) и уменьшения (декремент) на единицу значения переменной.

Семантика указанных операций следующая:

++a увеличивает значение переменной а на единицу до использования этой переменной в выражении.

а++ увеличивает значение переменной а на единицу после использования этой переменной в выражении.

–a уменьшает значение переменной а на единицу до использования этой переменной в выражении.

 a– уменьшает значение переменной а на единицу после использования этой переменной в выражении.

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

 Например:

             printf ( “\nРазмер памяти под целое %d”, sizeof( int) );

             printf ( “\nРазмер памяти под cимвол %d”, sizeof( сhar) );
Задание:Cоставить и распечатать программу, использующую оператор присваивания, арифметические операции и операцию sizeof.

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

 Функции

(2 часа)

Цель работы:Изучение логической организации программы и простейшее использование функций в Турбо Си.

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

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

 Функции имеют нуль или более формальных параметров и возвращают значение скалярного типа, типа void (пусто) или указатель. При вызове функции значения, задаваемые на входе, должны соответствовать числу и типу формальных параметров в описании функции. Если функция не возвращает значения (т.е. возвращает void), то она служит для того, чтобы изменять свои параметры (вызывать побочный эффект) или глобальные для функции переменные.

Например,функция, возвращающая куб ее вещественного аргумента:

             double cube( double x )

             {

             return x * x * x ;

             }

 Аргумент х типа double специфицируется вслед за первой открывающей скобкой. Описание extern, помещаемое в функцию main, является ссылкой вперед, позволяющей использовать функцию cube в функции main. Ключевое слово extern можно опускать, но сама ссылка вперед на описание функции является обязательной.
 Логическая организация простой программы на Турбо Си.
 (Турбо) Си предоставляет необычайно высокую гибкость для физической организации программы или программной системы.

 В табл.1 показана типичная организация небольшой программы на (Турбо) Си.

             /* Заголовки и комментарии, описывающие программу */
             /* Директивы include */

             #include имя_файла_1

             …

             #include имя_файла_n
             /* Макро */

             #define макро_1 значение_1

             …

             #define макро_n значение_n
             /* Описание глобальных переменных */

             тип_данных глобальная_переменная_1;

             …

             тип_данных глобальная_переменная_n;
             main()

             {

             /* описание extern, обеспечивающие ссылку вперед на функции                              и используемые в теле функции main */
             /* Описание локальных переменных */

             тип_данных локальная_переменная_1;

             …

             тип_данных локальная_переменная_m;
             /* Тело функции main */

             …

             }

             /* Функции, используемые в программе main */
             Тип_данных имя_функции_1( формальные параметры )

             {

             /* Описание extern, обеспечивающее ссылку вперед на функции      и используемые в теле данной функции */
             /* Описание локальных переменных */

             тип_данных локальная_переменная_1;

             …

             тип_данных локальная_переменная_u;
             /* Тело функции — 1 */

             …

             }

             …
             Тип_данных имя_функции_n( формальные параметры )

             {

             /* Описание extern, обеспечивающая ссылку вперед на функции                              и используемые в теле данной функции n */
             /* Описание локальных переменных */

             тип_данных локальная_переменная_1;

             …

             тип_данных локальная_переменная_r;
             /* Тело функции n */

             …

             }
 Cтруктура каждой функции совпадает со структурой главной программы (main). Поэтому функции иногда еще называют подпрограммами.

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

    продолжение
–PAGE_BREAK–