Шафеева практика С
.pdfПриложение Д
Сообщения об ошибках Сообщения об ошибках периода компиляции
"," expected (Нужно указать ",").
Array bounds missing "]" (Массив ограничивает отсутствие "]").
Array must have at least one element (Массив должен иметь по крайней мере один элемент).
Call of nonfunction (Нефункциональное обращение).
Call to function 'function' with no prototype (Обращение к функции "функ-
ция" без прототипа).
Code has no effect (Код не имеет эффекта).
Compound statement missing "}" (Утверждение, пропускающее "}").
Declaration is not allowed here (Здесь не допускается объявление).
Declaration missing ";" (Отсутствие объявления ";").
Declaration syntax error (Синтаксическая ошибка, объявление переменной).
Declaration terminated incorrectly (Объявления, завершенные неправильно). Delete array size missing "]" (Отсутствие скобки "]").
do-while statement missing ;OR For statement missing ; (Отсутствие ут-
верждения do-while, или отсутствие утверждения For). Expression syntax (Ошибка синтаксиса в выражении).
Extra parameter in call to function (Недопустимый параметр в обраще-
нии к функции).
Function call missing ")" (В обращении к функции отсутствует ")").
Illegal initialization (Неверная инициализация).
Illegal character 'character' (Неверный символ " символ "). Illegal structure operation (Неверная операция структуры).
Illegal use of pointer (Неверное использование указателя).
'identifier' cannot start a parameter declaration (Идентификатор не мо-
жет начать объявление параметра).
'identifier' is assigned a value which is never used (Идентификатор опреде-
ляет значение, которое ранее не использовалось).
Invalid indirection (Недопустимый ссылка).
Lvalue required (Требуется наименование выражения (адрес переменной)). Member identifier expected (Ожидается значение идентификатора).
Multiple declaration for 'identifier' (Многократные объявления для иден-
тификатора).
Must take address of a memory location (Необходимо взять адрес распо-
ложения памяти).
Non-portable pointer conversion (Преобразования указателя не переносятся).
Not an allowed type (Недопустимый тип).
Operator "[]" missing "]" (Оператор "[]" не имеет "]").
Overlays only supported in medium, large, and huge memory models
(Оверлейные программы, поддерживаемые только в среде, большие и огромные модели памяти).
61
Parameter 'parameter' is never used (Параметр "параметр" ранее никогда не использовался).
Size of 'identifier' is unknown or zero (Размер идентификатора неизвестен или нуль).
Structure required on left side of . or .* (Ошибка структуры на левой сторо-
не, или отсутствие "*").
Two consecutive dots (Наличие двух последовательных точек).
Too few parameters in call to 'function' (Несколько параметров в обраще-
нии к "функции").
Too many initializers (Слишком много инициализаторов).
Too many error or warning messages (Слишком много ошибок или преду-
преждений).
Type mismatch in parameter 'parameter' in call to 'function' (Несоответст-
вие типов в параметре "параметр" при обращении к "функции").
Type mismatch in redeclaration of 'identifier' (Несоответствия типов в по-
вторном определении идентификатора).
Value of type void is not allowed (Недопустимые значения типа).
Variable 'identifier' is initialized more than once (Идентификатор перемен-
ной инициализирована более одного раза).
Unable to open include file 'filename' (Невозможно открыть файл).
Undefined structure 'structure' (Неопределенная структура "структура"). Undefined symbol 'identifier' (Неопределенный символ идентификатора).
Undefined symbol 'symbol' in module 'module' (Неопределенный символ
"символ" в модуле "модуль").
Unexpected "}" (Непредвиденная "}").
Unknown preprocessor directive: 'identifier' (Неизвестны директивы пре-
процессора: идентификатора).
Wrong number of arguments in call of macro 'macro' (Неправильное число параметров в обращении макрокоманды " макрокоманда ").
Ошибки стадии выполнения
Division by zero (Деление на нуль).
Possibly incorrect assignment (Возможность неправильного значения). Suspicious pointer conversion (Подозрительное преобразование указателя).
Function should return a value (Функция не возвращает значение).
Математические ошибки
DOMAIN – Аргумент функции вне сферы этой функции.
OVERFLOW – Результат слишком большой, чтобы быть представленным в возвращаемом значении функции.
PLOSS – Произошла частичная потеря значимости.
SING – Специфический аргумент: аргумент функции имеет незаконную величину. Например, передается нуль в функцию, которая запрашивает ненулевую величину.
TLOSS – Полная потеря значимости. UNDERFLOW – Результат слишком мал.
62
|
|
Приложение Е |
|
|
Функции преобразования символов (файл ctype.h) |
||
|
|
|
|
Функция |
Прототип и краткое описание действий |
|
|
isalnum |
int isalnum (int c); |
|
|
|
Дает значение не нуль, если с – код буквы или цифры (А |
|
|
|
Z, а z, 0 9), и нуль – в противном случае. |
|
|
isalpha |
int isalpha (int c); |
|
|
|
Дает значение не нуль, если с – код буквы (А Z, а z), и |
|
|
|
нуль – в противном случае. |
|
|
isascii |
int isascii (int c); |
|
|
|
Дает значение не нуль, если с есть код ASCII, т.е. прини- |
|
|
|
мает значение от 0 до 127, в противном случае – нуль. |
|
|
iscntrl |
int iscntrl (int c); |
Дает значение не нуль, если с – управ- |
|
|
ляющий символ с кодами 0 00 0 01F или 0 0F, нуль |
|
|
|
– в противном случае. |
|
|
isdigit |
int isdigit (int c); |
|
|
|
Дает значение не нуль, если с – цифра (0 9) в коде ASCII, |
|
|
|
и нуль – в противном случае. |
|
|
isgraph |
int isgraph (int c); Дает значение не нуль, если с – види- |
|
|
|
мый (изображаемый) символ с кодом (0 21 0 7E), и |
|
|
|
нуль – в противном случае. |
|
|
islower |
int islower (int c); |
|
|
|
Дает значение не нуль, если с – код буквы на нижнем реги- |
|
|
|
стре (а z), и нуль – в противном случае. |
|
|
isprint |
int isprint (int c); |
|
|
|
Дает значение не нуль, если с – печатный символ с кодом |
|
|
|
(0 20 0 7E), и нуль – в противном случае. |
|
|
ispunct |
int ispunct (int c); Дает значение не нуль, если с – символ |
|
|
|
разделитель (т.е. соответствует iscntrl или isspace) и нуль – |
|
|
|
в противном случае. |
|
|
isspace |
int isspace (int c); Даетзначение не нуль, если с – обоб- |
|
|
|
щенный пробел: пробел, символ табуляции, символ новой |
|
|
|
строки или новой страницы, символ возврата каретки (0 |
|
|
|
09 0 0D, 0 20), и нуль – в противном случае. |
|
|
isupper |
int isupper (int c); |
|
|
|
Дает значение не нуль, если с – код буквы на верхнем ре- |
|
|
|
гистре (А Z), и нуль – в противном случае. |
|
|
isxdigit |
int isxdigit (int c); |
|
|
|
Дает значение не нуль, если с – код шестнадцатеричной |
|
|
|
цифры (0 9, А F, а f), и нуль – в противном случае. |
|
63
Функция |
Прототип и краткое описание действий |
|
toascii |
int toascii (int c); |
|
|
Преобразует целое число с в символ кода ASCII, обнуляя |
|
|
все биты, кроме младших семи. Результат от 0 до 127. |
|
tolower |
int tolower (int c); |
|
|
Преобразует код буквы с к нижнему регистру, не буквен- |
|
|
ные коды не изменяются. |
|
toupper |
int toupper (int c); |
|
|
Преобразует код буквы с к верхнему регистру, не буквен- |
|
|
ные коды не изменяются. |
|
|
Функции ввода-вывода для стандартных потоков |
|
|
(файл stdio.h) |
|
|
|
|
Функция |
Прототип и краткое описание действий |
|
getch |
int getch (void); Считывает один символ с клавиату- |
|
|
ры без отображения на экране. |
|
getchar |
int getchar (void); Считывает очередной символ из |
|
|
стандартного входного потока (stdin). |
|
gets |
char * gets (char *s); |
Считывает строку s из стандарт- |
|
ного входного потока (stdin). |
|
printf |
int printf (const char *format [, argument, …]); |
|
|
Функция форматированного вывода в стандартный по- |
|
|
ток stdout. |
|
putchar |
int putchar (int c); |
|
|
Записывает символ с в стандартный поток вывода |
|
|
(stdout). |
|
puts |
int puts (const char *s); |
|
|
Записывает строку s в стандартный поток вывода |
|
|
(stdout). |
|
scanf |
int scanf (const char *format [, address, …]); |
|
|
Функция форматированного ввода из стандартного по- |
|
|
тока stdin. |
|
sprintf |
int sprintf (char *s, const char *format [, argument, …]); |
|
|
Функция форматированной записи в строку s. |
|
sscanf |
int sscanf (const char * s, const char *format [, address, …]); |
|
|
Функция форматированного чтения из строки s. |
|
ungetch |
int ungetch (int c); |
|
|
Возвращает символ с в стандартный поток ввода stdin, |
|
|
заставляя его быть следующим считываемым символом. |
64
Функции для работы со строками
(файлы string.h, stdlib.h)
Функция |
Прототип и краткое описание действий |
|
atof |
double atof (const char *str); |
(stdlib.h) |
|
Преобразует строку str в вещественное число типа double. |
|
atoi |
int atoi (const char *str); |
(stdlib.h) |
|
Преобразует строку str в целое число типа int. |
|
atol |
long atol (const char * str); |
(stdlib.h) |
|
Преобразует строку str в целое число типа long. |
|
itoa |
char * itoa(int v, char *str, int baz); |
|
|
Преобразует целое v в строку str. При изображении числа ис- |
|
|
пользуется основание baz ( 2 baz 36 ). Для отрицательного |
|
|
числа и baz = 10 первый символ «минус» (-) |
|
ltoa |
char * ltoa(long v, char *str, int baz); |
|
|
Преобразует длинное целое v в строку str. При изображении |
|
|
числа используется основание (2 baz 36). |
|
strcat |
char *strcat (char *const char *si); |
|
|
Приписывает строку si к строке sp (конкатенация строк). |
|
strchr |
char *strchr (const char *str, int c); |
|
|
Ищет в строке str первое вхождение символа с. |
|
strcmp |
int strcmp (const char *str1, const char *str2); |
|
|
Сравнивает строки str1и str2. Результат отрицателен, если |
|
|
str1 str2; равен нулю, если str1= = str2, и положителен, если |
|
|
str1 str2 (сравнение беззнаковое). |
|
strcpy |
char *strcpy(char *sp, const char *si); |
|
|
Копирует байты строки si в строку sp. |
|
strcspn |
int strcspn (const char *str1, const char *str2); |
|
|
Определяет длину первого сегмента строки str1, содержаще- |
|
|
го символы, не входящие во множество символов строки str2. |
|
|
Ищет один из символов одной строки в другой |
|
strdup |
char * strdup(const char *str); |
|
|
Выделяет память и переносит в нее копию строки str. |
|
strlen |
unsigned strlen (const char *str); |
|
|
Вычисляет длину строки str. |
|
strlwr |
char * strlwr(char *str); |
|
|
Преобразует буквы верхнего регистра в строке в соответст- |
|
|
вующие буквы нижнего регистра. |
|
strncat |
char * strncat(char *sp, const char *si, int kol); Припи- |
|
|
сывает kol символов строки si к строке sp (конкатенация). |
|
strncmp |
int strncmp(const char *str1, const char *str2, int kol); |
|
|
Сравнивает части строк str1 и str2, причем рассматриваются |
65
Функция |
Прототип и краткое описание действий |
|
|
первые kol символов. Результат отрицателен, если str1 str2; |
|
|
равен нулю, если str1= = str2, и положителен, если str1 str2. |
|
strncpy |
char * strncpy(char *sp, const char *si, int kol); |
|
|
Копирует kol символов строки si в строку sp («хвост» отбра- |
|
|
сывает или дополняется пробелами). |
|
strnicmp |
int strnicmp (char *str1, const char *str2, int kol); |
|
|
Сравнивает не более kol символов строки str1 и строки str2, |
|
|
не делая различия регистров (см. функцию strncmp()). |
|
strnset |
char * strnset (char *str, int c, int kol); |
|
|
Заполняет строку str заданным символом с. |
|
strpbrk |
int strpbrk (const char *str1, const char *str2); |
|
|
Ищет в строке str1 первое появление любого из множества |
|
|
символов, входящих в строку str2. |
|
strrchr |
char * strrchr (const char *str, int c); |
|
|
Ищет в строке str последнее вхождение символа с. |
|
strset |
char * strset (char *str, int c); |
|
|
Заполняет строку str заданным символом с. |
|
strspn |
int strspn (const char *str1, const char *str2); |
|
|
Определяет длину первого сегмента строки str1, содержаще- |
|
|
го только символы, из множества символов строки str2. |
|
|
Ищет символ одной строки, отсутствующий в другой |
|
strstr |
char * strstr (const char *str1, const char *str2); Ищет в строке |
|
|
str1 подстроку str2. Возвращает указатель на тот элемент в |
|
|
строке str1, с которого начинается подстрока str2. |
|
strtod |
double strtod (const char *str, char **endptr ); |
(stdlib.h) |
|
Преобразует символьную строку str в число двойной точно- |
|
|
сти. Если endptr не равен NULL, то *endptr возвращает как |
|
|
указатель на символ, при достижении которого прекращено |
|
|
чтение строки str. |
|
strtok |
char * strtok (char *str1, const char *str2); Ищет в строке |
|
|
str1 лексемы, выделенные символами из второй строки. |
|
strtol |
long strtol (const char *str, char **endptr, int baz); |
(stdlib.h) |
|
Преобразует символьную строку str к значению «длинное |
|
|
число» с основанием baz (2 baz 36). Если endptr не равен |
|
|
NULL, то *endptr возвращает как указатель на символ, при |
|
|
достижении которого прекращено чтение строки str. |
|
strupr |
char * strupr(char *str); Преобразует буквы нижнего ре- |
|
|
гистра в строке str в буквы верхнего регистра. |
|
ultoa |
char * ultoa (unsigned long v, char *str, int baz); |
|
|
Преобразует беззнаковое длинное целое v в строку str. |
66
Приложение Ж
Библиотека заголовочных файлов
Стандартные функции [6] <ctype.h> - преобразования и проверки символов; <complex> - комплексных чисел;
<ctime> - системные часы;
<locale.h> - установки локальной среды; <math.h> (<cmath>) - математические функции; <new> - работы с динамической памятью; <numeric> - числовых операций;
<signal.h> - обработки сигналов;
<stdio.h> - ввода/вывода (чтение/запись символов), работы с файлами; <stdlib.h> - работы с памятью, преобразования, некоторые математи-
ческие функции;
<string.h> - работы со строками в стиле С; <time.h> - для работы с датой и временем; <valarray> - классы для численных расчетов.
Константы, макросы и типы данных определены в файлах:
<assert> - для диагностики; <errno.h> - для проверки ошибок;
<float.h> - для работы с числами с плавающей точкой; <fstream> - файловые потоки;
<ios> - базовые классы потоков ввода/вывода; <istream> - входные потоки;
<ostream> - выходные потоки; <sstream> - строковые потоки; <sstreambuf> - буферизация потоков;
<iostream> - для потокового ввода/вывода;
<limits.h> - определение размеров целочисленных данных; <setjmp.h> - возможности нелокальных переходов;
<signal.h> - функции и макросы для обработки сигналов (прерываний). <stdarg.h> - поддержка функций с неопределенным числом параметров.
Контейнерные классы
<bitset> - битовое множество; <deque> - двусторонняя очередь; <list> - двусвязный список; <queque>- очередь;
<set> - множество;
<stack> - стек;
<vektor> - одномерный массив.
Как правило, каждый компилятор содержит больше заголовочных файлов.
67
|
СОДЕРЖАНИЕ |
|
|
Ввод – вывод в языке СИ. Структура программы. |
3 |
||
Порядок выполнения лабораторных работ |
4 |
||
Лабораторная работа 1. Основы программирования в среде языка |
|
||
Си. Оператор присваивания |
|
4 |
|
Лабораторная работа 2. Программирование разветвленных алго- |
|
||
ритмов. Операторы передачи управления |
9 |
||
Лабораторная работа 3. Программирование циклических алгорит- |
|
||
мов с заданным числом повторений |
|
14 |
|
Лабораторная работа 4. Программирование циклических алгорит- |
|
||
мов с предусловием |
|
|
17 |
Лабораторная работа 5. Программирование циклических алгорит- |
|
||
мов с постусловием |
|
|
19 |
Лабораторная работа 6. Программирование алгоритмов обработки |
|
||
одномерных массивов |
|
|
22 |
Лабораторная работа 7. Обработка двумерных массивов |
25 |
||
Лабораторная работа 8. Программирование c применением функций |
28 |
||
Лабораторная работа 9. Программирование с возвратом из функ- |
|
||
ций нескольких значений |
|
|
32 |
Лабораторная работа 10. Обработка символьных и строковых даных |
36 |
||
Лабораторная работа 11. |
Файлы |
|
40 |
Лабораторная работа 12. |
Структуры |
|
44 |
Лабораторная работа 13. Модульное программирование |
47 |
||
Лабораторная работа 14. Динамические структуры. Списки |
48 |
||
Лабораторная работа 15. |
Графика |
|
51 |
Задание к расчетно-графической работе |
53 |
||
БИБЛИОГРАФИЧЕСКИЙ СПИСОК |
|
55 |
|
ПРИЛОЖЕНИЕ А. Главное меню среды ТП |
56 |
||
ПРИЛОЖЕНИЕ Б. Операции языка С/С++ |
58 |
||
ПРИЛОЖЕНИЕ В.Типы данных |
|
59 |
|
ПРИЛОЖЕНИЕ Г. Обозначения графические в схемах алгоритмов |
60 |
||
ПРИЛОЖЕНИЕ Д. Сообщения об ошибках |
61 |
||
ПРИЛОЖЕНИЕ Е. Функции для работы с сисмволами и строками |
63 |
||
ПРИЛОЖЕНИЕ Ж. Библиотека заголовочных файлов |
67 |
||
|
Редактор ___________ |
|
|
|
Свод. темплан 200__ г. |
|
|
|
И Д № |
от . . |
|
Подписано в печать _________. Бумага офсетная. Формат 64 84 1/16. |
|
||
Отпечатано на дупликаторе. Усл. печ. л. 2. Уч. - изд.л. 2. |
|
||
|
Тираж . |
Заказ . |
|
|
|
||
Издательство ОмГТУ. 644050, Омск, пр. Мира 11 |
|
||
|
Типография ОмГТУ |
|
68