Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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

Алфавит языка.

Алфавитом языка называют присущий данному языку набор символов или «букв», из которых формируются все конструкции языка.

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

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

Переводом программы с языка, на котором она написана, на машинный и анализом ее синтаксиса занимается программа – компилятор. Иногда компилятор называют более общим термином – транслятор.

В программах предусмотрено использовании комментариев, т.е. пояснительного текста, оформленного определенным образом и никак не влияющего на ход выполнения программы.

В языке программирования С комментарии обозначаются символами /* */:

/* Однострочный комментарий */

/* Многострочный
комментарий */

Идентификаторы, или имена, используются для обозначения (идентификации) всех объектов, вводимых в программу. Под объектами понимаются переменные, константы, типы, подпрограммы и т.д. Идентификатор – последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются.

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

Краткий список ключевых слов:

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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.015 с)...