Информатика 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.