- •1. Основы алгоритмизации и программирования
 - •1.1. Этапы подготовки и решения задач на эвм
 - •1.2. Алгоритмы и способы их описания Понятие алгоритма
 - •Способы описания алгоритмов
 - •Структурные схемы алгоритмов
 - •1.3. Компиляция и интерпретация программ
 - •1.4. Стили программирования
 - •Процедурное программирование
 - •Функциональное программирование
 - •Логическое программирование
 - •Объектно-ориентированное программирование
 - •2.1. Пример готовой программы.
 - •2.2. Структура основной программы
 - •2.3. Алфавит языка
 - •2.4. Константы и переменные Константы
 - •Переменные
 - •Примеры записи имен переменных
 - •2.5. Арифметические выражения
 - •Примеры вычисления арифметических выражений
 - •Стандартные функции
 - •Примеры программирования арифметических выражений
 - •Контрольные задания
 - •1. Составить описания для заданных переменных
 - •2.6. Линейные вычислительные процессы
 - •Оператор присваивания
 - •Странные операторы присваивания
 - •Операторы ввода-вывода
 - •Операторы ввода исходных данных с клавиатуры
 - •Потоковый ввод данных числового типа
 - •Форматный ввод
 - •Операторы вывода данных на экран Потоковый вывод
 - •Форматный вывод
 - •Контрольные задания
 - •2.7. Разветвляющиеся вычислительные процессы
 - •Логические выражения
 - •Порядок выполнения операций в логических выражениях
 - •Условные операторы
 - •Короткий условный оператор
 - •Полный условный оператор
 - •If (логическое выражение) p1; else p2;
 - •Вложенные структуры условных операторов
 - •Оператор выбора
 - •Контрольные задания
 - •2.8. Циклические вычислительные процессы
 - •Операторы цикла с условием
 - •Оператор цикла do...While
 - •Оператор цикла с параметром
 - •2.9. Базовые алгоритмы
 - •Задача 1. Алгоритм организации счетчика
 - •Задача 2. Алгоритм накопления суммы
 - •Задача 3. Алгоритм накопления произведения
 - •Задача 4. Алгоритм поиска минимального члена последовательности
 - •Задача 5. Табулирование функции (или кратные циклы)
 - •Задача 6. Вычисление сумм последовательностей
 - •2.10. Указатели и массивы Указатели
 - •Понятие массива
 - •Общий вид описания массива
 - •Одномерные массивы
 - •Описание одномерного массива
 - •Индексированные переменные
 - •Ввод-вывод одномерных массивов
 - •Обработка одномерных массивов
 - •Задача 1. Организация счетчика
 - •Задача 2. Накопление суммы и произведения
 - •Задача 3. Поиск минимального и максимального элементов массива
 - •Двухмерные массивы
 - •Описание двухмерного массива
 - •Ввод-вывод двухмерного массива
 - •Обработка матриц
 - •2.11. Подпрограммы Структура сложной программы
 - •Функции
 - •Общий вид описания функции
 - •Обращение к функции
 - •Пример программы с функцией
 - •Механизм замены параметров
 - •Параметры-массивы в функциях
 - •Рекурсия
 - •Примеры программирования задач с использованием подпрограмм
 - •Задача 1
 - •2.12. Текстовые данные
 - •Символьный тип данных
 - •Ввод-вывод символьных данных
 - •Обработка символьных данных
 - •Ввод-вывод строковых данных
 - •Обработка строковых данных
 - •Стандартные функции обработки строк
 - •Сравнение строк:
 - •Сцепление строк
 - •Определение длины строки
 - •Копирование строк
 - •Поиск символа в стоке
 - •Пример программы для задачи с текстовыми данными
 - •Контрольные задания
 - •2.13. Динамическое выделение памяти
 - •Структуры данных Понятие структуры
 - •Обработка структур
 - •Пример задачи с использованием структурированных данных
 - •2.15. Файлы данных Понятие файла
 - •Работа с файлами
 - •Открытие файла
 - •Обработка открытого файла
 - •Закрытие файла
 - •Функции ввода/вывода
 - •Работа с текстовыми файлами
 - •Обработка бинарных файлов
 - •Контрольные задания
 - •Заключение
 - •Оглавление
 
Работа с текстовыми файлами
Файлы бывают текстовые (в которых можно записывать только буквы, цифры, скобки и т.п.) и двоичные (в которых могут храниться любые символы из таблицы). В текстовых файлах не употребляются первые 31 символ кодовой таблицы ASCII (управляющие), а символы конца строки 0x13 (возврат каретки, CR) и 0x10 (перевод строки LF) преобразуются при вводе в одиночный символ перевода строки \n (при выводе выполняется обратное преобразование). Эти символы добавляются в конце каждой строки, записываемой в текстовый файл. При обнаружении в текстовом файле символа с кодом 26 (0x26), т.е. признака конца файла, чтение файла в текстовом режиме заканчивается, хотя файл может иметь продолжение.
Создать текстовый файл можно с помощью текстового редактора и с помощью программы. Рассмотрим пример создания текстового файла. Следующая программа записывает в файл строку из 65 символов, а затем переписывает в другой файл только английские буквы.
#include "stdafx.h"
#include <string.h>
int main()
{ FILE *f, *r; // Указатели на файлы
char ch, pr[65];
char text[]="1,2,3,4,5 i caught a fish alive, 6,7,8,9,10 i let it go again!";
f=fopen("FIL1.txt","w"); // Создание нового файла FIL1.txt
fputs(text,f); // Запись в файл строки text
fclose(f); // Закрытие файла f
f=fopen("FIL1.txt","r"); // Открытие файла f для чтения
r=fopen("FIL2.txt","w"); // Создание нового файла FIL2.txt
while (!feof(f)) // Пока не конец файла
{ ch=fgetc(f); // Чтение символа ch из файла f
if (ch >='a'&&ch<='z') // Прочитанный символ - буква?
fputc(ch,r); // Запись в файл r символа ch
}
fclose(r); // Закрытие файла r
rewind(f); // Возврат указателя на начало файла f
fgets(pr,65,f); // Чтение из файла f строки в переменную pr
printf("%s\n",pr); // Вывод строки pr на дисплей
r=fopen("FIL2.txt","r"); // Открытие файла r для чтения
while (!feof(r)) // Пока не конец файла pr
{ ch=fgetc(r); // Чтение символа из файла r
putchar(ch); // Вывод символа ch на дисплей
}
printf("\n");
fclose(f); // Закрытие файлов
fclose(r);
return 0;
}
Обработка бинарных файлов
Если файл открыт в бинарном режиме, его можно записывать или считывать побайтно. Функция fseek() позволяет обращаться с бинарным файлом как с массивом и переходить к любой позиции в файле, обеспечивая возможность произвольного доступа. Если текстовые файлы являются файлами с последовательным доступом, то к бинарным файлам может применяться произвольный доступ.
Составим программу создания нового файла с информацией о городах: код, название, численность жителей.
#include "stdafx.h"
#include <conio.h>
typedef struct city
{ int kod;
char name[10];
long c; } town;
town t;
int main()
{ char c;
FILE *f;
char ch;
f=fopen("file1.dat","wb"); //открытие бинарного файла для записи
printf("\n Ввод информации о городе ");
do
{ printf("\nКод: "); scanf("%d", &t.kod);
printf("\nназвание: "); scanf("%s", t.name);
printf("\nколичество жителей: "); scanf("%ld", &t.c);
fwrite(&t, sizeof(t), 1, f); //запись в файл одной структуры t
printf("\n END Закончить? y/n ");
ch=getch();
}
while (ch != 'y');
fclose(f);
}
Выполнение этой программы приведет к созданию бинарного файла с информацией о городах.
Рассмотрим еще одну программу, которая будет читать из файла информацию о городах и выводить на экран список городов, количество жителей в которых превышает миллион.
#include "stdafx.h"
#include <conio.h>
typedef struct city
{ int kod;
char name[10];
long c; } town;
town t;
int main()
{
FILE *f;
f=fopen("file1.dat","rb"); //открытие бинарного файла для чтения
fread(&t, sizeof(t), 1, f); //чтение из файла одной структуры t
while (!feof(f))
{ if(t.c>1000000)
printf("\n%3d название: %10s количество жителей: %ld",
t.kod, t.name, t.c);
fread(&t, sizeof(t), 1, f);
}
fclose(f);
}
