- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «Microsoft Visual Studio.Net».
- •Структура программы.
- •Пример простейшей программы:
- •Представление данных.
- •Операции.
- •Ввод и вывод алфавитно-цифровой информации.
- •Математические функции.
- •Практическое задание №1.
- •Условия в вычислениях. Ветвящиеся и итерационные алгоритмы Условная операция присваивания. Операторы if ... Else и switch.
- •Ветвящиеся алгоритмы.
- •Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while.
- •Практическое задание №2.
- •Функции.
- •Определение функции.
- •Прототипы функций.
- •Вызов по значению и вызов по ссылке.
- •Вычисление функций путем разложения в ряд.
- •Поиск корней функции методом деления отрезка пополам.
- •Поиск корней функции методом касательных.
- •Практическое задание №3.
- •Массивы и указатели. Работа с файлами. Объявления массивов и указателей.
- •Доступ к элементам массива.
- •Передача массивов функциям.
- •Указатели.
- •Динамическое выделение и освобождение памяти.
- •Практическое задание.
- •Потоковые функции.
- •Низкоуровневый ввод и вывод.
- •Ввод и вывод символов, строк, слов.
- •Форматированный ввод и вывод.
- •Потоки cin, cout, cerr.
- •Практическое задание №4.
- •Структуры и объединения. Синтаксис структур.
- •Доступ к элементам структуры.
- •Передача структур в функции.
- •Структуры и битовые поля.
- •Объединения.
- •Дополнительные средства (typedef и enum).
- •Введение в объектно-ориентированное программирование. Принципы объектно-ориентированного программирования.
- •Терминология объектно-ориентированного программирования.
- •Структура как простейший класс.
- •Inline методы.
- •Указатель this.
- •Конструкторы и деструкторы.
- •Перегрузка методов класса.
- •Перегрузка операций.
- •Практическое задание.
- •Производные классы. Полиморфизм
- •Виртуальные функции
- •Использование дружественных функций.
- •Практическое задание.
- •Работа в объектно-ориентированной среде.
- •Объектно-ориентированные стековые операции.
- •Объектно-ориентированные связанные списки.
- •Практическое задание.
- •Классы iostream.
- •Потоковый ввод-вывод.
- •Буферизованные потоки.
- •Строковые потоки.
- •Двоичные файлы.
- •Вычисления в интерактивном режиме.
- •Графика в системе matlab.
- •3. Программирование m-функций.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •Глава 7. Дополнительные возможности системы matlab Объекты и классы. Переопределение операций.
- •Написание расширений matlab на языке c
- •Программные интерфейсы
- •Настройка среды для сборки проекта
- •Пример программы
- •Вызов команд среды matlab из mex-файла
Низкоуровневый ввод и вывод.
Функции низкоуровневого ввода-вывода не выполняю никакой буферизации и форматирования. Они непосредственно обращаются к средствам ввода/вывода операционной системы.
При открытии файла на этом уровне возвращается описатель файла (file handle), представляющий собой целое число, используемое затем для обращения к этому файлу при дальнейших операциях. Для открытия используется функция open(), для закрытия – функция close().
Функция read() читает данные в указанный массив, а write() – выводит данные из массива в файл, lseek() – используется для перемещения по файлу.
Низкоуровневые функции не требуют включения заголовочного файла stdio.h, вместо него используется файл io.h.
Низкоуровневая система ввода-вывода не вошла в стандарт ANSI C, поэтому ее не рекомендуют для дальнейшего использования.
Ввод и вывод символов, строк, слов.
Наиболее общими функциями являются те, которые работают с отдельными символами. Функция getc() вводит один символ из указанного файлового потока в переменную типа int:
int ic;
ic=getc(stdin);
Вводится один символ из потока stdin.
Функция putc() передает один символ в указанный файловый поток:
putc(ic,stdout);
Для стандартных потоков stdin и stdout можно использовать функции getchar() и putchar() соответственно:
int ic;
ic=getchar();
putchar(ic);
Функции getch() и putch() являются низкоуровневыми функциями. Обычно функция getch() используется для перехвата символа, введенного с клавиатуры сразу после его нажатия. Нажатия клавиши “Enter” не требуется.
Для ввода/вывода текстовых строк можно использовать функции gets(), fgets(), puts(), fputs(). Функция fgets() имеет вид:
fgets(имя_массива, размер_массива, указатель_на_поток);
Она считывает символы в указанный массив и добавляет в конце null-символ. Считывание производится до заполнения массива, или до достижения конца файла. Символ перевода строки переписывается в массив.
Для ввода и вывода целых чисел можно использовать функции getw() и putw(). Они работают с двоичными файлами.
Форматированный ввод и вывод.
Богатый ассортимент средств управления форматом позволяет легко создавать таблицы, графики или отчеты. Функциями, выполняющими этот вывод, являются printf() - для стандартного потока вывода stdout, и fprintf() – для любого потока. Функция fprintf() имеет вид:
fprintf(поток_вывода, “формат”, перем_1, перем_2,…);
Работает она аналогично printf() и выводит данные в указанный поток вывода.
Для форматированного ввода используются функции scanf() и fscanf().
Для преобразования текстовой строки можно использовать sscanf(). Она работает аналогично fscanf(), но данные берет из сроки, а не из файла.
Потоки cin, cout, cerr.
В языке С++ имеется другая библиотека ввода/вывода, определяемая заголовочным файлом iostream.h. Ввод/вывод в ней определяется набором специальных классов. Аналогами потоков stdin, stdout и stderr являются cin, cout и cerr. Они открываются автоматически при запуске программы.
Операции выделения >> и вставки <<.
Для ввода/вывода с помощью указанных потоков используются специальным образом определенные операции “занести в поток” и “получить из потока”, << и <<. Операция >> выделяет данные из входного потока и помещает в указанные переменные, а операция << помещает значения указанных переменных в поток.
Приведем пример использования потока stdin и потока cin:
scanf(“%d%lf%c”,&ivalue,&dvalue,&cvalue);
cin>>ivalue>>dvalue>>cvalue;
Аналогично для вывода:
printf(“Integer:%d double: %lf”,ivalue,dvalue);
cout<<”Integer:”<<ivalue<<” double:”<<dvalue;