Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на Прикладное программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
472.88 Кб
Скачать

Комментарии в языке Си

В языке Си  для комментариев используются символы /* - начало комментария; */ - конец комментария. Вся последовательность, заключенная между этими символами, является комментарием. Это удобно для написания многострочных комментариев

int a;   /* целая переменная */

Многострочные комментарии также удобно использовать при отладке для сокрытия от выполнения части кода. В дополнение к этому, для написания коротких комментариев могут использоваться символы //. При этом комментарием является все, что расположено после символов // и до конца строки: 

float b; // вещественная переменная

Директивы препроцессора, такие как #define и #ifdef, обычно используются для того, чтобы облегчить изменение исходного кода программ и их компиляцию в разных средах выполнения. Директивы в файле исходного кода позволяют препроцессору выполнять определенные действия. Например, препроцессор может заменять токены в тексте, вставлять содержимое других файлов в файл исходного кода или отключать компиляцию части файла путем удаления разделов текста. Строки препроцессора распознаются и выполняются до расширения макросов. Поэтому если макрос разворачивается в нечто, похожее на команду препроцессора, эта команда не распознается препроцессором.

Препроцессор распознает следующие директивы:

#define

#error

#import

#undef

#elif

#if

#include

#using

#else

#ifdef

#line

#endif

#ifndef

#pragma

Функции всегда определяются глобально. Они могут быть объявлены с классом памяти static или extern. Объявления функций на локальном и глобальном уровнях имеют одинаковый смысл.

Правила определения области видимости для функций отличаются от правил видимости для переменных и состоят в следующем.

1. Функция, объявленная как static, видима в пределах того файла, в котором она определена. Каждая функция может вызвать другуюфункцию с классом памяти static из своего исходного файла, но не может вызвать функцию определенную с классом static в другом исходном файле. Разные функции с классом памяти static имеющие одинаковые имена могут быть определены в разных исходных файлах, и это не ведет к конфликту.

2. Функция, объявленная с классом памяти extern, видима в пределах всех исходных файлов программы. Любаяфункция может вызывать функции с классом памяти extern.

3. Если в объявлении функции отсутствует спецификатор класса памяти, то по умолчанию принимается класс extern.

15) Линейные алгоритмы в С++. Спецификатор формата. Пример. 

Линейными называются алгоритмы, процесс пошагового выполнения которых можно изобразить прямой линией – сверху вниз. 

Пример. Дано двухзначное целое число b. Найти сумму его цифр.

Текстуальная форма алгоритма задачи:

    1) Ввести  число b с клавиатуры в ЭВМ;

    2) Для выделения первой цифры воспользуемся известным в математике способом деления числа b на 10, и возьмем целое число от этого деления;

    3) Для выделения второй цифры разделим число b на 10, и возьмем дробную часть от этого деления;

    4) Найдем сумму найденных цифр;

    5) Полученный результат выдать на экран дисплея.

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

Перед спецификаторами формата ввода ставится знак %, и они сообщают функции scanf() о типе далее читаемых данных. Эти спецификаторы перечислены в таблице. Спецификаторы формата рассматриваются слева направо, и в таком же порядке с ним сопоставляются аргументы из списка аргументов.

Код

Значение

%c %d %i %е %f %g %о %s %x %р %n %u %[]

Читает одиночные символы Читает десятичное число Читает десятичное число Читает число с плавающей запятой Читает число с плавающей запятой Читает число с плавающей запятой Читает восьмеричное число Читает строку Читает шестнадцатиричное число Читает указатель Получает целочисленное значение, равное числу прочитанных символов Читает беззнаковое целое Сканирует множество символов

16) Форматированный ввод и вывод на экран в С++. Потоковый ввод и вывод на экран в С++. 

Для организации форматированного потокового ввода-вывода в Си++ существуют два средства:

• применение функций-членов класса ios для управления флагами форматирования;

• применение функций-манипуляторов.

Управление флагами форматирования. Флаги форматирования — двоичные коды, управляющие форматом выводимых значений. В заголовочном файле iostream.h определено следующее перечисление, задающее флаги форматирования:

В языке С++ был разработан другой способ ввода/вывода с использованием так называемых потоков ввода и вывода.

Для того чтобы использовать стандартные потоки для ввода и вывода, необходимо включить заголовочный файл <iostream>. Для ввода используется операция >>, для вывода – операция <<. Компилятор определяет тип вводимой/выводимой переменной и соответствующим образом форматирует её.

#include <iostream> using namespace std;

cin >> x;

// Ввод значения в переменную x из стандартного потока cin

cout << x;

// Вывод значения переменной x в стандартный поток cout

cin >> x >> y;

// Ввод двух переменных

cout << "x = " << x << "\ny = " << y << endl;

// Функция endl осуществляет перевод строки

Если при вводе или выводе произошла ошибка, в переменной состояния потока устанавливается соответствующий флаг. Проверить его значение можно с помощью функции fail.

cin >> x; if (cin.fail()) cout << "Произошла ошибка при вводе\n";

17) Принятие решений. Условные операторы в С++. Пример. 

Условный оператор. Формат условного оператора следующий:

if (выражение) оператор1; else оператор2;

Это полная форма оператора, программирующая структуру полного ветвления. Обычно выражение — это некоторое условие, содержащее операции отношения и логические операции. Значение выражения приводится к целому и интерпретируется в соответствии с правилом: равно нулю — ложь, не равно нулю — истина. Если выражение истинно, выполняется оператор1, если ложно — оператор2.

Необходимо обратить внимание на следующие особенности синтаксиса условного оператора:

  • выражение записывается в круглых скобках;

точка с запятой после оператора 1 ставится обязательно.

Условный оператор if может использоваться в форме полной или неполной развилки.

В С++ есть условная операция, очень похожая  на условный оператор выбора if else. Условная операция «? :» называется тернарной операцией (то есть трёхместная (имеет три операнда), единственная в C++).

Форма записи тернарной операции в C++ "условие" ? "выражение 1" : "выражение 2"; Если условие истинно, то выполняется выражение 1, иначе (условие ложно) выполняется выражение 2. Пример:

1

a > b ? cout << a : cout << b; // если а > b, то выполняется cout << a, иначе выполняется cout << b

Таким образом, если, а > b напечатать а, иначе напечатать b. То есть, программа печатает большее из чисел. Использование условной операции может в некоторых случаях упрощать код, тогда как воспользоваться оператором if else таким же образом не возможно. Вернёмся к старой задаче из раздела Оператор выбора if else, напомню условие данной задачи.

18) Разветвляющиеся алгоритмы в С++. Пример. 

Разветвляющимся является алгоритм, если последовательность выполнения  шагов решения задачи изменяется в зависимости от некоторых условий. Условие – это логическое выражение, принимающее одно из двух значений: «Да» – если условие верно и «Нет» – если условие неверно, – и которое может содержать логические операции и знаки отношений.

Рис. 1 иллюстрирует структурные схемы разветвляющихся алгоритмов укороченной (а) и полной (б) формы.

Рисунок 1. Схемы разветвляющихся алгоритмов 

Разветвляющиеся алгоритмы оформляются  операторами полной или укороченной формы (табл. 1). В условном операторе выполняется всегда одна из веток («Да» при истинном условии или «Нет», если оно ложно), и никогда не выполняются обе вместе. 

Таблица 1. Формы записи операторов условного перехода

 Форма записи

 Структура оператора

 краткая

 if  (условие) { операторы-Да }

 полная

 if  (условие) { операторы-Да; } else { операторы-Нет}

К условным операторам относится оператор выбора или оператор переключатель (табл. 2), который замечателен тем, что может заменить вложенные операторы условия.

Таблица 2. Оператор выбора (или оператор-переключатель)

 Структура оператора

 switch   выражение {      case значение1:  { операторы}      . . . . . . . . . . .      case значениеN: { операторы}      default  { операторы}                                 }

19) Организация циклов в С++. Итерационные алгоритмы. Пример. 

Цикл - это повторение одного и того же участка кода в программе. Последовательность действий, которые повторяются, называют телом цикла. Один проход цикла - это шаг или итерация. Переменные, изменяющиеся внутри цикла и влияющие на его окончание, называются параметрами цикла.

В C++ предусмотрены три оператора, реализующих циклический процесс: while, do..while и for 

Общий вид цикла for: