Ввод из файла. Средства препроцессора. Структура – новый тип данных. Рекурсия. Быстрая сортировка

Страницы работы

Содержание работы

Информатика   1курс

Лаб.работа C3

Цель занятия:

1.  Проверка задания лаб.C2 – Отладчик

2.  Ввод из файла  C

3.  Средства препроцессора  C

4.  Структура – новый тип данных

5.  Рекурсия

6.  Быстрая сортировка.

Скопируйте каталог X-files\Students\Tasks\Informatika\Lab_C3  в свой каталогInform.

Ваш рабочий каталог:   Z:\Inform\Lab_C3

1.  Проверка задания лаб. C2 – Отладчик

Продемонстрировать работу с отладчиком  на примере своей задачи 2201.C .   (Показ работы с отладчиком такой же, как на Фортране) :

В текущем каталоге создайте файл input.txt с 2-мя числами:   6   8 

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

    outf = stdout;   (вместо строки    outf =fopen(...  );      )

Запуск сеанса отладки.

Пошаговое движение

Движение до курсора

Добавление переменной в окно просмотра

Заход в подпрограмму

Добавление переменной в окно просмотра

Быстрый выход из подпрограммы (используйте return в конце функции)

Конец отладки

Продемонстрируйте всё это БЫСТРО, без переспрашивания, что надо показать.

2.  Ввод из файла  C

1)  программа  DC_1.c

Для организации  ввода-вывода в Си используется библиотека <stdio.h>

Файл  stdio.h  включается в текст программы ( с помощью «препроцессора» - т.е. обработка исходного текста программы перед компиляцией). В этом файле есть определения функций ввода-вывода на системное устройство – scanf(), printf()  и т.д.

 Функция     scanf("%f", &mm);   осуществляет ввод со стандартного устройства. Чтобы функция вернула в переменную mm значение вводимое с клавиатуры, мы передаем адрес     переменной mm:     &mm,     & - операция взятия адреса.

2)  программа  DC_2.c

Ввод из файла на Си

FILE *f;         Вводим переменную  f , которая является  указателем  на некий новый тип данных, а именно на структуру типа FILE. Можно сказать что f - указатель потока-файла (для ввода-вывода).

Функция fopen("1.dat","rt")     возвращает указатель на FILE, "rt" - чтение из текстового файла (read text).

Если файл откроется, то  fopen  вернет в качестве результата указатель отличный от нуля. Этот указатель связан с типом данных, называемым -FILE, предназначенным для работы с файлами..

if ( (f = fopen("1.dat", "rt")) != NULL )         - проверка открытия файла

fscanf(f, "%lu %lu", &a, &b);       // функция чтения из потока f значений в переменные a и b. (lu – формат :   l - long, u – unsigned)

 - исправьте программу для правильной работы.

- посмотрите работу программы, если в c - положить адрес b

3) программа  DC_3.c

Программа ввода  из файла и вывода в файл   на Си.

FILE *infile, *outfile, *printer;    - подготовка указателей для работы с файлами 

//   char infilename[]="w:\\1100\\lab_11\\1.dat";   если нам необходимо указать полный путь, то используются комбинации ‘\\’   , означающие символ \

   infile = fopen(infilename, "r");          - открываем файл на чтение (read)

   outfile = fopen(outfilename, "w");     - открываем файл на запись (write)

      c = getc(infile);  // чтение одного символа из потока

             putchar(c);             // вывод символа на монитор

             putc(c, outfile);       // --"-- символа  в файл

   fclose(infile);               закрытие файла

  посмотрите в рабочем каталоге образовался  файл 1.cop - это копия файла 1.dat

4)  программа  DC_4.c

Программа    считывания нажатия клавиш с клавиатуры

#include <conio.h>  -    подключение библиотеки среднего уровня для В/В с терминала. Эта библиотека использует особенности работы «консоли» семейства ЭВМ  - PC IBM. Эта библиотека не реализована под другими ОС- нет переносимости программы.

kbhit()   -  функция для контроля нажатия клавиш

Когда клавиша нажата, то значение кода клавиши в программе получают с помощью функции getch()

    c = getch();                          // чтение нажатой клавиши

Если на клавиатуре нажата не цифра или буква, а нажата какая-то «специальная»    клавиша, то  клавиатура выдаст  2-х байтовый код, при этом  1-ый байт равен 0.

2-х байтовый код с клауиатуры называется расширенный код ASCII (extended code).

Поэтому проверив первый байт можно определить следует ли читать второй байт:

             if (c==0)  extended = getch( );        // в этом случае мы читаем второй байт

    if(extended== 59) break;    выход из цикла осуществляется, если введеный расширенный код – это код клавиши F1

5)  программа  Dc_5.c

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Методические указания и пособия
Размер файла:
61 Kb
Скачали:
0