Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК-1_АЯП_рус.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.19 Mб
Скачать

#Define millenium 1000

задает символическое имя MILLENIUM для константы 1000. Препроцессор всюду в тексте заменяет это имя на константу 1000, используя текстовую подстановку. Это не очень хороший способ, поскольку при таком задании отсутствует контроль типов;

При описании любой переменной можно добавить модификатор типа const. Например, вместо #define можно использовать следующее описание:   

const int MILLENIUM = 1000;

Модификатор const означает, что переменная MILLENIUM является константой, т.е. менять ее значение нельзя. Попытка присвоить новое значение константе приведет к ошибке компиляции:  

MILLENIUM = 100; // Ошибка: константу

// Нельзя изменять

После объявления именованной константы в программе вместо самой константы можно использовать ее имя.

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

/* Это моя первая программа на Си*/

Комментарии очень важны для документирования (пояснения) программы.

Из символов алфавита и лексемы языка формируются математические и логические выражения.

Структура программы на языке С.

Простейшая программа на языке С имеет следующую структуру:

#<Директивы препроцессора>

main()

{

<тело функции main>

}

Директивы препроцессора имеют вид:

#include <имя_файла.h>

Эти директивы позволяют вставить в программу заранее подготовленные тексты из включаемых (заголовочных) файлов. Сформированный таким образом полный текст программы поступает на компиляцию. Наиболее часто подключаемые файлы:

# include <stdio.h>

# include <stdlib.h>

# include <math.h>

Главная функция main. Выполнение программы начинается с вызова функции main(). Поэтому каждая программа на языке С должна содержать функцию main(). Следующая строка

{

содержит открывающую фигурную скобку, обозначающую начало тела функции main(). Фигурные скобки в языке С всегда используются парами (открывающая и закрывающая). Закрывающая скобка обозначает конец функции main().

Тело функции main состоит из последовательности опе­раторов, причем работа программы начинается именно с первого оператора этой функции. Отдельные операторы в теле функции отделяются друг от друга точкой с запятой.

Пример простейшей программы.

#include <stdio.h>

Void main()

// программа на языке Си

{

printf("Моя первая программа на Си \n");

}

Команда #include указывает, что прежде чем транслировать программу необходимо включить в нее функции вывода printf() из файла stdio.h

Файл с именем stdio.h содержит информацию о вводе-выводе.

Строка main() содержит название функции, с которой всегда начинается программа. Пустые скобки обозначают, что эта функции, но она без параметров.

После символов // стоят комментарии (для одной строки), (комментариями также называются символы, стоящие между /* и */).

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

В строке printf ("Моя первая программа на Си \n ") содержится стандартная функция печати Си.

Символ \n - обозначает перевод строки на новую строку после печати.

Типы данных в языке С

Чтобы реализовать алгоритм, программам необходимо работать с данными - числами, символами, т.е. объектами, которые несут в себе информацию, предназначенную для использования. Некоторые данные устанавливаются равными определенным значениям еще до того, как программа начинает выполняться, а после ее запуска такие значения сохраняются неизменными на всем протяжении работы программ. Эти данные называются константами. Данные, которые могут изменяться, или же им могут быть присвоены значения во время выполнения программы, называются переменными.

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

<имя тип> <список переменных> ;

В языке С определены 3 типов данных, которые можно назвать базовыми или простами:

char - символьный,

int - целый,

float - с плавающей точкой или вещественный.

Типы char и int являются целыми типами и предназначены для хране­ния целых чисел, хотя название типа char - символьная переменная.

Переменные типа double и float являются числами с плавающей точкой.

На основе этих базовых типов строятся дальнейшие типы данных.

Простейшим приемом является использование модификаторов (modifiers) типа, которые ставятся перед соответствующим типом.

В стандарте ANSI языка С такими модификаторами являются следующие зарезервированные слова:

signed - знаковый,

unsigned - беззнаковый,

long - длинный,

short - короткий.

double - двойной точности

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

Таблица 1.1

Размер переменных целого типа

Целый тип

Размер в

байтах (битах)

Интервал изменения

int

2 (16) или 4(32)

от -32768 (-232)

до 32767 (232-1)

unsigned int

2 (16)

от 0

до 65535

signed int

2 (16)

от -32768

до 32767

short int

2 (16)

от -32768

до 32767

unsigned short int

2 (16)

от 0

до 65535

signed short int

2 (16)

от -32768

до 32767

long int

4 (32)

от -2147483648

до 2147483647

signed long int

4 (32)

от -2147483648

до 2147483647

unsigned long int

4 (32)

от 0

до 4294967295

Таблица 1.2

Размер переменных вещественного типа

Вещественный тип

Размер в

байтах (битах)

Интервал изменения

float

4 (32)

от 3.4Е-38

до 3.4Е+38

double

8 (64)

от 1.7Е-308

до 1.7Е+308

long double

10 (80)

от 1.7Е-4932

до 1.7Е+4932

Таблица 1.3

Размер переменных символьного типа

Символьный тип

Размер в

байтах (битах)

Интервал изменения

char

1 (8)

от -128

до 127

unsigned char

1 (8)

от 0

до 255

signed char

1 (8)

от -128

до 127

Примеры объявлений (описаний) переменных:

int х=0, у, z=1;

float radius;

unsigned char ch=’q’;

long double integral;

long LL;

Функции ввода и вывода

Язык Си содержит множество стандартных функции ввода–вывода.

Функция форматированного вывода printf()

Функция позволяет вывести информация на экран: простые сообщения, значения переменных и специальные символы. Функция определяется в библиотеке <stdio.h>. Синтаксис функции:

printf(<управляющая строка>, <список переменных>);

где <список переменных> - перечень идентификаторов переменных, значения которых необходимо вывести на экран.

<управляющая строка> - строка, которая может содержать:

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

б) спецификации формата вывода переменных;

в) специальные символы или симвлы управляющие последовательности;

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

Таблица 4

Перечень основных спецификаций

Формат спецификации

Назначение

ЦЕЛЫЕ ЧИСЛА

%d

целое десятичное число

%x

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

%o

целое восьмеричное число

%u

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

%ld

число типа длинное целое

ВЕЩЕСТВЕННЫЕ ЧИСЛА

%f

вещественное число в формате xx.xxxxxx

%e

вещественное число в научном формате xx.xxxxx e+xx

%g

вещественное число в форматах %f или %e (в какой форме запись будет короче)

%lf

вещественное число двойной точности

ПРОЧЕЕ

%c

символ

%s

строка

%p

указатель

Управляющие последовательности (эскейп-последовательности)- коды, не имеющие графического представления на экране дисплея, клавиатуре или принтере. Для их изображения используются комбинации из нескольких символов, имеющих графическое представление. Каждая такая комбинация начинается с символа ‘\’ (обратная косая черта - backslash)

Полный набор эскейп-последовательностей таков:

\а сигнал-звонок

\b возврат-на-шаг (забой)

\f перевод-страницы \n новая-строка

\r возврат-каретки

\t горизонтальная-табуляция

\v вертикальная-табуляция

\\ обратная наклонная черта

\? знак вопроса

\' одиночная кавычка

\" двойная кавычка

\ooo восьмеричный код

\xhh шестнадцатеричный код

В функции printf() существует возможность задания вывода переменных определенного формата, а именно, можно задавать ширину поля переменных, определять точность вывода вещественных переменных, определять тип выравнивания данных и т.д. В этом случае спецификации формата записывается в такой форме:

%[флаг][ширина].[точность]спецификация

где флаг – тип выравнивания (пусто – выравнивания по правому краю, `–` – выравнивания по левому краю, `+` – всегда печатать знак числа);

ширина – общая длина поля вывода, т.е. общее количество символов при выводе, включая знак и десятичную точку;

точность – количество цифр числа после запятой.

Примеры спецификаций формата:

%12.4f – вывод вещественной переменной с выравниванием по правому краю, общее количество символов при выводе –12 позиций, количество знаков после десятичной точки – 4;

%-+10.0f – вывод вещественной переменной с выравниванием по левому краю и обязательным выводом знака числа, общая длина поля вывода – 10 позиций, знаки после десятичной точки не выводятся;

%08d – вывод целой переменной с выравниванием по правому краю, ширина поля – 8 позиций, слева число дополняется нулями;

%16s – вывод строки, ширина поля вывода – 16 позиций.

Функция вывода строки puts

Функция puts выводит строку Привет, студент на экран. Например:

#include <stdio.h>