Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Алфавит языка.
Алфавитом языка называют присущий данному языку набор символов или «букв», из которых формируются все конструкции языка.
При использовании любого языка (в том числе и языка программирования) необходимо следить за тем, чтобы все произносимое или написанное было корректно с точки зрения алфавитных конструкций (т.е. синтаксически) и имело определенный смысл (т.е. обладало семантикой).
При разговоре на иностранном языке человек может допускать грамматические ошибки, но если его речь осмыслена, его поймут. При программировании на алгоритмических языках любое предложение в первую очередь должно быть корректно синтаксически, только тогда может идти речь о его семантике.
Переводом программы с языка, на котором она написана, на машинный и анализом ее синтаксиса занимается программа – компилятор. Иногда компилятор называют более общим термином – транслятор.
В программах предусмотрено использовании комментариев, т.е. пояснительного текста, оформленного определенным образом и никак не влияющего на ход выполнения программы.
В языке программирования С комментарии обозначаются символами /* */:
/* Однострочный комментарий */
/* Многострочный
комментарий */
Идентификаторы, или имена, используются для обозначения (идентификации) всех объектов, вводимых в программу. Под объектами понимаются переменные, константы, типы, подпрограммы и т.д. Идентификатор – последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются.
Ключевые (служебные, зарезервированные) слова имеют однозначно определенный смысл и могут использоваться только так, как это задано в языке. Ключевые слова не могут быть переопределены, т.е. их нельзя использовать в качестве имен, вводимых программистом.
Краткий список ключевых слов:
asm | double | new | switch |
auto | else | operator | template |
break | enum | private | This |
case | extern | protected | Throw |
catch | float | public | Try |
char | for | register | typedef |
class | friend | return | typeid |
const | goto | short | union |
continue | if | signed | unsigned |
default | inline | sizeof | virtual |
delete | int | static | void |
do | long | struct | volatile |
while |
В языке С++ был зарезервирован дополнительный набор слов.
Таким образом, алфавит языка С включает:
· Прописные латинские буквы A … Z;
· Строчные латинские буквы a … z;
· Арабские цифры 0 … 9;
· Разделители (знаки пунктуации, различные скобки и иные специальные символы)
· Пробельные символы:SP, H_TAB, CR, LF, V_TAB, FF, Ctrl-Z (конец текстового файла);
· Специальные символы, необходимые для представления символов, не имеющих графического обозначения, а также пробельных символов.
Наиболее употребимы следующие специальные символы:
\n – новая строка;
\t – горизонтальная табуляция;
\r – возврат каретки;
\f – новая страница;
\a – звуковой сигнал;
\ - апостроф;’
\” – двойные кавычки;
\\ - обратный слэш.
Компилятор С(С++) воспринимает одну и ту же строчную и заглавную буквы как разные символы – различает регистр букв.
Структура программы.
Напишем нашу первую программу, выводящую на экран текстовую строку – не будем нарушать традиции.
Пример 1.
# include<stdio.h>
Void main(void)
{printf(“Наше Вам с кисточкой!\n”);
}
Теперь строчка за строчкой разберем, что же здесь написано.
Директива # include подключает заголовочный файл (файл, в котором содержится «заготовка» функции, то есть уже заранее прописанный её заголовок), в данном случае <stdio.h>, содержащий средства поддержки стандартного ввода-вывода;
void main(void) – имя основной программы, оно всегда присутствует и всегда одинаково;
void перед именем программы служит признаком того, что программа не возвращает конкретного значения.
{ } – скобки, ограничивающие тело программы;
printf () – функция вывода данных, находящихся в круглых скобках.
Каждый оператор завершается точкой с запятой, которая является атрибутом оператор, указывающим на его конец.
Заголовочные файлы содержат так называемые прототипы функций. Прототип сообщает компилятору информацию о синтаксисе функции. Если раскрыть заголовочный файл любым текстовым редактором, то можно обнаружить в нем строку, описывающую прототип подключаемой функции. На данном этапе нет необходимости вникать в подробности описания прототипа каждой функции, следует лишь помнить о том, что заголовочные файлы вводят в программы некоторые предварительно объявленные элементы.
Рассмотрим С-программу, содержащую элементы вычислений.
Пример 2.
# include<stdio.h>
Void main(void)
{ int a, b, c;
a=5;
b=10;
c=a+b;
printf (“Значение с=%d\n”,c);
}
Общая структура программы не изменилась, но добавились некоторые моменты:
int a, b, c – объявление трех целочисленных переменных a, b и c;
int – признак того, что переменные имеют целый тип.
Общим правилом при программировании на языке С (как, впрочем, и на большинстве других языков) является то, что прежде чем использовать в программе какую-либо переменную, ее необходимо объявить с указанием типа.
a=5; b=10; - присваивание значений переменным a и b. Объявление переменной приводит к тому, что для нее отводится место в памяти согласно объявленному типу. Значения же переменным следует присваивать в явном виде.
c=a+b; - сложение значения а со значением b и присвоение полученного результата переменной с.
Базовые типы
Программа может работать только с определенными типами данных. Основные типы данных приведены в таблице.
Тип данных | Объем занимаемой памяти, байт | Минимально допустимое значение | Максимально допустимое значение | Комментарий |
signed char | -128 | Знаковое символьное | ||
unsigned char | Беззнаковое символьное | |||
signed short | -32 768 | 32 767 | Знаковое и беззнаковое короткое целое | |
unsigned short | 65 535 | |||
signed int | -32 768 | 32 767 | Знаковое и беззнаковое целое, размер зависит от компилятора | |
unsigned int | 65 535 | |||
signed long | -2 147 483 648 | 2 147 483 647 | Знаковое и беззнаковое длинное целое | |
unsigned long | 4 294 967 295 | |||
float | 3.4E-38 | 3.4E+38 | Различные представления для действительных чисел | |
double | 1.7E-308 | 1.7E+308 | ||
long double | 3.4E-4932 | 3.4E+4932 |
Все целые типы являются знаковыми по умолчанию, но можно объявить их как беззнаковые, которые, занимая тот же объем памяти, что и их знаковые аналоги, представляют только положительные значения, включая нуль. Вследствие этого они могут представлять вдвое больше положительных значений.
Если в процессе каких-либо арифметических действий, например при сложении, результат превосходит максимально допустимое значение для объявленного типа (т. е. при переполнении), значения целочисленных переменных обнуляются.
Логического типа как такового в языке С нет, но целые значения могут представлять истинные и ложные значения в выражениях, трактуемых как логические, причем нулевое значение означает ложь, а ненулевое – истину.
Типы данных с плавающей точкой (вещественные) могут иметь форму записи с десятичной точкой или экспоненциальную форму:
double d1=2.35;
double d2=2.0E-5;
Символьные типы хранят отдельные символы в кодах ASCII.
4. Основные операторы.
При построении выражений используются следующие типы операций:
Арифметические операторы:
* - умножение;
/ - деление;
+ - сложение;
- - вычитание;
% - деление по модулю.
Все перечисленные операции здесь выполняются традиционным образом, кроме операции деления. Особенность операции деления заключается в том, что она дает целый результат, если оба операнда целые. Чтобы получить действительный результат, необходимо иметь хотя бы один действительный операнд. Так, 9/5 даст 1, а 9/5.0 даст 1.8, а 9%5 равно 4.
Необходимо помнить, что все операции в языках программирования следует указывать в явном виде. В большей степени это относится к операции умножения, которую в математике можно опустить, а при программировании – нельзя.
Операторы отношений:
< - меньше;
<= - меньше или равно;
> - больше;
>= - больше или равно;
== - равно;
!= - не равно.
В языка программирования, как и в математике, используются для сравнения.
Оператор присваивания:
Запись
Переменная = выражение;
интерпретируется как «присвоить Переменной значение Выражения», а выполняется следующим образом: вычисляется значение Выражения, стоящего справа от знака присваивания (=), и полученный результат становится значением, которое принимает переменная, стоящая слева от знака присваивания: а=5+2;
Необходимо помнить о том, что знак «=» - это знак присваивания, а не знак равенства. Присваивание является выражением, так как имеет значение, равное присваиваемому результату.
В языке С допустима запись i=j=k=5; - сквозное присваивание одного значение нескольким переменным. Такая форма записи удобна, например, при инициализации нескольких переменных одним значением.
Логические операции:
&& - логическое «И»
|| - логическое «ИЛИ»
! – логическое «НЕ»
Ввод и вывод.
Вывод результатов программы, как было рассмотрено ранее, осуществляется с помощью оператора printf (),ранее был рассмотрен самый простой вид этой команды. Однако, у этого оператора есть несколько форматов записи, применяемых в различных случаях, например для вывода целых чисел, вывода действительных чисел и т.д.
Проиллюстрируем эти форматы примерами.
Printf(“Здравствуй, мир!\n”) – вывод текстовой строки с переводом курсора на новую строку.
Printf(“Значение с=%d\n”, с) – функция вывода имеет некоторую особенность, а именно конструкцию %d, называемую спецификацией преобразования. На ее место будет поставлено значение переменной с, причем % указывает место, а d – тип (целый) подставляемого значения. Пусть с=15, строка, распечатываемая оператором printf, будет иметь вид: Значение с=15.
Printf(“Значение с=%d, f=%f\n”, с, f) – функция для вывода текстовой строки и значений двух переменных c и f, где с имеет тип int, а f – одного из действительных типов.
В общем случае возможны форматы для вывода переменных:
d – аргумент преобразуется в десятичное представление;
o – аргумент преобразуется в восьмеричное представление;
x – аргумент преобразуется в шестнадцатеричное представление;
c – значением аргумента является символ;
s – значением аргумента является строка символов;
e – значением аргумента является величина типа float или double в формате с плавающей точкой;
f – значением аргумента является величина типа float или double в формате с фиксированной точкой;
g – один из форматов e или f;
u – значением аргумента является целое беззнаковое число;
p – значением аргумента является указатель (адрес).
Вместо (или вместе) \n наиболее часто используются следующие управляющие символы:
\n – перевод строки;
\a – кратковременный звуковой сигнал;
\t – горизонтальная табуляция;
\b – возврат курсора на один шаг назад;
\r – возврат каретки.
Очень часто программа должна осуществлять не только вычисления и вывод результатов, но и ввод данных, для этого используется оператор scanf (), использование которого во многом похоже на использование оператора printf (): scanf (“%f,%d ”, &a,&b) – способ организовать ввод двух переменных a - действительного типа и b – целого, перед именем переменной ставится значок &, который указывает на то, что будет прочитано значение и присвоено переменной.
Пример:
# include <stdio.h>
Void main(void)
{float m, p, q;
printf(“Введите значения p и q”);
scanf(“%f, %f”, &p, &q);
m=p/q;
printf(“ m= %f / %f = %f\n”, p, q, m);
}
Таблица основных математических функций
Наименование функции | Обозначение функции | Тип | ||
Возвращаемого значения функции | аргумента | Имя файла описания | ||
Абсолютное значение | abs(x) cabs(x) fabs(x) | int double float | int double float | <stdlib.h> <math.h> <math.h> |
Арккосинус | acos(x) | double | double | <math.h> |
Арксинус | asin(x) | double | double | <math.h> |
Арктангенс | atan(x) | double | double | <math.h> |
Косинус | cos(x) | double | double | <math.h> |
Синус | sin(x) | double | double | <math.h> |
Экспонента ex | exp(x) | double | double | <math.h> |
Степенная функция xy | pow(x,y) | double | double | <math.h> |
Логарифм натуральный | log(x) | double | double | <math.h> |
Логарифм десятичный | log10(x) | double | double | <math.h> |
Корень квадратный | sqrt(x) | double | double | <math.h> |
тангенс | tan(x) | double | double | <math.h> |
Использованная литература:
Ашарина, И.В. Основы программирования на языках С и С++ / И.В. Ашарина – М.: Горячая линия-Телеком, –2002. – 207 с.
Дата публикования: 2015-11-01; Прочитано: 194 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!