Array M. УЭИТ - Язык Си - руководство для начинающих

Здесь есть возможность читать онлайн «Array M. УЭИТ - Язык Си - руководство для начинающих» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1988, ISBN: 1988, Издательство: Мир, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык Си - руководство для начинающих: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык Си - руководство для начинающих»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

Язык Си - руководство для начинающих — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык Си - руководство для начинающих», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

/* превращает строку в целое число и сообщает о состоянии */

stoi(string, intptr)

char string[ ]; /* строка, подлежащая преобразованию в целое*/

int *intptr; /* значение целого */

{

int sign = 1; /* проверяет наличие знака + или - */

int index = 0;

if(string[index] == '-' || string[index] == '+')

sign = (string[index ++] == '-') ? -1 : 1; /* установить знак */

*intptr = 0; /* начальное значение */

while(string[index] >= '0' && string[index] <= '9')

*intptr = 10 * (*intptr) + strmg[index++] - '0';

if(string[index] == '\0')

{

*intptr = sign * (*intptr);

return(YESNUM); }

else /* найден символ, отличный от цифры, знака или ' \0' */

return(NONUM);

}

Оператор whileпродолжает работу, преобразуя цифры в числа, пока не достигнет нецифрового символа. Если это символ '\0', все прекрасно, потому что он означает конец строки. Любой другой нецифровой символ отсылает программу к elseдля сообщения об ошибке.

Стандартная библиотека языка Си содержит функцию atoi( )(перевод кода ASCII в целое число), очень похожую на stoi( ). Основная разница заключается в том, что stoi( )проверяет на нецифровые строки, a atoi( )использует returnвместо указателя, для возврата числа, и пропускает пробел, как мы это делали в getint(). Можно было бы осуществить все проверки состояния в getint( )и использовать atoi( )вместо stoi( ), но мы полагаем, что было бы интереснее разрабoтать нашу собственную версию.

Проверка

Так ли уж правильны наши рассуждения? Давайте проверим нашу функцию на учебной программе:

/* проверка функции getint( )*/

#define STOP - 1

#define NONUM 1

#define YESNUM 0

main( )

{

int num, status;

printf(" Программа прекращает считывание чисел, если встречает EOF. \n" );

while((status = getint(&num)) != STOP)

if(status = = YESNUM)

printf(" Число %d принято. \n", num);

else

printf(" Это не целое число! Попытайтесь снова. \n");

printf("Этo оно. \n");

}

Вот пример работы программы:

Программа прекращает считывание чисел, если встречает EOF.

100 -23

Число 100 принято.

Чмсло -23 принято.

+892.

Число 892 принято.

wonk

Это не целое число! Попытайтесь снова.

23skidoo

Это не целое число! Попытайтесь снова.

775

Число 775 принято.

Клавиша [control z] (посылает символ EOF в нашу программу).

Это оно.

Как видите, программа выполняется. Обратите внимание на то, как мы сумели организовать цикл для неограниченного считывания целых чисел до тех пор, пока не будет введен символ EOF. Это удобное свойство.

Есть ли здесь ошибки? По меньшей мере одна. Если непосредственно за числом следует символ EOFбез разделяющего пробела или символа новой строки, ввод прекращается, и это число не принимается во внимание:

706 EOF /* 706 принято*/

706 EOF /* 706 не принято*/

Мы не хотели делать пример слишком сложным, поэтому допустили возможность этой ошибки. Дальнейшую разработку программы, как мы думаем, может осуществить сам читатель в качестве упражнения.

СОРТИРОВКА ЧИСЕЛ

Одним из наиболее распространенных тестов для машин является сортировка. Мы хотим разработать программу для сортировки целых чисел. Снова применим принцип черного ящика и подумаем в терминах ввода и вывода. Наш общий замысел, показанный на рис. 10.4, довольно прост.

РИС 104 Программа сортировки рассматриваемая как черный яшик На данном - фото 60

РИС. 10.4. Программа сортировки, рассматриваемая как черный яшик

На данном этапе программа еще недостаточно определена, чтобы ее кодировать. Следующий шаг заключается в определении главных задач, которые должна выполнить программа для достижения поставленных целей. Их три:

1. Считывание чисел.

2. Сортировка чисел.

3. Печать отсортированных чисел. На рис. 10.5 показано это разделение при движении от верхнего уровня конструкции вниз к более детальному.

РИС 105 Программа сортировки содержание Теперь мы имеем три черных ящика - фото 61

РИС. 10.5 Программа сортировки: содержание

Теперь мы имеем три черных ящика, каждый со своим входом и выходом. Можно передать каждую часть разным группам программистов, если мы уверены в том, что числа, выводимые блоком "считывание", представлены в той же самой форме, которую использует блок "сортировка" для ввода.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык Си - руководство для начинающих»

Представляем Вашему вниманию похожие книги на «Язык Си - руководство для начинающих» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык Си - руководство для начинающих»

Обсуждение, отзывы о книге «Язык Си - руководство для начинающих» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x