Главная страница
Навигация по странице:

  • Только

  • Алгоритмизации


    Скачать 1.15 Mb.
    НазваниеАлгоритмизации
    Дата27.09.2022
    Размер1.15 Mb.
    Формат файлаdocx
    Имя файла12_100229_1_124427 (1).docx
    ТипДокументы
    #700459
    страница7 из 67
    1   2   3   4   5   6   7   8   9   10   ...   67

    ГЛАВА 5. Обзор базовых инструкций языка Си




      1. СтандартнаябиблиотекаязыкаСи


    В любой программе кроме операторов и операций используются средства библиотек, входящих в среду программирования. Часть библиотек стандартизована и поставляется с компилятором. Функции, входящие в библиотеку языка Си, намного облегчают создание программ. Расширение библиотечных файлов *.lib.

    В стандартную библиотеку входят также прототипы функций, макросы, глобальные константы. Это, как вы уже знаете, заголовочные файлы с расширением *.h, которые хранятся в папке includeи подключаются на этапе предпроцессорной обработки исходного текста программ.

    Рассмотрим наиболее часто используемые функции из стандартной библиотеки языка Си.

      1. Стандартныематематическиефункции


    Математические функции языка Си декларированы в файлах math.hи

    stdlib.h.


    В приведенных здесь функциях аргументы и возвращаемый результат имеют тип double. Аргументы тригонометрических функций должны быть заданы в радианах (2π радиан = 360o).


    Математическая функция ID

    функции в языке Си

    x

    sqrt(x)

    |x|

    fabs(x)

    ex

    exp(x)

    xy

    pow(x,y)

    ln(x)

    log(x)

    lg10(x)

    log10(x)

    sin(x)

    sin(x)

    cos(x)

    cos(x)

    tg(x)

    tan(x)

    arcsin(x)

    asin(x)

    arccos(x)

    acos(x)

    arctg(x)

    atan(x)

    arctg(x/ y)

    atan2(x)

    sh(x)=0.5 (ex–e-x)

    sinh(x)

    ch(x)=0.5 (ex+e-x)

    cosh(x)

    tgh(x)

    tanh(x)

    остаток от деления xна y

    fmod(x,y)

    наименьшее целое >=x

    ceil(x)

    наибольшее целое <=xfloor

    (x)
      1. Функциивыводаданныхнадисплей


    В языке Си нет встроенных средств ввода/вывода данных. Ввод/вывод информации осуществляется с помощью библиотечных функций и объектов.

    Декларации функций ввода/вывода, как уже упоминалось, приведены в заголовочном файле stdio.h.

    Для вывода информации на экран монитора (дисплей) в языке Си чаще всего используются функции: printf() иputs().

    Формат функции форматного вывода на экран:

    printf(управляющаястрока,списокобъектоввывода);

    В управляющей строке, заключенной в кавычки, записывают: поясняющий текст, который выводится на экран без изменения (комментарии), список модификаторов форматов, указывающих компилятору способ вывода объектов (признак модификатора формата– символ %) и специальные символы, управляющие выводом (признак – символ \).

    В спискеобъектоввыводауказываются идентификаторы печатаемых объектов, разделенных запятыми: переменные, константы или выражения, вычисляемые перед выводом.

    Количество и порядок следования форматов должен совпадать с количеством и порядком следования выводимых на экран объектов.

    Функция printfвыполняет вывод данных в соответствии с указанными форматами, поэтому формат может использоваться и для преобразования типов выводимых объектов.

    Если признака модификации (%) нет, то вся информация выводится как комментарии.

    Основные модификаторы формата:

    %d(%i) десятичное целое число;

    %c один символ;

    %s строка символов;

    %f число с плавающей точкой, десятичная запись;

    %е число с плавающей точкой, экспоненциальная запись;

    %g используется вместо f, eдля исключения незначащих нулей;

    %o восьмеричное число без знака;

    %x шестнадцатеричное число без знака.

    Для чиселlongдобавляется символl, например, %ld длинное целое,

    %lf число вещественное с удвоенной точностью double.

    Если нужно напечатать сам символ %, то его нужно указать 2 раза:

    printf("Только%d%%предприятийнеработало.\n",5);


    Получим: Только5%предприятийнеработало.

    Управляют выводом специальные последовательности символов: \n– новая строка; \t– горизонтальная табуляция; \b– шаг назад; \r– возврат каретки; \v вертикальная табуляция; \\ обратная косая; \' апостроф; \" – кавычки; \0 – нулевой символ (пусто).

    Пример: #define PI 3.14159

    . . .

    int number = 5; float bat = 255; int cost = 11000;

    . . .

    printf(" %d студентов съели %f бутербродов. \n", number, but);

    printf(" Значение числа pi равно %f. \n", pi);

    printf(" Стоимость этой вещи %d %s. \n", cost, "Руб.");

    . . .

    В модификаторах формата функции printf после символа % можно указывать число, задающее минимальную ширину поля вывода, например,

    %5d для целых, %4.2f для вещественных– две цифры после запятой для поля шириной 4 символа. Если указанных позиций для вывода целой части числа не хватает, то происходит автоматическое расширение.

    Если после «%» указан знак «минус», то выводимое значение будет печататься с левой позиции поля вывода, заданной ширины, например: % 10d.

    Использование функции printfдля преобразования данных:

    1) printf("%d", 336.65); получим: 336;

    2) printf("%o", 336); получим: 520, т.е. 5*8**2+2*8+0*1 = 336;

    1. printf("%x", 336); получим: 150 (шестнадцатеричное).

    Можно использовать функцию printfдля нахождения кода ASCII

    некоторого символа:

    printf (" %c %d\n", 'a', 'a');

    получим десятичный код ASCII символа а: a 65 .

    Функция puts(IDстроки); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n).

    Аналогом такой функции будет: printf(“%s \n”, IDстроки);

    Функция putchar() выдает на экран дисплея один символ без добавления символа ‘\n’.

      1. Функциивводаинформации


    Функция, предназначенная для форматированного ввода исходной информации с клавиатуры:

    scanf(управляющаястрока, списокадресовобъектовввода);

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

    Список объектов ввода представляет собой адреса переменных, разделенные запятыми, т.е. для ввода значения переменной перед ее идентификатором указывается символ &, обозначающий операцию «взять адрес».

    Если нужно ввести значение строковой переменной, то использовать символ & не нужно, т.к. строка это массив символов, а IDмассива является адресом его первого элемента. Например:

    int course;

    double grant; char name[20];

    printf (" Укажите курс, стипендию, имя \n "); scanf ("%d %lf %s", &course, &grant, name);

    Вводить данные с клавиатуры можно как в одной строке через пробелы, так и в форме разных строк, нажимая после ввода текущего объекта клавишу Enter.

    Функция scanf() использует практически тот же набор модификаторов форматов, что и printf(); отличия от функции вывода следующие: отсутствует формат %g, форматы %e,%f– эквивалентны. Для ввода коротких целых чисел введен модификатор формата %h.

    Внимание. Функцией scanf() по формату %sстрока вводится только до первого пробела.

    Для ввода фраз, состоящих из слов, разделенных пробелами, используется функция

    gets(IDстроковойпеременной);

    Символы вводятся при помощи функции getch(). Причем простой ее вызов организует паузу, при которой система программирования приостановит выполнение программы и будет ждать нажатия любой клавиши. Так поступают в том случае, когда нужно просмотреть какие-то результаты работы, при выводе их на экран монитора.

    Если же использовать ее в правой части операции присваивания, например:

    char c;

    . . .

    c = getch();

    то символьная переменная сполучит значение кода нажатой клавиши.

    С началом работы любой программы автоматически открываются стандартные потоки для ввода (stdin) и вывода данных (stdout), которые по умолчанию связаны с клавиатурой и экраном монитора соответственно.

    Внимание. Ввод данных функциями gets(), getch() выполняется с использованием потока stdin. Если указанная функция не выполняет своих действий (проскакивает), перед использованием необходимо очистить поток (буфер) ввода с помощью функции

    fflush(stdin);




    В языке С++ существует наиболее простая с точки зрения использования возможность ввода-вывода потоковый ввод-вывод, основы которого рассмотрены в разд. 16.1, 16.2.



    Советыпопрограммированию


    При выполнении вариантов заданий придерживайтесь следующих ключевых моментов.

    1. Выбирайте тип для переменных с учетом диапазона их возможных значений и требуемой точности представления данных.

    2. Старайтесь давать переменным ID (имена), отражающие их назначение.

    3. При вводе данных с клавиатуры выводите на экран пояснения: что нужно ввести, т.е. организуйте диалог. Для контроля сразу же после ввода выводите исходные данные на дисплей (хотя бы в процессе отладки).

    4. До запуска программы подготовьте тестовые примеры, содержащие исходные данные и ожидаемые результаты. Отдельно нужно проверить реакцию программы на заведомо неверные исходные данные. Для таких ситуаций необходимо предусмотреть вывод сообщений, например, «Ошибка! Решения нет».

    5. При составлении выражений учитывайте приоритет используемых операций.

    6. В функциях ввода/вывода printfи scanfдля каждой переменной указывайте спецификацию формата, соответствующую ее типу. Не забывайте, что в функции scanf передается адрес переменной, а не ее значение.

    7. При использовании стандартных функций требуется с помощью директивы препроцессору includeподключить к программе соответствующие заголовочные файлы. Установить, какой именно файл необходим, можно с помощью справочной системы Visual C++ 6.0 – «MSDN».

    8. Данные при вводе разделяйте пробелами, символами перевода строки или табуляции, но не запятыми.




    Не смешивайте в одной программе ввод/вывод с помощью стандартных функций (в стиле Си) с вводом/выводом в потоке (в стиле C++).



    1   2   3   4   5   6   7   8   9   10   ...   67


    написать администратору сайта