Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шафеева практика С

.pdf
Скачиваний:
216
Добавлен:
15.06.2014
Размер:
1.06 Mб
Скачать

Приложение Д

Сообщения об ошибках Сообщения об ошибках периода компиляции

"," 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