![](/user_photo/2706_HbeT2.jpg)
- •Ю.А Петров Программирование на языке высокого уровня
- •Часть 1
- •Введение
- •Задание
- •Комментарии
- •Идентификаторы
- •Ключевые слова
- •Константы
- •Управляющие последовательности
- •Строковые литералы
- •Константные выражения
- •Пунктуаторы
- •Операции
- •Задание на лабораторную работу 2 разработка программы линейной структуры Цель работы
- •Отчет по лабораторной работе должен содержать:
- •Задание
- •Замечания
- •Варианты заданий
- •Классификация ошибок
- •Ошибки, не обнаруженные компилятором
- •Ситуации, возникающие при неверных результатах
- •Отладка программы
- •Предупреждения
- •Первое сообщение об ошибке
- •Использование команд Find и Replace
- •Быстрое обнаружение ошибочных строк
- •Продолжение отладки
- •Использование встроенного отладчика
- •Разница между командами Step Into и Step Over
- •Дополнительные средства отладки
- •Работа с точками останова
- •Краткая характеристика объектов
- •Формат 1:
- •Стиль программирования
- •Задание на лабораторную работу 4 объекты и их характеристики Цель работы
- •В отчете по лабораторной работе следует представить:
- •5 Структурное программирование
- •Пример1
- •Пример 2
- •Задание на лабораторную работу 5 разработка программы со структурой «развилка» Цель работы
- •Задание:
- •Варианты задания
- •Задание на лабораторную работу 6 создание цикловых программ с фиксированным числом повторений Цель работы
- •Задание
- •Варианты задания
- •Задание на лабораторную работу 7 создание программ с итерационными циклами Цель работы
- •Задание
- •Варианты задания
- •Пояснения к выполнению лабораторной работы 7
- •6 Агрегаты данных
- •Структура
- •Объединения
- •Перечисления
- •Int array[3]; // Объявление определения;
- •Многомерные массивы
- •Вывод в файловый поток
- •Чтение из входного файлового потока
- •Чтение целой строки файлового ввода
- •Определение конца файла
- •Проверка ошибок при выполнении файловых операций
- •Закрытие файла
- •Управление открытием файла
- •Выполнение операций чтения и записи
- •Задание на ргз 1 использование структур данных при решении задач Цель работы
- •Задание
- •Варианты задания
- •7 Модульное программирование
- •Задание на ргз 2 использование модульного программирования при решении задач
- •Перемещаемые панели инструментов
- •Меню File
- •Меню Edit
- •Меню View
- •Меню Insert
- •Меню Project
- •Меню Build
- •Меню Tools
- •Меню Window
- •Список открытых окон
- •Меню Help
- •Приложение 2 Некоторые функции языка с
- •Используемая литература
- •Оглавление
- •5 Структурное программирование 53
Меню Window
Все команды меню Window (рис. П14), за исключением команды Docking View, в принципе соответствуют стандартному набору команд данного меню во всех приложениях Windows.
New Window
Данная команда создает новое окно редактирования для текущего проекта.
Split
Команда Split позволяет разбить окно редактирования на несколько частей.
Docking View
С помощью этой команды можно закрепить панель инструментов у любого края родительского окна либо сделать ее свободно перемещаемой.
Close
Данная команда закрывает активное окно. Если содержимое окна не было предварительно сохранено, то будет выдано предупреждающее сообщение.
Close All
Эта команда закрывает все открытые окна. Если содержимое хотя бы одного из окон не было предварительно сохранено в файле, будет выдано предупреждающее сообщение.
Next
Посредством команды Next, относящейся к меню Window, можно переключаться между открытыми окнами.
Previous
Эта команда аналогична команде Next, но в отличие от последней осуществляет переходы между окнами в обратном порядке.
Cascade
Данная команда отображает на экране все открытые окна каскадом, что дает возможность пользователям видеть имена файлов в заголовках всех окон.
Tile Horizontally
Эта команда располагает все открытые окна одно над другим. Такой вид отображения удобен для сравнения исходного и модифицированного текста программ.
Tile
Vertically
Команда Тilе Vertically располагает все открытые окна рядом друг с другом. Такой вид отображения удобен при необходимости произвести сравнение иерархических структур.
Список открытых окон
В нижней части меню показан динамически обновляемый список всех открытых на данный момент окон. Можно сделать активным любое окно, щелкнув на его имени в списке.
Меню Help
Меню Help (рис. П15) содержит стандартные для приложений Windows команды Contents, Search и Index, а также некоторые дополнительные команды.
Contents / Search... / Index
Эти стандартные команды предоставляют доступ к интерактивной справочной системе программы.
Use Extension Help
Когда включена данная опция, в качестве справочной системы вызывается расширенный файл справки, а не MSDN.
Keyboard Map...
Данная команда выводит список и описание всех команд Visual C++ с перечнем связанных с ними сочетаний клавиш.
Tip of the Day...
Команда Tip of the Day... выводит окно с различными советами, касающимися работы в среде Visual C++.
Technical Support
Данная команда отображает раздел справочной системы, посвященный вопросам технической поддержки.
Microsoft on the Web
В этом подменю содержатся команды перехода к Web-страницам в Internet, посвященным Visual C++ и различным техническим вопросам.
About Visual C++
About... – стандартная команда всех приложений Windows – отображает информацию о версии программы, авторских правах, зарегистрированном пользователе и установленных дополнительных компонентах.
Приложение 2 Некоторые функции языка с
Прототип |
Описание |
Математические функции (math.h) | |
double acos(double x); |
Возвращает угол (от 0 до π радиан), косинус которого равен х |
double asin(double x); |
Возвращает угол (от –π/2 до π/2 радиан), синус которого равен х |
double atan(double x); |
Возвращает угол (от –π/2 до π/2 радиан), тангенс которого равен х |
double atan2(double x, double y); |
Возвращает угол (от –π до π радиан), тангенс которого равен y/х |
double cos(double x); |
Возвращает косинус х (x – в радианах) |
double sin(double x); |
Возвращает синус х (x – в радианах) |
double tan(double x); |
Возвращает тангенс х (x – в радианах) |
double cosh(double x); |
Возвращает гиперболический косинус х |
double sinh(double x); |
Возвращает гиперболический синус х |
double tanh(double x); |
Возвращает гиперболический тангенс х |
double exp(double x); |
Возвращает значение экспоненты с аргументом х (ex) |
double ldexp(double x,int p); |
Возводит 2 в степень р, умноженную на х |
double log(double x); |
Возвращает натуральный логарифм х |
double log10(double x); |
Возвращает десятичный логарифм х |
double modf(double x, double * p); |
Разбивает х на целую и дробную части с одним и тем же знаком, возвращает дробную часть и сохраняет целую часть по адресу р |
double pow(double x, double y); |
Возводит х в степень y |
double sqrt(double x); |
Вычисляет квадратный корень из х |
double ceil(double x); |
Возвращает наименьшее целое число, превышающее х |
double fabs(double x); |
Возвращает модуль х |
double floor(double x); |
Возвращает наибольшее целое число, не превышающее х |
int fmod(double x, double y) |
Возвращает дробную часть от x/y |
Стандартные функции ввода/вывода (stdio.h) | |
void clearerr(FILE *stream); |
Очищает индикаторы конца файла и ошибок |
int fclose(FILE *stream); |
Закрывает указанный файл |
int feof(FILE *stream); |
Проверяет на достижение конца файла |
int ferror(FILE *stream); |
Проверяет индикаторы ошибок |
int fflush(FILE *stream); |
Очищает указанный файл |
int fgetc(FILE *stream); |
Считывает следующий символ из указанного входного потока |
char * fgets(char *string, int n, FILE *stream); |
Считывает строку из указанного входного потока, располагая ее в string, число символов n-1 |
FILE *fopen(const char * pathname, char *type); |
Открывает файл, определяемый pathname. Символы type определяют тип доступа |
int fprintf(FILE *stream, const char *format-string [,argument…]); |
Записывает форматированный вывод format-string в указанный поток stream |
int fputc(int c, FILE * stream); |
Записывает символ «с» в выходной поток stream |
int fputs(const char *string, FILE *stream); |
Копирует строку string в конец потока stream |
size_t fread (void *buffer, size_t size, size_t count, FILE *stream); |
Читает объекты размера size по счетчику count из входного потока stream и располагает их в буфере buffer |
FILE *freopen (const char *pathname, char *type, FILE *stream); |
Закрывает текущий файл, связанный с потоком stream, и переназначает этот поток в файл, определяемый path-именем |
int fscanf (FILE *stream, const char *format-string [, argument ...]); |
Считывает данные по формату format-string из текущей позиции потока stream в место, определяемое заданием аргументов argument |
int fseek (FILE *stream, long offset, int origin); |
Перемещает указатель, соответствующий потоку stream, на новое место расположения, отстоящее от origin на offset байтов |
long ftell (FILE *stream); |
Получает текущую позицию указателя на файл, связанного с потоком stream |
size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream); |
Записывает элементы count длиной size из buffer в выходной поток stream |
int getc (FILE *stream); |
Читает отдельный символ из текущей позиции потока stream и изменяет соответствующий указатель на файл для указания следующего символа |
int getchar(); |
Макро getchar идентичен getc(stdin) |
char *gets(char *buffer); |
Читает строку из потока стандартного ввода stdin и запоминает ее в буфере buffer |
void perror(const char *string); |
Записывает сообщения о системных ошибках в стандартный поток ошибок |
int printf (const char *format – string [, argument...]); |
Форматирует (format-string) и печатает наборы символов и значений (argument) в выходной стандартный поток stdout |
int putc (int c, FILE * stream); |
Записывает отдельный символ "с" в текущую позицию выходного потока stream |
int putchar(int c); |
Идентична процедуре putc(c, stdout) |
int puts (const char * string); |
Записывает выбранную строку string в стандартный поток вывода stdout |
int remove(char *pathname); |
Удаляет файл, определенный по pathname |
int rename (const char * oldname, const char * newname); |
Переименовывает файл или каталог newname; oldname должно задавать path-имя существующего файла или каталога; newname не определяет имя существующего файла или каталога |
void rewind(FILE * stream); |
Перемещает указатель на файл, связанный с потоком stream, к началу файла |
int scanf(const char * format-string[[, argument...]]); |
Читает данные из потока stdin в место, определяемое аргументами arguments. Каждый аргумент должен быть указателем на значение с типом, заданным в строке формата |
void setbuf(FILE *stream, char *buffer); |
Устанавливает размер буфера и адрес |
int sprintf(char *buffer, const char *format-string[, argument...]); |
Форматирует и запоминает наборы символов и значений в buffer. Каждый аргумент argument преобразуется и выводится согласно спецификации формата в format-string |
int sscanf(const char * buffer, const char *format-string[, argument...]); |
Читает данные из buffer в расположение, задаваемое arguments. Каждый argument должен быть указателем на переменную типа, указанную в format-string |
Функции обработки строковых величин (string.h) | |
void *memchr(const void *buf, int c, size_t cnt); |
Находит первые cnt байтов из buf с целью обнаружения первого появления символа c. Поиск продолжается до тех пор, пока не будет найден указанный символ или не будут проверены все cnt байтов |
int memcmp(const void *buf1, const void *buf2, size_t cnt); |
Производит сравнение первых cnt байтов из buf1 и buf2 и возвращает значение, указывающее на соотношение этих буферов |
void memcpy (void *dest, const void *src, size_t cnt); |
Копирует cnt байтов из src в dest. Если некоторые участки src и dest перекрываются, memcpy гарантирует, что байты из перекрываемого участка, принадлежащие src, будут скопированы перед перезаписью |
void *memset (void *dest, int c, size_t cnt); |
Заполняет первые cnt байтов буфера dest символом «c». Возвращает указатель на буфер dest |
char *strcat(char *string1, char *string2); |
Добавляет string2 к string1 |
char strcpy(char *string1, const char *string2); |
Копирует string2 в string1 |
int strcmp(const char * string1, const char * string2); |
сравнивает строки string1 и string2 и возвращает значение, обозначающее их соотношение |
char *strchr(const char * string, int c); |
Возвращет указатель на первое вхождение c в string. |
size_t strcspn(const char * string1, const char * string2); |
Возвращает индекс первого символа в string1, который принадлежит множеству символов srting2 |
size_t strlen(const char * string); |
Возвращает в байтах длину строки string, при-чем нулевой символ окончания ('\0') в длину не засчитывается |
char *strncat(char * string1, const char * string2, size_t n); |
Добавляет n первых символов строки string2 к строке string1, заканчивает результирующую строку нулевым символом ('\0') и возвращает указатель на строку-приемник (string1) |
char *strncmp(char * string1, char *string2, unsigned int n); |
Сравнивает первые n символов строк string1 и string2; n – количество сравниваемых символов |
char *strpbrk(const char * string1, const char * string2); |
Находит первое вхождение в string1 любого символа из string2. Нулевой символ окончания при поиске не рассматривается |
char *strrchr(const char * string, int c); |
Находит последнее вхождение символа «c» в строке string. Нулевой символ окончания ('\0') строки string включается в поиск |
size_t strspn(const char * string1, const char * string2); |
Возвращает индекс первого символа в строке string1, который не принадлежит множеству символов string2. Это значение эквивалентно длине начальной подстроки в строке string1, которая полностью состоит из символов строки string2 |
char *strstr(const char * srting1, const char * string2); |
Возвращает указатель на первое вхождение string1 в string2. Она возвращает указатель на string1, если string1 обнаружена, и NULL – если string1 нет |
Общие утилиты (stdlib.h) | |
double atof (const char * string); |
Преобразует строку string в double |
int atoi (char *string); |
Преобразует строку string в int |
long atol (char *string); |
Преобразует строку string в long |
double strtod(const char * nptr, char **endptr); |
Преобразует строку, на которую указывает nptr, в double |
long strol(const char *nptr, char **endptr, int base); |
Преобразует строку в long десятичное целое, эквивалентное числу с данным основанием base |
int rand(); |
Возвращает псевдослучайное целое в интервале от 0 до 32767 |
void srand(unsigned seed); |
устанавливает начальную точку для генерации псевдослучайных целых. В качестве аргумента seed используется 1. Любое другое значение seed устанавливает генератор в начальную случайную точку. Функция используется для поиска сгенерированных случайных чисел |
void *calloc(size_t n, size_t size); |
Выделяет память для хранения массива из n элементов, каждый длиной size байт |
void free(void *ptr); |
Освобождает блок памяти. Аргумент ptr указывает на ранее выделенный блок памяти функциями calloc, malloc, realloc |
void *malloc(size_t size); |
Выделяет блок памяти из size байтов. Возвращает void-указатель на выделенный блок |
void *realloc(void *ptr, size_t size); |
Изменяет размер ранее выделенного блока памяти. Аргумент ptr указывает на начало блока. Аргумент size задает новый размер блока в байтах. Содержимое блока не изменяется |
void exit(int status); |
Завершает процесс после закрытия файла |
void *bsearch(const void *key, const void *base, size_t num, size_t width, int (*compare)()); |
Производит двоичный поиск в отсортированном массиве из num элементов, размер каждого элемента равен width байт. base – указатель на начало массива, key – значение ключа поиска Аргумент compare является указателем на процедуру, поставляемую пользователем, которая сравнивает два элемента массива и возвращает значение, определяющее их отношение |
void qsort(void *base, size_t num, size_t width, int (*compare)()); |
Выполняет алгоритм быстрой сортировки, чтобы отсортировать массив из num элементов, каждый элемент размером width байт. Аргумент base является указателем на базу массива, который нужно отсортировать |
int abs(int n); |
Возвращает абсолютное значение своего целого аргумента n |
long labs(long n); |
Возвращает абсолютное значение своего аргумента |
Функции обработки символов (ctype.h) | |
int isalnum (int c); |
Возвращает true, если «c» является буквой или цифрой |
int isalpha(int c); |
Возвращает true, если «c» является буквой |
int iscntrl(int c); |
Возвращает true, если «c» является управляющим символом (например, Ctrl+B) |
int isdigit (int c); |
Возвращает true, если «c» является цифрой |
int isgraph(int c); |
Возвращает true, если «c» является печатным символом, но не пробелом |
int islower(int c); |
Возвращает true, если «c» является символом нижнего регистра |
int isprint(int c); |
Возвращает true, если «c» является печатным символом |
int ispunct(int c); |
Возвращает true, если «c» является знаком пунктуации (любым печатным символом, но не пробелом, буквой или цифрой) |
int isspace(int c); |
Возвращает true, если «c» является служебным символом (пробел, новая строка, табуляция) |
int isupper(int c); |
Возвращает true, если «c» является символом верхнего регистра |
int isxdigit(int c); |
Возвращает true, если «c» является шестнадцатеричным символом |
int tolower(int c); |
Преобразует «c» в символ верхнего регистра (в строчную букву), если это возможно |
int toupper(int c); |
Преобразует «c» в символ нижнего регистра (прописную букву), если это возможно |