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

  • Запуск среды разработки программ: í Пуск Программы Microsoft Visual Studio 2010 í Microsoft Visual Studio Создание нового проекта (консольное приложение win32)

  • Сборка (компиляция и компоновка): íBuild (Построение Build (Построить решение)или клавишаF7Отладка

  • Выполнение программы по шагам

  • Создание и добавление к проекту нового файла с исходным текстом программы

  • Выполнить (без отладки комбинация клавишCtrl+F10Скомпилировать и выполнить

  • Задание (снятие) точки останова щелчок мыши полевому полю или комбинация клавишCtrl+F5Выполнение программы по шагам

  • Листинг 1.1: Простейшая программа на языке С (вывод текстовой строки i n c l u d e ¬i n t main()­{®printf("Hello!");¯return

  • Компиляция и компоновка.

  • Символы национальных алфавитов.

  • Листинг 1.2: Вывод в консоль символов кириллицы (способ 1) i n c l u d e i n c l u d e ¬i n t

  • Ожидание в конце программы.

  • Листинг 1.3: Ожидание нажатия любой клавиши i n c l u d e i n c l u d e ¬ i n c l u d e i n t

  • Функция system() .

  • Рис. 1.4. Консольный экран программы из листинга1.4Листинг 1.4: Кодировка и ожидание нажатия клавиши (способ 2) 1 i n c l u d e

  • i n c l u d e // Для функции system().3i n t

  • Пример 1.1. Выведем на экран одно и тоже число в десятичном, шестнадцатеричном и восьмеричном виде (16, 10 и 20):i n t

  • Пример 1.2. Вывод на экран одного итого же числа в двух разных вещественных форматах (16.300000и1.630000е+01): — 28 —double

  • Листинг 1.5: Ввод целых чисел с клавиатуры i n c l u d e 2 i n c l u d e 3i n t main() {4i n t

  • СИ. Программирование на языке CC Часть Структурное программирование


    Скачать 1.65 Mb.
    НазваниеПрограммирование на языке CC Часть Структурное программирование
    Дата11.02.2022
    Размер1.65 Mb.
    Формат файлаpdf
    Имя файлаAlgLangCpp.pdf
    ТипУчебное пособие
    #359040
    страница2 из 11
    1   2   3   4   5   6   7   8   9   10   11
    1.5. Интегрированная среда разработки программ
    Интегрированная среда разработки development environment) — система программных средств, используемая программистами для разработки программного обеспечения (ПО. Включает в себя текстовый редактор, компилятор, средства автоматизации сборки, отладчик,
    систему справки (интерактивную документацию. Существуют несколько для программирования на языке C/C++: коммерческие программы Visual Studio (имеется также упрощённый и бесплатный вариант Visual Studio Express); Borland C++ Builder; бесплатные программы, Dev-C++, Code::Blocks, Eclipse, Qt Creator.
    1.5.1. Microsoft Visual Внешний вид экрана Microsoft Visual Studio 10 показан на рис.
    1.2
    Цифрами обозначено — строка меню — панели инструментов — обозреватель решений с деревом проектов — окно с исходным текстом программы — окно вывода с результатами компиляции.
    Запуск
    среды
    разработки
    программ:
    í Пуск Программы Microsoft Visual Studio 2010 í Microsoft Visual Studio Создание нового проекта (консольное приложение win32):

    í Файл New (Создать) í Project (Проект)
    или комбинация клавиш Visual C++ í Win32 í Консольное приложение Win32

    — 17 Рис. 1.2. Интегрированная среда разработки программ Ввести имя проекта, выбрать каталог для его размещения, задать имя решения (оно может совпадать с именем проекта).
    sСоздать каталог для решения  OK  Next (Далее empty project (Пустой проект)  Finish (Готово)
    Создание и добавление к проекту файла с исходным текстом программы Если не отображается окно
    «Обозреватель решений, то выполнить команду меню Вид í Обозреватель решения или нажать комбинацию клавиш
    Ctrl+Alt+L
    В обозревателе решений щёлкнуть по нужному проекту правой кнопкой мыши и выбрать команду Add (Добавить) í Create (Создать элемент. Выбрать
    «Файл С+ (.cpp)»
    . Ввести имя файла, например. Нажать Add (Добавить

    — 18 —
    Сборка
    (компиляция
    и
    компоновка):
    í
    Build (Построение Build (Построить решение)
    или клавиша
    F7
    Отладка:
    í Debug (Отладка) í Start (Начать отладку)
    или клавиша Debug (Отладка) í Start without debugging (Запуск без отладки)
    или комбинация клавиш
    Ctrl+F5
    Выполнение программы по шагам клавиша
    F10
    (без захода внутрь функций) или
    F11
    (с заходом. Внешний вид экрана Dev-C++ показан на рис.
    1.3
    Рис. 1.3. Интегрированная среда разработки программ Создание нового проекта (консольное приложение win32):
    í Файл Создать í Проект í Console Ввести имя проекта, выбрать используемый язык (C или C++), нажать OK
    . Полный путь к файлам проекта не должен содержать пробелов или символов кириллицы.
    Создание и добавление к проекту нового файла с исходным текстом
    программы:
    í Файл í Создать í Исходный файл  Да

    — 19 Сборка (компиляция и компоновка Выполнить í Скомпилировать или комбинация клавиш
    Ctrl+F9
    Выполнить (без отладки комбинация клавиш
    Ctrl+F10
    Скомпилировать и выполнить клавиша
    F9
    Компиляция проекта с возможностью отладки Проект í Параметры проекта Компиляция Ú Компоновщик
    Генерировать отладочную информацию (Да После этого перекомпилировать проект, нажав
    Ctrl+F11
    (или выполнив пункт меню Выполнить í Перестроить всё
    Отладка:
    í Отладка í Отладка или клавиша
    F8
    Задание (снятие) точки останова щелчок мыши полевому полю или комбинация клавиш
    Ctrl+F5
    Выполнение программы по шагам клавиша
    F7
    Отслеживание значения переменной в процессе отладки нажать клавишу и задать имя переменной. Простейшая программа на языке Вывод текстовой строки.
    В листинге
    1.1
    приведена программа, которая выводит на консольный экран приветствие по-английски. Особенность
    консольных приложений в том, что они работают не в графическом, а втек- стовом режиме.
    Листинг 1.1: Простейшая программа на языке С (вывод текстовой строки i n c l u d e

    ¬
    i n t
    main
    ()
    ­
    {
    ®
    printf
    ("Hello!");
    ¯
    return
    0;
    °
    }
    ±

    — 20 —
    ¬ — директива препроцессора подключает заголовочный файл, в котором описаны функции ввода–вывода (в программе используется функция вывода printf
    );
    ­ — программа на языке C/C++ всегда должна иметь главную функцию main
    ; в простейшем случае входные параметры у этой функции отсутствуют (пустые круглые скобки, а возвращаемое значение — это код ошибки, имеет тип int
    (integer — целое число, ± — начало и конец функции (и любого другого блока кода) выделяются фигурными скобками, а текст блока для удобства чтения записывается с отступами — вывод строки на экран с помощью функции printf()
    , описанной в файле stdio.h
    ; выводимый текст заключается в кавычки — выходи возврат кода ошибки в операционную систему (0 — ошибок нет).
    Обратите внимание, что каждый оператор (в нашем примере — функция вывода ptintf и оператор возврата return
    ) оканчивается точкой с запятой.
    После директивы препроцессора (
    #include
    ) и заголовка функции (точка с запятой не ставится.
    Компиляция и компоновка.
    После нажатия клавиши
    F7
    (в среде Visual Studio) или
    F9
    (в Dev-C++) начинается процесс построения, который заключается в последовательном выполнении препроцессора,
    компилятора и компоновщика.
    Препроцессор обрабатывает директивы, которые могут находиться вис- ходном тексте программы (пока нам известны только директивы и
    #define
    ).
    Получившийся в результате полный текст программы преобразуется компилятором в объектный модуль, который содержит машинные команды, опре- делённые в программе данные и, возможно, символьные ссылки на библиотеки каких-либо внешних функций, которые находятся в других объектных модулях.
    Наконец, компоновщик иначе называемый редактором связей) формирует из всех необходимых объектных модулей исполняемый файл (в системе Windows исполняемые файлы имеют расширение
    .exe
    ).
    Символы национальных алфавитов.
    Изменим предыдущую программу, выведем на экран символы кириллицы:
    printf
    ("Hello!\nПривет!\n");
    ¯
    Здесь используется "

    n"
    , чтобы вставить в выводимое сообщение перевод строки.
    К сожалению, вместо русских символов будут выведены непонятные значки. Чтобы вывод символов, код которых больше, работал правильно, необходимо указать номер кодовой страницы (способ кодировки символов. Кодировка вводимых символов устанавливается с помощью функции выводимых символов — с помощью функции. В обоих случаях в качестве параметра функции требуется указать номер кодовой страницы. Изменённая программа показана в листинге
    1.2
    Листинг 1.2: Вывод в консоль символов кириллицы (способ 1)
    # i n c l u d e

    # i n c l u d e

    ¬
    i n t
    main
    () Привет — подключение заголовочного файла, в котором определены функции,
    специфичные для системы Microsoft Windows;

    — 22 —
    ­ — установка кодовой страницы для ввода (можно опустить, т. кв программе не предполагается чтение строковых данных — установка кодовой страницы для вывода.
    Кроме того, в контекстном меню консольного окна (вызывается щелчком кнопки мыши по системному значку в левом верхнем углу окна) необходимо указать для консольных окон шрифт Для изменения кодировки также можно использовать функцию setlocale
    (
    LC_ALL
    , "rus");
    // кодировка для кириллицы
    Ожидание в конце программы.
    Чтобы после выполнения программы
    (вне интегрированной среды) консольное окно не закрывалось, можно использовать функцию, которая ждёт нажатия клавиши.
    Листинг 1.3: Ожидание нажатия любой клавиши i n c l u d e

    # i n c l u d e

    ¬
    # i n c l u d e

    i n t
    main
    (){
    SetConsoleCP
    (1251);
    SetConsoleOutputCP
    (1251);
    printf
    ("Hello!\nПривет!\n");
    printf
    ("Нажмите␣любую␣клавишу...");
    ­
    _getch
    ();
    ®
    return
    0;
    }
    ¬ — подключение заголовочного файла, в котором определена функция — вывод на экран приглашения нажать любую клавишу — ожидание нажатия клавиши (в данном случае код нажатой клавиши нигде не используется

    — 23 —
    Функция
    system()
    .
    С помощью функции можно выполнять команды операционной системы. Команда chcp изменяет кодировку символов, а команда pause выводит на экран сообщение и ожидает нажатия любой клавиши. Поэтому программу из листинга
    1.3
    можно переписать по- другому (см. листинг. На рис.
    1.4
    показан результат работы программы.
    Рис. 1.4. Консольный экран программы из листинга
    1.4
    Листинг 1.4: Кодировка и ожидание нажатия клавиши (способ 2)
    1
    # i n c l u d e

    // Для функции printf().
    2
    # i n c l u d e

    // Для функции system().
    3
    i n t
    main
    () {
    4
    system
    ("chcp␣1251");
    // Кодировка (change code Привет Вывод текста Ожидание нажатия клавиши. Область действия переменных

    Описание переменной явно или по умолчанию задаёт область её действия.
    Область действия любого идентификатора — это та часть программы, где его можно использовать для доступа к связанной с ним области памяти. В зависимости от области действия переменная может быть локальной или глобальной.
    Если переменная определена внутри блока (части текста программы,
    окруженной фигурными скобками, то она называется локальной область её
    действия — от точки описания до конца блока (включая все вложенные блоки

    — 24 Если переменная определена вне какого-либо блока (и за пределами любой функции, в том числе main
    ), она называется глобальной глобальная переменная n t

    main
    () {
    double
    y
    ;
    // локальная переменная
    }
    Область действия глобальной переменной — от точки описания до конца файла. Использование глобальных переменных в общем случае не является хорошим стилем программирования надо стремиться к тому, чтобы все необходимые данные функции получали через свои параметры (см. раздел
    4.2
    ).
    Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с этим идентификатором области памяти. Обычно область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем в этом случае внешняя переменная во вложенном блоке невидима, однако, если она глобальная, к ней можно обратиться, поставив переде именем два двоеточия
    ::
    (пример использования двойного двоеточия перед именем глобальной переменной см. в листинге
    4.5
    на с если она локальная, то обратиться к ней невозможно.
    Время жизни переменной может быть постоянным (на всё время выполнения программы) или временным (пока выполняется данный блок).
    Класс памяти определяет время жизни и область видимости программных объектов (в том числе, переменных. Для явного задания класса памяти используются спецификаторы автоматическая переменная память для неё выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего её определение. Освобождение памяти происходит при выходе из блока, в котором переменная описана. Поэтому автоматическая переменная не сохраняет своего значения при выходе из своего

    — 25 блока и последующем возвращении в него. Время жизни автоматических переменных — от точки описания до конца блока. Для глобальных переменных спецификатор auto не используется, а для локальных принимается по умолчанию, поэтому его обычно не пишут превращает описание в объявление. Означает, что объект опреде- лён в другом месте программы (в другом файле или дальше по тексту).
    Используется, если переменная должна быть доступна в нескольких модулях (тогда она объявляется во всех модулях, где нужна, но определяется только водном из них. Если переменная в том же операторе ини- циализируется, то спецификатор extern игнорируется (те. получается определение, а не объявление статическая переменная, имеющая постоянное время жизни. В
    зависимости от расположения описания статические переменные могут быть локальными (описаны внутри блока) или глобальными (описаны вне любого блока. Глобальные статические переменные видны только в том модуле (файле, где они описаны. Статические переменные создаются при первом выполнении оператора, где они определены, ив отличие от автоматических переменных, продолжают существовать после выхода из своего блока при возвращении в свой блок они не создаются заново, поэтому сохраняют своё последнее значение аналогично auto
    , но компилятор по возможности выделяет переменной место в регистрах процессора (для увеличения быстродей- ствия).
    Каждая глобальная или статическая переменная автоматически инициали- зируется нулевым значением (если в её определении не указан инициализатор. Автоматические переменные компилятором не инициализируются.
    Имя переменной должно быть уникальным в пределах своей области действия например, водном блоке не может быть двух переменных с одинаковыми именами. Каждая переменная может быть многократно объявлена в

    — 26 различных местах программы, но определена она может быть только водном месте (поскольку при определении компилятор выделяет память для хранения значения переменной, а объявление лишь описывает свойства переменной).
    Разумеется, все описания (объявления и определение) одной и той же переменной не должны противоречить друг другу.
    Константы, определённые через директиву препроцессора, доступны для использования во всех модулях, начиная с места своего определения. Если мы хотим отменить сделанное таким способом определение, то должны использовать директиву. Ввод-вывод числовых значений
    Ввод и вывод чисел.
    Для ввода с клавиатуры используется функция scanf()
    :
    scanf
    ("спецификатор_формата", &
    имя_переменной
    );
    Первый параметр — спецификатор формата, который задаёт тип вводимой информации (см. ниже. Второй параметр — адрес переменной, значение которой будет присвоено. Обратите внимание на знак
    &
    перед именем переменной
    (это операция взятия адреса, см. с.
    88
    ).
    Например, чтобы ввести значение целой переменной a
    , имеющей тип надо написать, Вывод значений на экран осуществляется с помощью уже знакомой нам функции printf
    . Первым её параметром является строка, содержащая спецификаторы формата для всех выводимых значений. Переменные или константы, задающие сами выводимые значения, указываются в качестве всех остальных параметров функции printf
    :
    printf
    ("форматная_строка",
    имя1
    ,
    имя2
    ,...);
    Например, чтобы вывести значение двух переменных и y
    , первая из которых имеет типа вторая — тип double
    , можно написать

    — 27 —
    printf
    ("Ответ:␣%ld␣и␣%lg",
    x
    ,
    y
    );
    Спецификатор формата это специальная строка, содержащая условное обозначение формата вводимого или выводимого значения. Все спецификаторы формата начинаются с символа
    ’%’
    Для целых чисел int
    :
    %d
    — ввод/вывод в десятичной форме в десятичной форме без знака;

    — для целых чисел без знака в восьмеричной форме;

    — для целых чисел без знака в шестнадцатеричной форме.
    Пример 1.1. Выведем на экран одно и тоже число в десятичном, шестнадцатеричном и восьмеричном виде (
    16, 10 и 20):
    i n t
    a
    = Для целых чисел long int
    :
    %ld
    — в десятичной форме в десятичной форме без знака.
    Для вещественных чисел float
    :
    %f
    — в форме с фиксированной точкой (в виде целой и дробной части в экспоненциальной форме (нормализованная мантисса и порядок автоматически выбирается та форма вывода, которая короче (для конкретного выводимого значения).
    Для вещественных чисел double
    :
    %lf
    — с фиксированной точкой в экспоненциальной форме форма выбирается автоматически.
    Пример 1.2. Вывод на экран одного итого же числа в двух разных вещественных форматах (
    16.300000
    и
    1.630000е+01
    ):

    — 28 —
    double
    a
    = В форматной строке можно указать ширину поля (число символов, отводимых для вывода числа, а также число разрядов после десятичной точки
    (точность).
    Пример 1.3. Вывод значения переменной типа double в поле шириной символов, с точностью три знака после десятичной точки:
    printf
    ("Ответ:␣%7.3lf",
    x
    );
    Т. к. знак процента в форматной строке используется как управляющий символ, то для вывода этого символа его надо записать дважды:
    printf
    ("Прибыль␣составила␣%5.1f%%",
    x
    );
    Пример 1.4. В листинге
    1.5
    приведена программа, которая запрашивает ввод с клавиатуры целого числа и выводит на экран результат сложения введённого числа со значением, заданным в программе.
    Листинг 1.5: Ввод целых чисел с клавиатуры i n c l u d e

    2
    # i n c l u d e

    3
    i n t
    main
    () {
    4
    i n t
    x
    ,
    y
    ,
    z
    ;
    // Три целые переменные 5;
    // Присваивание.
    8
    printf
    ("\nВведите␣целое␣число:␣");
    9
    scanf
    ("%d", &
    y
    );
    // Ввели с клавиатуры значение y.
    10
    z
    =
    x
    +
    y
    ;
    // Сложили.
    11
    printf
    ("Результат␣сложения␣%d␣и␣%d␣равен␣%d\n",
    x
    ,
    y
    ,
    z
    );
    12
    system
    ("pause");
    13
    return
    0;
    14
    }

    — 29 —
    1.9. Выражения и математические функции
    Для преобразования данных используются операции арифметические,
    логические, битовые. Если операция имеет один операнд, то она называется
    унарной как, например логическая операция NOT или арифметическое отрицание. Операции, имеющие два операнда, называются бинарными сложение, умножение и др. В табл.
    1.2
    приведён список операций, используемых в языке C/C++.
    Присваивание.
    Операция присваивания записывается в виде операнд1
    =
    операнд2
    Первый операнд должен быть значением, второй — выражением. Сначала вычисляется выражение, стоящее в правой части, затем его результат записывается в область памяти, указанную в левой части (значение, хранившееся там до этого, теряется).
    L-значением от англ. left — левый) является любое выражение (в частном случае, переменная, адресующее некоторый участок памяти, в который можно записать данные.
    Допускаются множественные присваивания, когда одно и тоже значение записывается сразу в несколько переменных, например Таблица 1.2. Основные операции языка C/C++
    1   2   3   4   5   6   7   8   9   10   11


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