- •1 Порядок разработки программного продукта
- •2 Структура программы на языке с
- •Int age; // Поле age
- •Void main(void) // Основная функция
- •3 Типы данных языка с
- •Void main(void)
- •Int *iptr; // Объявление указателя
- •Void main(void)
- •Int *iptr; // Объявление указателя
- •Void main(void)
- •Void show_string(char *string)
- •Void main(void)
- •4 Операции языка с
- •Арифметические операции
- •Void main(void)
- •Void main(void)
- •Логические операции
- •Void main(void)
- •Операции отношения
- •Поразрядные операции
- •Побитовые операции
- •Void main(void)
- •Адресные операции
- •Операция “условие”
- •Void main(void)
- •Операция sizeof()
- •Void main(void)
- •Int size;
- •Void main(void)
- •Int *iptr;
- •Void main(void)
- •Int *list,I;
- •Операция вызова функции
- •5 Операторы языка с
- •Условный оператор if
- •Оператор switch
- •Void main(void)
- •Void main(void)
- •Оператор цикла for
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Цикл while
- •Void main(void)
- •Цикл do ... While
- •Void main(void)
- •Вложенные циклы
- •Void main(void)
- •Void main(void)
- •Int I,j,score;
- •Int scores[line][column];
- •Оператор безусловного перехода
- •Оператор break
- •Void main(void)
- •Оператор continue
- •Void main(void)
- •If (I % 5) continue;
- •Оператор return
- •6 Организация функций
- •Int sum_vect(int V[], int n)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •7 Библиотечные функции
- •7.1 Функции форматного ввода-вывода
- •Int printf(char*format[, argument,...]);
- •Void main(void)
- •Void main(void)
- •Int scanf(char *format[,argument,...]);
- •Функции для работы с файлами
- •Void main(void)
- •Int vect[line];
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •7.3 Графические средства языка с
- •Void main(void)
- •Initgraph(&gdriver, &gmode, ""); // Инициализация графического режима
- •Int maxX, maxY;
- •Void far initgraph(int far *driver, int far *mode, char far *path);
- •Void main(void)
- •Int driver, mode, errorcode;
- •Void far rectangle(int left, int top, int right, int bottom);
- •Void far setviewport(int left, int top, int right, int bottom, int flag);
- •Void far circle(int X, int y, int radius);
- •7.4 Функции для работы со строками
- •Void main (void)
- •Void main (void)
- •Void main (void)
- •Void main (void)
- •Void main (void)
- •7.5 Математические функции
- •Продолжение таблицы а.7
- •Продолжение таблицы а.7
Void main(void)
{
char name[30];
printf (“Как Вас зовут ? ”);
scanf(“%s\n”,name);
printf(“Привет, %s\n”,name);
}
На запрос “Как Вас зовут ?” Вы вводите имя, например, Саша. Из 30 элементов массива будут заняты только первые 4 под имя, а пятым элементом автоматически допишется нулевой байт.
Инициализация символьного массива может осуществляться двумя способами:
посимвольно:
char str[11] = {‘К’,’о’,’м’,’п’,’и’,’л’,’я’,’т’,’о’,’р’,’\0’};
2) как строка символов char str[11] = “Компилятор”.
Второй способ более предпочтителен, так как он короче и нулевой байт добавляется автоматически. В первом случае необходимо дополнить строку нулевым байтом.
Допускается объявление массива символов путем указания заведомо большего размера массива:
char str[80] = “Инициализация”;
можно вообще размер не указывать:
char str[ ] = “Инициализация” .
При работе со строками символов можно не создавать массивы, если использовать указатели.
char *str = “Строка символов”; // Описание и инициализация
С данной строкой символов можно работать как с массивом:
char ch ;
ch = str[0]; // ch присваивается символ ‘С’
ch = str[5]; // ch присваивается символ ‘а’
ch = str[10]; // ch присваивается символ ‘в’
В примере 3.7 показан вывод строки символов в цикле while в функции show_string:
//Пример 3.7.
//Работа с указателем на строку, вывод строки символов
#include <stdio.h>
Void show_string(char *string)
{
while(*string) //Пока не конец строки
putchar(*string++);
}
Void main(void)
{
show_string("Строка символов +++++++++");
}
Для работы со строками в языке С предусмотрена библиотека функций (см. разд. 7.4).
Рассмотрим еще один вариант массива — двумерный (массив одномерных массивов). Форма объявления его следующая:
тип имя[размер1][размер2];
Элементы массива в памяти располагаются последовательно построчно, то есть вначале элементы первой строки, следом второй и т.д. Количество байт в памяти определяется так:
Кол. байт = (размер типа) * (кол. строк) * (кол. столбцов).
Двумерный массив можно представить в виде таблицы (рис. 3.2, а):
int a[2][3]; первый индекс — номер строки, второй — номер столбца (две строки и три столбца). Индексация массива начинается с нуля.
Самый простой способ инициализации массива — при его объявлении указать список инициализаторов:
int m[2][3] = {7,3,2,1,0,4};
int m[2][3] = {{7,3,2,},
{1,0,4 }};
int m[3][3] = {{7,3,2},{1,0,4}};
Размещение объявленного массива в памяти показано на рис. 3.2, б. Количество инициализаторов может не совпадать с количеством элементов массива:
int m[2][3] = {7,5,1,2}; // Инициализации
int m[2][3] = {{7,5},{1,2}}. // различны
Остальные значения не определены (рис. 3.2, в). Можно объявлять массив с неизвестным количеством элементов:
int m[ ][2] = {{1,2},
{3,4},
{5,6}};
размещение показано на рис. 3.2, г.
К произвольным типам данных относятся также структуры (struct), объединения (union) и перечисления (enam). Определение, инициализация и работа со структурой показаны в примере 2.1. Остальные типы здесь не рассматриваются.
Константа — это объект, который нельзя изменять при выполнении программы. Константы могут быть именованными и неименованными. Константы могут быть любого типа, в том числе и “указатель на...”, а также типа “строка”, строковая константа заключается в кавычки (двойные):
name = “Строка символов”.
Рис. 3.2
Именованная константа — константа, которая описана и инициализирована в программе, обращение к ней с помощью идентификатора (имени), например: PI, Bolcman и т.д.
Неименованная константа — не имеет имени и используется непосредственно в тексте выражения, например 3.14; ‘A’; 1 и т.д.