Основы программирования на языке с 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основы программирования на языке с



ПРИЛОЖЕНИЕ В

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С

Язык C является широко распространенным языком программирования. Он был создан в начале 70-х годов 20-го столетия в процессе разработки операционной системы UNIX, ее программное обеспечение написано на C. В связи с этим данный язык называют языком системного программирования, так как он удобен для написания операционных систем и других системных программ. Вместе с тем он является универсальным языком программирования, так как с равным успехом использовался при написании больших вычислительных программ, программ для обработки текстов и баз данных.

Элементы языка С

Комментарии

Комментарии предназначены для записи в программе пояснений к отдельным операторам или группам операторов. Комментарии могут быть однострочными и многострочными.

Форма записи однострочного комментария:

/* текст комментария */

Пример. Однострочный комментарий к оператору ввода данных с клавиатуры:

/* Ввод исходных данных */ или

scanf(“%d%f”, &k, &p); /* Ввод исходных данных */

Форма записи многострочного комментария:

/* строка 1 комментария

строка N комментария */

Пример. Многострочный комментарий, содержащий сведения о программе и ее разработчиках:

/* ….Название программы….

…. Программисты ….

…. Название фирмы ….*/

 

Идентификаторы

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

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

a_f1

В идентификаторах нельзя использовать следующие символы: .:; + / & #,..

Идентификаторы могут начинаться: с букв, с _ (подчеркивание), но не с цифр,

например:

x1 alfa size_of_memory _art - правильно 5ats - неправильно

 

Данные

Данные – это величины, с которыми в программе выполняются различные операции (арифметические, логические, ввода, вывода).

К данным относятся: константы, переменные, массивы, указатели, структуры. Рассмотрим вначале константы и переменные, а остальные виды данных – позже.

 

Константы

Константы – это величины, которые в процессе работы программы не изменяют своих значений. В языке С имеется несколько типов констант:

1) Целые числа – различают три вида: десятичные, восьмеричные, шестнадцатеричные.

- десятичные: используется десять цифр (0…9) и знак - (минус) для отрицательных чисел

45, -126, 1389

- восьмеричные: используется восемь цифр (0,1,2,3,4,5,6,7), первой цифрой в числе должен быть 0

0135→1358 024→248

- шестнадцатеричные: используется 16 символов (0…9ABCDEF), впереди числа должно быть записано 0х

0х6A9F →6A9F 16 0х5E →5E 16 0х5792→579216

2) Вещественные числа – предназначены для записи действительных чисел, используется 2 формы записи:

- с десятичной точкой: 251,46 → 251.46 -17,392 → -17.392

- с порядком: m E p → m*10p, где m– мантисса, Е – основание степени 10, р – порядок (степень 10):

23,69*10 -8 → 23.69Е-8 = 2.369Е-7 152,34*10 6 → 152,34Е6 = 1.5234Е8

3) Символьные константы – это отдельные символы из таблицы ASCII (256 символов или 28, т.к. для кодирования символов используется 8 бит или 1 байт):

‘ A ‘ ‘! ‘ ‘ 5 ‘

‘ 5 ‘ ≠ 5 т.к. ‘ 5 ‘ – символ, занимает 1 байт, а 5 – число, занимает 2 байта

4) Строковые константы – это последовательность символов, заключенная в кавычки:

“Исходные_данные“

В конце строки автоматически записывается служебный символ ‘\0‘ – признак конца строки. Длина строки равна количеству символов плюс служебный символ.

 

Переменные

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

Форма описания переменных:

Тип имя1, имя2, …, имяN;

где Тип – название типа данных, значение которого может прини­мать переменная;

имяI – идентификатор для обозначения переменной (имя пере­менной).

Типы данных переменных: стандартные, нестандартные (определяемые программистом).

 

Стандартные типы переменных

1. Целый тип:

short, int – 2 байта, целый тип со знаком ±

long – 4 байта, длинный целый тип со знаком ±

unsigned – целый тип без знака, добавка к типу
unsigned short, unsigned int → unsigned – 2 байта, беззнаковый целый тип
unsigned long - 4 байта, беззнаковый длинный целый тип
2. Вещественный тип: точность
float – 4 байта (нормальная длина) 6 цифр
double – 8 байтов (двойная длина) 16 цифр
3. Символьный тип: char может использоваться в 3 вариантах
а) 1 символ из кодовой таблицы ACSII, занимает 1 байт;
б) короткие целые числа со знаком, занимающие 1 байт;

в) unsigned char - короткие целые числа без знака, занимающие 1 байт.

Примеры описания переменных

int k, m;

long d, f, h;

unsigned n;

unsigned long v, w;
float x, a, b;

double t, z, q;
char p, s;

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

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

Форма записи инициализации переменных:

Тип имя = значение;

Например:

int k=10, m;

float x=–3.5, eps=1.0e–5, y, z;

char p=’!’, s=37, q;

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

Имеется два вида арифметических операций:

1. Двухместные, в которых имеется два операнда

+ сложение a + b
- вычитание a - b
* умножение a * b
/ деление a / b
% остаток от целочисленного деления a % b

(8%2 → 0, 10%3 → 1)

2. Одноместные, в которых имеется один операнд

++ - увеличение на 1 a++ → a=a+1
-- - уменьшение на 1 a-- → a=a-1

Арифметические выражения

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

Правила записи выражений следующие:

1. Выражение записывается в одну строку
x + x+ 1.5/y

2. Знаки операций не переносятся
1.8*sin(x-12.1) -
exp(2.9*y)

3. Выражение вычисляется слева направо с учетом приоритетов операций:

Приоритеты операций:

1. Вычисление функций 2. *, /, % 3. +, -

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

(2.7*x + 1.3) / (y – 5.1)

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

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

Общий вид программы:

# include …...... Директивы

# define …… препроцессора

……….

void main () главная функция программы

{

описание 1;

………….... описательная часть

описание М;

оператор 1;

…………… выполняемая часть

оператор N;

}

 

Пример простой программы на языке C

Ниже приведен исходный текст простой программы, составленной на языке C, в которой производится описание вещественного массива x из 20 элементов, вычисление значений его элементов, определение их среднего арифметического значения и вывод результатов на экран.

 

# include <stdio.h> /* Включение файла с описанием функций ввода-вывода */

# include <math.h> /* Включение файла с описанием математических функций */

# include <conio.h> /* Включение файла с описанием функций управления консолью*/

void main ()

{

int i;

float x[20], s;

clrscr();

printf(“ Массив X \n”);

for (i=0; i<20; i++)

{ x[i]=i*1.5*cos(2.1*i);

s+=x[i];

printf(“%.1f”,x[i]);
}
s/=20;
printf(“Среднее значение S=%.3f \n”,s);
getch(); /* Ожидание нажатия любой клавиши*/
}

Операторы языка С

Операторы предназначены для выполнения в программах различных операций: арифметических, логических, ввода, вывода.

 

Оператор присваивания

Данный оператор производит присвоение переменной, указанной в левой его части, значения выражения, стоящего в правой части оператора.

Формы записи оператора:

а) простой оператор

V = a;

где V – переменная;

= – операция присваивания (положить равным);

а – арифметическое выражение.

Примеры:

X = 1.8;

Y = 2.7*exp(sin(x + 5.1));

б) многоместный оператор

C = D = M = … = X = V = a;

x = a = f = 2.7; → x=2.7; a=2.7; f=2.7;

в) совмещенный оператор

v+ = a; → v = v + a;

v- = a; → v = v – a;

v* = a; → v = v * a;

v/ = a; → v = v / a;

v%= a; → v = v % a;

Примеры:

X+ = 0.5; → X = X + 0.5;

P* = y; → P = P * y;

Составной оператор

Используется для объединения нескольких операторов в один блок.

Форма записи:

{
оператор 1;
…………
оператор N;

}
Пример:
{
k++;

s+ =y;

}

Вывод данных на дисплей

Используется стандартная функция printf (…);

В начале программы необходимо записать директиву препроцессора

#include <stdio.h>

Форма записи:

printf (“ управляющая строка “, список вывода);

В управляющей строке записываются:

- форматы - % тип

- текст – записывается прямо в управляющей строке

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

‘\n’ – перевод курсора на начало следующей строки;

‘\t’ - табуляция (курсор сдвигается вправо на 6 позиций)

Список вывода – перечень переменных, выражений, значения которых будут выведены на экран:

printf (“…”, a, x, f, z);

Форматы данных

1. Для целых значений (чисел):

%d – десятичное число с знаком

%u – десятичное число без знака (положительное)

%o – восьмеричное число

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

2. Для вещественных чисел:

%f – вещественное число с точкой xxx.yyy

%e – вещественное число с порядком xxx.yyyE±pp

%g – вывод по формату %f или %e (автоматически)

3. Для символьных значений

%c – один символ

%s – строка

Пример:

Описания: int n = -125;

unsigned k = 10;
float t = 29.361, v = -3.692E-5;

char q = ‘!’, mc[10] = “компьютер”;

Вывод: printf (“ Исходные данные: \n”);

printf (“ n = %d k = %u t = %f \n”, n, k, t);

printf (“ v = %e q = %c mc = %s \n”, v, q, mc);

Получим на экране:

Исходные данные:

n = -125 k = 10 t = 29.361000

v = -3.692000E-05 q =! mc = компьютер

Ввод данных с клавиатуры

Используется стандартная функция scanf(…);

В начале программы необходимо записать директиву препроцессора

#include <stdio.h>

Форма записи:

scanf(“управляющая строка”, список адресов данных);

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

“%d%f%c”

Список адресов: &имя переменной1, …., &имя переменнойN

int m; &m → адрес m

float b; &b → адрес b

char d; &d → адрес d

scanf(“%d%f%c”, &m, &b, &d);

Для удобства работы пользователя в программе перед вводом необходимо выводить подсказку:

printf(“Введите значения m b d:\n”);

scanf(“%d%f%c”, &m, &b, &d);

 

3.5. Оператор перехода goto

Предназначен для изменения последовательности выполнения операторов в программе.

Форма записи:

goto M;

где М– метка оператора, обозначается обычным идентификатором.

Пример:

lab1: y = 2*x + 1.5;

..........

goto lab1;
..........

goto m21;

..........

m21: k++;

3.6 Условный оператор if и условная операция

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

Имеется 2 формы записи условного оператора:

1. Полная форма записи:

if (условие) оператор 1;

else оператор 2;

Если условие имеет значение "истина" (true), то выполняется оператор 1, в противном случае во второй части оператора (else) - выполняется оператор 2.

2. Сокращенная форма записи:

if (условие) оператор 1;

Если условие имеет значение "истина" (true), то выполняется оператор 1, в противном случае - оператор 1 пропускается и выполняется следующий в программе оператор.

В языке С нет специального логического типа данных, поэтому для задания логических значений используется целый тип. Если значение некоторой целой переменной не равно 0, то это трактуется как "истина" (true), если же переменная имеет значение равное 0, то это трактуется как "ложь" (false).

Примечание: оператор 1 и оператор 2 могут быть простыми или составными

if (условие) { оператор 1_1;

оператор 1_2;

.... }

else оператор 2;

Условия в операторе if

В условном операторе можно записывать два вида условий:

1) отношения; 2) логические выражения.

Отношение – два арифметического выражения, связанных знаком отношения. Знаки отношений:

< <= > >= = =!=

       
   
 


равняется не равно

Например:

if (a – 2*z >= 1)... при: a = 6, z = 2, получим true; a = 5, z = 4, получим false

if (k = = 0)...

if (1.5*y = = 2+z*a)...

if (p!= 5)...

Логическое выражение – два отношения, связанных логической операцией (или одно отношение с указанием логической операции).

В языке С используется три логических операции:

|| - логическое сложение (или, or)

&& - логическое умножение (и, and)

! – логическое отрицание (не, not)

 

Таблица истинности логических операций

A B A || B A && B !A
f f t t f t f t f t t t f f f t t t f f

Обозначения: t – true (истина), f – false (ложь)

Примеры записи логических выражений:

1. Записать условие или -3 ≤ x ≤ 5

if (x >= -3 && x <= 5)

2. Записать условие

if (x < 0 || x > 3)

3. if (!(x > 2) && y < 4)

Примеры записи оператора if:

a) if (x+1 > a) y = 2*pow(x,3);

else y = a*sin(x);

б) if (y > 1) s+ = y;

в) if (t < b-5)

if (z > 5) v = 2.5*exp(t+1);

else v = 1.3*sin(z/2);

 

Условная операция

Условная операция является упрощенной формой условного оператора.

Форма записи условной операции:

(условие)? выражение1: выражение2

где условие – отношение или логическое выражение;

выражение1, выражение2 – арифметические выражения;

? и: - разделительные знаки.

Выполняется условная операция следующим образом. Вначале проверяется условие. Если оно имеет значение "истина", то вычисляется выражение1, в противном случае - выражение2.

Например, необходимо вычислить max – наибольшее из двух чисел a и b.

max = (a>b)? a: b;

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

 

3.7. Оператор – переключатель switch

Предназначен для выбора одного из вариантов выполнения действий в программе.

Форма записи:

switch (выражение)

{

case конст.1: оператор;

........

оператор;

case конст.2: оператор;

........

оператор;

..................

default: оператор;

........

оператор;

}

где

выражение – называется селектор, должен иметь тип int или char;

case конст.i: – выбор i–го варианта действий, конст.i – константа типа int или char;

default: - определяет действия, когда не выбран ни один из вариантов, присутствие

необязательно

Принцип работы оператора switch:

1. Вычисляется выражение;

2. Производится сравнение выражения с конст.1, конст.2,....

3. Если найдена конст.i = = выражение, то выполняются операторы за конст.i: всё до конца switch;

4. Если нет совпадения выражения ни с одной конст., то выполня­ются операторы за default, когда default: отсутствует, ничего не выполняется.

Для выполнения операторов только для выбранного варианта, необ­ходимо последним оператором для i-го case записать оператор break;

{

case конст.i: оператор;

оператор;

break;

case............

}

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

f=a*sinx (1)

f=a*cosx (2)

f=a*tgx (3)

выход (0)

Текст программы:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main ()

{ float f, a, x;

int num;

clrscr ();

printf(“input a, x\n”);

scanf(“%f%f”,&a,&x);

lab1: printf(“select variant of calculation:\n”);

printf(“ 1-a*sin(x)\n 2-a*cos(x)\n 3-a*tan(x)\ 0-exit\n”);

scanf(“%d”,&num);

switch(num)

{

case1: f=a*sin(x);

break;

case2: f=a*cos(x);

break;

case3: f=a*tan(x);

break;

case0: printf(“end of program\n”);

exit(0);

default: printf(“Error of choice\n”);

printf(“Press any key to retry\n”);

getch();

clrscr();

goto lab1;

}

printf(“f=%.3f\n”,f);

printf(“Press any key for selection continue \n”);

getch();

clrscr();

goto lab1;

}

Операторы цикла

Эти операторы предназначены для организации многократных повторений наборов действий (циклов) в программах.

Имеется 3 вида операторов цикла:

1. Цикл типа while

2. Цикл типа do…while

3. Цикл типа for

Оператор цикла типа while

Форма записи:

while (условие)

оператор;

где условие – логическое выражение;

оператор – выполняемый в цикле оператор или тело цикла.

Схема работы такого цикла: пока условие является истинным (true), выполняется оператор и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.

Такой цикл называют циклом с предусловием.

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

while(условие)

{ оператор 1;

.........

оператор М;

}

Пример: Вычислить - x2 для -2 ≤ x ≤ 2 Δx = 0,1

определить К – количество у > 0, вывести x, y, k

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main ()

{ float x = -2, y;

int k = 0;

while (x <= 2)

{ y = sqrt(fabs(x)) – x*x;

printf("x=%.1f y=%.3f\n", x, y);

if (y>0) k ++;

x+ =0.1;

}

printf(“k=%d\n”,k);

}

Оператор цикла типа do…while

Форма записи:

do или do
оператор; оператор1;

while (условие);........

оператор М;

while (условие);

Схема работы такого цикла: сначала выполняется оператор, потом проверяется условие, если условие является истинным (true), выполняется оператор и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.

Такой цикл называют циклом с постусловием.

Пример: Условие задачи то же самое.

do

y = sqrt (fabs (x)) – x*x;

printf (“x=%.1f y=%.3f\n”, x, y);

if (y > 0) k ++;

x+ = 0.1;

while (x<=2);

printf (“k=%d\n”,k);

Оператор цикла типа for

Форма записи:

1. for (выражение1; выражение2; выражение3)
оператор;

или с составным оператором в теле цикла

2. for (выражение1; выражение2; выражение3)
{ оператор1;

.........

операторМ;

}

где выражение1 – задаёт начальное значение параметру цикла, а также начальные

значения другим переменным

for (t = -5, s=0, p=1; …) t – параметр цикла

выражение2 – логическое выражение, которое задаёт условие работы цикла

for (…; t<=10;…)

(…; t>=-5 && t<=10; …)

выражение3 – задаёт изменение параметру цикла, а также другим переменным

for (…;…; t+ =0.5)

(…;…; t+ =0.5, s+ =y, p* =y)

Схема работы такого цикла: сначала выполняется выражение1, потом проверяется выражение2, если оно истинно, то выполняются оператор и выражение3, снова проверяется выражение2 и т.д.

Пример: Условие то же самое

.......

{ float x, y;

int k;

for (x=-2, k=0; x<=2; x+=0.1)

{ y=sqrt(fabs(x))-x*x;

printf (“x=.... “, x, y);

if (y>0) k++;

}

printf (“k=.... “, k);

}

 

Сложные (вложенные) циклы

Сложный цикл образуется, когда один цикл входит в другой цикл и т.д.

Уровень сложности цикла – количество вложенных друг в друга циклов.

Пример сложного цикла:

Вычислить

f = 2,7*sin(x) + 1,3*cos(y), где величины x и y изменяются следующим образом:

-3 ≤ x ≤ 3 Δx = 0,1 -4 ≤ y ≤ 4 Δy = 0,2

Рассмотрим 2 варианта реализации: 1. С использованием цикла while; 2. С использованием цикла for.

1. float x = -3, y;

while (x<=3)

{ y = -4;

while (y <=4)

{ f = 2.7*sin(x) + 1.3*cos(x);

printf(“x=%.1 y=%.1f f=%.3f\n”, x, y, f);

y+ = 0.2;

}

x+=0.1;

}

 

2. float x, y;

for (x=-3; x<=3; x+=0.1)

for (y=-4; y<=4; y+=0.2)

{

f=2.7*sin(x)+1.3*cos(y);

printf(“x=%.1 y=%.1f f=%.3f\n”, x, y, f);

}

Массивы в языке С

Массив – набор значений одного типа, обозначенных общим именем.

Например: массив X = {x1, x2, …, x50} = {xi}, i = 1…50

Размерность массива – количество индексов у элемента массива.

X = {xi} – одномерный массив (Вектор)

Y = {yij} – двухмерный массив (Матрица)

Z = {zijk} – трёхмерный массив (Куб чисел)

Y, Z – многомерные массивы.

Одномерные массивы

Форма описания одномерного массива:

тип имя [к];

где к – количество элементов в массиве, целое число.

int p[10];

float x[50];

Начальный индекс элемента массива всегда равен 0.

p[0] p[1] … p[9]

x[0] x[1] … x[49]

Инициализация массива (задание его элементам начальных значений):

тип имя [k] = { конст1, конст2, …, констК};

int d[5] = {-1, 2, 7, -4, 10};

d[0]= = -1 d[1]= = 2 d[2]= = 7 … d[4]= =10

Для работы с одномерными массивами чаще всего используются простые циклы типа for, параметром которых является индекс элемента массива. Например: необходимо вычислить и вывести на экран элементы одномерного массива y[30].

float y[30];

int i;

for (i=0; i<30; i++)

{ y[i] = 1.5*sin(2.1*i);

printf(“y[%d]=%.3f\n”, i, y[i]);

}

 

Многомерные массивы

Виды многомерных массивов:

а) двухмерные массивы {aij} – матрицы

б) трёхмерные массивы {bijk} – куб чисел

в) четырёхмерные массивы {cijkl} и т.д.

Форма описания многомерного массива:

тип имя [k1] [k2] … [kn];

где ki – количество элементов по i-му индексу.

Общее число элементов многомерного массива равно

kобщ = k1*k2*…*kn

int d[5][10]; kd = 50 эл-тов.

float x[7][10][5]; kx = 350 эл-тов.

Начальные индексы у элементов многомерных массивов равны 0.

Индексы для элементов массива d[5][10]:

d [0][0] d[0][1] d[0][2] … d[0][9] d[1][0] … d[4][9]

Индексы для элементов массива x[7][10][5]:

x[0][0][0] x[0][0][1] ……………x[6][9][4]

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

Инициализация многомерных массивов:

int t[3][4] = { {2, 7, -1, 10},

{5, 12, 18, -3},

{11, -8, 25, 4} };

Для работы с многомерными массивами чаще всего используются сложные циклы for. Количество операторов цикла for равно размерности массива. Параметрами этих циклов являются индексы элементов массива. Например: необходимо вычислить и вывести на экран элементы двухмерного массива z[5][7].

int i, j;

float z[5][7];

printf(“Массив Z\n”);

for (i=0; i<5; i++)

{

for (j=0; j<7; j++)

{

z[i][j]=-1.9*i + 2.5*j;

printf(“%.1f “, z[i][j]);

}

printf(“\n”);

}

Указатели и массивы

1. В языке С имя массива – это указатель-константа на начало массива
int p[10]; p= =&p[0]

float a[5][7]; a= =&a[0][0]

Для двухмерного массива запись его имени с одним индексом задает адрес начала соответствующей строки:

a[i] = =&a[i][0] – адрес i-й строки

2. С элементами массивов можно работать через указатели. Для этого указателю необходимо присвоить адрес начала массива, а затем можно получить доступ к любому его элементу путем прибавления к указателю индекс этого элемента.

В одномерном массиве x[25] расположение элементов следующее:
x x[0] x[1] …. x[24]

       

 

float x[25], *ptx;
ptx = x;

i-й элемент массива: x[i] → *(ptx+i)

В адресном выражении (ptx+i) - +1 – это увеличение адреса на длину float

x[5] → *(ptx+5)

 

В двухмерном массиве m[5][6] расположение элементов следующее:

m00 m01 m02 …. m05 m10 m11 m12 … m45

                 

 

int m[5][6], *ptm;

ptm=m;

i-й j-й элемент массива: m[i][j]→ *(ptm+i*6+j)

В адресном выражении (ptm+i*6+j) к адресу начала массива ptm прибавляется смещение на количество предыдущих строк i*6 и смещение по текущей строке j.

m[1][2] = = *(ptm+1*6+2)

 

ПРИЛОЖЕНИЕ В

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С

Язык C является широко распространенным языком программирования. Он был создан в начале 70-х годов 20-го столетия в процессе разработки операционной системы UNIX, ее программное обеспечение написано на C. В связи с этим данный язык называют языком системного программирования, так как он удобен для написания операционных систем и других системных программ. Вместе с тем он является универсальным языком программирования, так как с равным успехом использовался при написании больших вычислительных программ, программ для обработки текстов и баз данных.

Элементы языка С

Комментарии

Комментарии предназначены для записи в программе пояснений к отдельным операторам или группам операторов. Комментарии могут быть однострочными и многострочными.

Форма записи однострочного комментария:

/* текст комментария */

Пример. Однострочный комментарий к оператору ввода данных с клавиатуры:

/* Ввод исходных данных */ или

scanf(“%d%f”, &k, &p); /* Ввод исходных данных */

Форма записи многострочного комментария:

/* строка 1 комментария

строка N комментария */

Пример. Многострочный комментарий, содержащий сведения о программе и ее разработчиках:

/* ….Название программы….

…. Программисты ….

…. Название фирмы ….*/

 

Идентификаторы

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

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

a_f1

В идентификаторах нельзя использовать следующие символы: .:; + / & #,..

Идентификаторы могут начинаться: с букв, с _ (подчеркивание), но не с цифр,

например:

x1 alfa size_of_memory _art - правильно 5ats - неправильно

 

Данные

Данные – это величины, с которыми в программе выполняются различные операции (арифметические, логические, ввода, вывода).

К данным относятся: константы, переменные, массивы, указатели, структуры. Рассмотрим вначале константы и переменные, а остальные виды данных – позже.

 

Константы

Константы – это величины, которые в процессе работы программы не изменяют своих значений. В языке С имеется несколько типов констант:

1) Целые числа – различают три вида: десятичные, восьмеричные, шестнадцатеричные.

- десятичные: используется десять цифр (0…9) и знак - (минус) для отрицательных чисел

45, -126, 1389

- восьмеричные: используется восемь цифр (0,1,2,3,4,5,6,7), первой цифрой в числе должен быть 0

0135→1358 024→248

- шестнадцатеричные: используется 16 символов (0…9ABCDEF), впереди числа должно быть записано 0х

0х6A9F →6A9F 16 0х5E →5E 16 0х5792→579216

2) Вещественные числа – предназначены для записи действительных чисел, используется 2 формы записи:

- с десятичной точкой: 251,46 → 251.46 -17,392 → -17.392

- с порядком: m E p → m*10p, где m– мантисса, Е – основание степени 10, р – порядок (степень 10):

23,69*10 -8 → 23.69Е-8 = 2.369Е-7 152,34*10 6 → 152,34Е6 = 1.5234Е8

3) Символьные константы – это отдельные символы из таблицы ASCII (256 символов или 28, т.к. для кодирования символов используется 8 бит или 1 байт):

‘ A ‘ ‘! ‘ ‘ 5 ‘

‘ 5 ‘ ≠ 5 т.к. ‘ 5 ‘ – символ, занимает 1 байт, а 5 – число, занимает 2 байта

4) Строковые константы – это последовательность символов, заключенная в кавычки:

“Исходные_данные“

В конце строки автоматически записывается служебный символ ‘\0‘ – признак конца строки. Длина строки равна количеству символов плюс служебный символ.

 

Переменные

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

Форма описания переменных:

Тип имя1, имя2, …, имяN;

где Тип – название типа данных, значение которого может прини­мать переменная;

имяI – идентификатор для обозначения переменной (имя пере­менной).

Типы данных переменных: стандартные, нестандартные (определяемые программистом).

 

Стандартные типы переменных

1. Целый тип:

short, int – 2 байта, целый тип со знаком ±

long – 4 байта, длинный целый тип со знаком ±

unsigned – целый тип без знака, добавка к типу
unsigned short, unsigned int → unsigned – 2 байта, беззнаковый целый тип
unsigned long - 4 байта, беззнаковый длинный целый тип
2. Вещественный тип: точность
float – 4 байта (нормальная длина) 6 цифр
double – 8 байтов (двойная длина) 16 цифр
3. Символьный тип: char может использоваться в 3 вариантах
а) 1 символ из кодовой таблицы ACSII, занимает 1 байт;
б) короткие целые числа со знаком, занимающие 1 байт;

в) unsigned char - короткие целые числа без знака, занимающие 1 байт.

Примеры описания переменных

int k, m;

long d, f, h;

unsigned n;

unsigned long v, w;
float x, a, b;

double t, z, q;
char p, s;

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

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

Форма записи инициализации переменных:

Тип имя = значение;

Например:

int k=10, m;

float x=–3.5, eps=1.0e–5, y, z;

char p=’!’, s=37, q;

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

Имеется два вида арифметических операций:

1. Двухместные, в которых имеется два операнда

+ сложение a + b
- вычитание a - b
* умножение a * b
/ деление a / b
% остаток от целочисленного деления a % b

(8%2 → 0, 10%3 → 1)

2. Одноместные, в которых имеется один операнд

++ - увеличение на 1 a++ → a=a+1
-- - уменьшение на 1 a-- → a=a-1



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 110; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.183.150 (0.4 с.)