Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
konspekt_1_semestr.doc
Скачиваний:
12
Добавлен:
02.08.2019
Размер:
654.34 Кб
Скачать

Инициализация переменных

В соответствии с синтаксисом языка С, после определения в программе переменные по умолчанию имеют неопределенные значения. Надеяться на то, что они равны, например, 0, нельзя. Однако переменным можно присваивать начальные значения, явно указывая их в определениях:

<тип> <имя переменной>=<начальное значение>;

Этот прием программирования называется инициализацией. В отличии от присваивания значений, выполняющегося при выполнении программы, инициализация выполняется при выделении для переменной участка памяти. Примеры:

float pi=3.1415, coef=2.45;

unsigned int year=2006;

char plus='+';

Определение именованных констант

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

Для именования констант можно воспользоваться одним из трех приемов.

1. Использование перечислимых констант, определяемых через ключевое слово enum. Такой способ позволяет именовать только целые константы.

2. Использование ключевого слова const в операторе определения переменных:

const <тип> <имя>=<значение>;

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

Например,

const long MAX_VALUE=999999;

const double E=2.718282;

const T=366;

В последнем случае тип константы не указан вовсе - по умолчанию ей будет приписан тип int.

3. Использование директивы препроцессора #define.

#define EULER 2.718282 #define WORD "Слово"

Подробно рассмотрение этой директивы будет позднее.

Структура программы

Программа на языке C++ состоит из функций, описаний и директив препроцессора (с. 16). Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции.

Структура простейшей программы имеет вид:

  1. Директивы компилятора

# include <имя подключаемого файла>

  1. Главная функция программы

void main(void)

{

}

  1. внутри функции main

- объявление использованных переменных тип имя переменной

- ввод исходной информации

- обработка данных

- вывод результата

Ввод/вывод информации

Основные функции форматированного ввода/вывода

int scanf (const char* format. ... ) // ввод

int printf(const char* format. ... ) // вывод

Для их использования необходимо подключить библиотеку <stdio.h>

# include <stdio.h>

Синтаксис функции printf

printf(«Управляющая строка», список параметров)

Функция printf возвращает число напечатанных символов

Список параметров перечисляется через запятую.

Управляющая строка состоит из:

- обычные символы, которые выводятся на экран

- управляющие символы

- спецификация преобразования, каждая из которых вызывает вывод на экран значения очередного элемента из списка параметров. Спецификация преобразования начинается всегда из символа % и имеет след. формат:

%[флаг][ширина поля][. точность ][h/l/L]тип

Тип может принимать одно из следующих значений

Код

Формат

c

d или i

u

o

x (X)

f

е илиЕ

g или G

s

p

%

Символ

Знаковое десятичное целое число

Беззнаковое десятичное число

Беззнаковое восьмиричное число

Беззнаковое шестнадцатиричное число (х-строчные буквы,Х-прописные буквы)

Значение с плавающей запятой в форме –цел.часть . дроб.часть

Значение с плавающей запятой в форме –цел.часть . дроб.частье степень

То же что и %е только не выводятся последние нули

Строка символов

Вывод указателя

Выводит знак %

Флаг:

-

Выведенное значение прижимается к левому краю( по умочанию вправо)

%-20s

+

Перед числом обязательно выводитяс знак + или-

%+d

Пробел

Если выводится неотрц. число , то перед ним ставится пробел

% 6.2f

0

заполнение пустых позиций нулями

%010d,

%08.3f

#

Вывод первого 0 для восьмеричных, 0x или 0X для 16-ых. Для всех форм с плавающей точкой гарантируется вывод символа десятичной точки. Для форм %g %G предотвращает удаление заключительных нулей.

%#o,

%#8.0f,

%+#10.3E

Модификатор формата ширина представляется целым положительным числом и служит для указания минимального количества выводимых символов. Если количество символов выводимого значения меньше width, поле будет дополняться символами в соответствии с указанными флагами. Заметим, что значение width никогда не ограничивает выводимое значение.

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

Модификаторы, представленные в описании строки формата перечнем {h | l | L}, используются для спецификации размера аргумента:

h short int(d, i, o, x, X) и short unsigned int (u)

l long int(d, i, o, x, X) и long unsigned int (u)

L long double (e,E,f,g,G)

Функция форматированного ввода информации scanf.

В целом функция вода scanf очень подобна на функцию printf. Она также использует строку, задающую необходимые форматные преобразования. Главное различие этих функций заключается в списке параметров. Функция printf использует имена переменных, константы и выражения. Функция scanf в качестве параметров использует только указатели на переменные, т.е. адреса заполняемых переменных. Подробно мы будем изучать указатели позднее, а пока постараемся воспользоваться функцией scanf на основании двух следующих простых правил:

- если вы хотите ввести значение для одного из основных типов переменной, перед именем переменной ставьте символ &;

- если читается строка в символьный массив, знак & не ставится.

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

Спецификаторы формата для функции scanf представляются следующей таблицей

type

Результат - Интерпретирует ввод как

%c

символ

%d

десятичное целое число со знаком

%e, %f, %g

число с плавающей точкой

%E,%G

число с плавающей точкой

%i

десятичное целое число со знаком

%o

восьмеричное целое число без знака

%p

указатель (адрес памяти)

%s

строку; ввод начинается с 1-го не служебного символа и включает все символы до следующего служебного

%u

десятичное целое число без знака

%x, %X

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

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

Модификатор

Значение

*

Подавление присваивания - пропуск принимаемого значения

Цифры

Максимальная ширина поля; ввод закончиться либо при обнаружении первого служебного символа, либо когда достигнута максимальная ширина поля

h, l, L

%hd и %hi указывают, что значение поступает в тип short.

%ho, %hx и %hu - в тип unsigned short.

%ld и %li - в тип long.

%lo, %lx и %lu - в тип unsigned long.

%le, %lf и %lg в тип double.

Использование L вместо l - long double.

Отсутствие предполагает: d, i, o, x - в тип int, e, f, g - в тип float

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

scanf("%d, %d", &n, &m);

При вводе следует набирать например, 567,212.

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

567,212 567 , 212 567, 212

Функция возвращает число успешно прочитанных элементов. Если она не прочла никаких элементов - возвращается значение 0. Она возвращает EOF ("End of file") - специальную константу, значение которой определено в заголовочном файле stdio.h, в случае, когда поток заканчивается раньше, чем определены все специфицированные в вызове функции переменные.

А вот как выглядит та же программа с использованием библиотеки классов C++

#include <iostream.h>

int main()

{

int i;

cout << "Введите целое число\n”;

cin>> i;

cout <<"Вы ввели число " << i<< " \nспасибо!";

return 0; }

Заголовочный файл <iostream h> содержит описание набора классов для управления вводом/выводом В нем определены стандартные объекты-потоки cm для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток <<и чтения из потока >>.

В дальнейшем изложении будут использоваться оба способа, но в одной программе смешивать их не рекомендуется

Тема 2. Язык программирования С/С++. Выражения и операции

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

(4 х 5) - 4 представляет значение 16.

Почленная интерпретация этого выражения - "взять число 4, умножить его на 5, из результата вычесть 4".

В языке С существует три типа выражений:

- математическое выражение, дающее численный результат;

- текстовое выражение, дающее строку символов;

- логическое выражение, дающее в результате 1 или 0 (интерпретируемые как "истина" или "ложь".

В зависимости от типа выражения в языке С используются те или иные операции.

Арность операции - это количество задействованных в операции операндов. Например

2 + 3 - бинарная (двуместная) операция, -4 - унарная (одноместная) операция.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]