- •1. Основные типы данных. Целый, символьный, вещественный, voit
- •2. Структура программы. Примеры простейшей программы, использующей ввод/вывод на экран(сложить 2 числа)
- •2.3. Константы
- •3.1. Условный оператор
- •3.2. Оператор множественного выбора
- •1.4. Операторы
- •1.4.1. Оператор выражение
- •1.4.2. Пустой оператор
- •1.4.3. Составной оператор
- •1.4.4. Оператор if
- •1.4.5. Оператор switch
- •1.4.6. Оператор break
- •1.4.7. Оператор for
- •1.4.8. Оператор while
- •1.4.9. Оператор do while
- •1.4.10. Оператор continue
- •1.4.11. Оператор return
- •1.4.12. Оператор goto
- •6. Статические массивы(умножение матриц) двумерные статические массивы (матрицы).
- •Заполнение матриц.
- •Вывод элементов двумерных массивов.
- •Организация символьного одномерного массива в виде матрицы символов.
- •Квадратные матрицы. Работа с диагональными элементами.
- •Транспонирование матриц.
- •Умножение матрицы на вектор.
- •Умножение матрицы на матрицу.
- •Удаление строк матриц.
- •Включение столбца в матрицу.
- •Преобразование матрицы.
- •Преобразование матрицы в одномерный массив.
- •3.6. Описание и определение функций.
- •Лекция 6. Технология программирования OpenMp
2.3. Константы
В языке Си константы представляют фиксированные величины, которые не могут быть изменены в программе. Константы могут быть любого базового типа данных. Пример констант:
char - 'a','\n','8' |
int - 1, 134, -500 |
unsigned int - 53500 |
long int - 87000, -37, 7L |
short int - 11, 13, -128 |
float - 133.34, 3.36E-6, 5E+5 |
double - 133.45, 133340, -2.789 |
Правила определения типа констант следующие. Целая константа относится к типу int, если эта константа входит в интервал значений типа int. Если эта константа не входит в интервал значений типа int, например - 37750 (а как известно тип int, как правило принимает значения в диапазоне от -32768 до 32767), то она считается константой типа unsigned (применительно к int это уже от 0 до 65535). Если же и этого мало, то она считается константой типа long (т.е. long int). Константа с десятичной точкой считается константой типа double, если она помещается в соответствующий интервал измерения. Для явного задания типа констант используется механизм суффиксов. В качестве суффиксов целочисленных (int) констант используются u,l,h,U,L,H. Для чисел с плавающей точкой - l,L,f,F. Например:
13h, 35H |
- |
short int |
25L, -223l |
- |
long int |
87lu, 88Lu, 89ul |
- |
unsigned long int |
55uh |
- |
unsigned short int |
27.43f, 7.7E-6F |
- |
float |
1.41l, 3.2E+12L |
- |
double |
Символьная переменная - это величина размером в 1 байт, которая используется для представления литер и целых чисел в диапазоне от 0 до 255 или от -128 до 127, в зависимости от того, знаковая переменная или беззнаковая. Символьные константы заключаются в одинарные кавычки. Примеры символьных констант: 'd', '+', '8'. Приведем пример программы с использованием символьных переменных и констант:
#include /* Пример 4 */ main() { char ch; ch='c'; printf("%c",ch); ch='+'; printf("%c%c", ch,ch); } |
|
4. Условный оператор, оператор переключатель-свитч
3.1. Условный оператор
Основная форма условного оператора выглядит следующим образом:
if(условие) оператор; |
else оператор; |
Если значение условия истинно, о выполняется оператор (это может быть и составной оператор), следующий за условием. Если же условие принимае значение ложно, о выполняется оператор, следующий за словом else. В записи оператора if вторая часть (т.е. оператор else) может отсутствовать. Тогда, если условие принимает значение ложно, выполняется следующий оператор программы. В качестве условия может стоять произвольное выражение. В операторе if лишь проверяеся, является ли значение эого выражения ненулевым (истинным) или нулевым (ложным). Рассморим пример программы определения знака воодимого с клавиатуры вещественного числа с использованием нашего оператора if.
#include<stdio.h> /* Пример 9 */ main() { int sgn; float x; printf("Введите число: \n"); scanf("%f",&x); if(x>0) { sgn=1; printf("Число %f\n, положительное sgn = %d\n", x, sgn);} if(x==0) { pritf("Число %f\n равно нулю sgn = %d\n", x, sgn);} if(x<0) {sgn=-1; printf("Число %f отрицательное sgn=%d\n", x, sgn);} } |
|
Нередко возникает необходимость в использовании конструкции вложенных if-else-if:
if(условие1) оператор1; |
else if(условие2) оператор2; |
else if(условие3) оператор3; |
... |
else оператор; |
В такой форме условия оператора if проверяютсяч сверху вниз. Как только некоторое условие принимает значение истинно, выполняется оператор, следующий за этим условием, а вся остальная часть конструкции будет проигнорирована. Поэтому, предыдущую программу можно было бы написать следующим образом:
#include<stdio.h> /* Пример 9 */ main() { int sgn; float x; printf("Введите число: \n"); scanf("%f",&x); if(x>0) { sgn=1; printf("Число %f\n, положительное sgn = %d\n", x, sgn);} if(x<0) {sgn=-1; printf("Число %f отрицательное sgn=%d\n", x, sgn);} else { pritf("Число %f\n равно нулю sgn = %d\n", x, sgn);} } |
|
Для того чтобы проверить, равно число x нулю или нет, можно написать
if(x==0) printf("Число равно нулю ..."); |
else printf("Число не равно нулю ..."); |
Такой же результат можно получить, написав более компактный код
if(!x) printf("Число равно нулю ..."); |
else printf("Число не равно нулю ..."); |
Вложенным оператором if называется конструкция вида
if(x) |
if(y) printf(" ..."); |
else операторX ....; |
В такой форме непонятно, к какому из операторов if относится else. В языке Си оператор else ассоциируется с ближайшим if в соответствующем блоке. Поэтому в указанной конструкции else относится к if(y). Для того чтобы отнести else к if(x), необходимо соответствующим образом расставить операторные скобки:
if(x){ |
if(y) printf(" ..."); |
if(x)} |
else операторX ....; |
Теперь if(y) относится к другому блоку.