- •1.Учебно-методический комплекс дисциплины
- •Данные о преподавателе:
- •1.2 Данные о дисциплине:
- •Выписка из учебного плана
- •1.3 Пререквизиты
- •1.4 Постреквизиты
- •1.5 Цели и задачи дисциплины
- •1.6 Перечень и виды заданий и график их выполнения
- •Виды заданий и сроки их выполнения
- •1.7 Список литературы
- •1.8 Контроль и оценка знаний.
- •1.9 Политика и процедура курса
- •2 Содержание Активного раздаточного материала
- •2,1 Тематический план курса
- •2.2 Конспект лекционных занятий
- •#Define millenium 1000
- •// Нельзя изменять
- •/* Это моя первая программа на Си*/
- •Void main()
- •Void main ()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main(void)
- •If (логическое выражение) оператор 1;
- •Void main()
- •If (логическое выражение)
- •If (условие 1 )
- •If (условие 1 )
- •If (X) printf ("Число не равно нулю");
- •Void main()
- •Void main(void)
- •Void main()
- •Void main()
- •Int n; // Количество узлов интерполяции
- •Int k; // Номер узла
- •Void main()
- •Vvedi 5 7
- •Int *a; // Указатель на массив целых чисел
- •Void main()
- •Int vect[10], s1[50];
- •Int vect [n];
- •Void main( )
- •Int min; // номер минимального элемента
- •Int random ( int n )
- •Void lin(char a)
- •Void z1(int * X, int * y)
- •Void z1(int*, int*);
- •Int имя переменной;
- •Void main()
- •8 Есть цифра
- •8 Есть буква или цифра
- •Int integ;
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Int ocen;
- •Void main( )
- •File *указатель на файл;
- •Fclose(имя_указателя);
- •Void main()
- •Int h; /*дескриптор создаваемого файла*/
- •Void main()
- •Initgraph(&g_driver,&g_mode," ");
- •Vgamed 1 640x350
- •Vgahi 2 640x480
- •Initwindow ( 400, 300 ); // открыть окно для графики 400 на 300
- •Void main(void)
- •Int g_driver,g_mode,g_error;
- •2.3 Планы лабораторных занятий
- •Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (срсп).
- •2.5 Планы занятий в рамках самостоятельной работы студентов (срс).
- •2.6 Тестовые задания для самоконтроля с указанием ключей
- •Глоссарий
#Define millenium 1000
задает символическое имя MILLENIUM для константы 1000. Препроцессор всюду в тексте заменяет это имя на константу 1000, используя текстовую подстановку. Это не очень хороший способ, поскольку при таком задании отсутствует контроль типов;
При описании любой переменной можно добавить модификатор типа const. Например, вместо #define можно использовать следующее описание:
const int MILLENIUM = 1000;
Модификатор const означает, что переменная MILLENIUM является константой, т.е. менять ее значение нельзя. Попытка присвоить новое значение константе приведет к ошибке компиляции:
MILLENIUM = 100; // Ошибка: константу
// Нельзя изменять
После объявления именованной константы в программе вместо самой константы можно использовать ее имя.
Комментарий - это часть программы, которая игнорируется компилятором и служит для удобочитаемости исходного текста программы. Комментарий может располагаться в любом месте программы, где допустимо использование пробела. Комментарием в языке С является любая последовательность символов, заключенная между парами символов /* и */.
/* Это моя первая программа на Си*/
Комментарии очень важны для документирования (пояснения) программы.
Из символов алфавита и лексемы языка формируются математические и логические выражения.
Структура программы на языке С.
Простейшая программа на языке С имеет следующую структуру:
#<Директивы препроцессора>
main()
{
<тело функции main>
}
Директивы препроцессора имеют вид:
#include <имя_файла.h>
Эти директивы позволяют вставить в программу заранее подготовленные тексты из включаемых (заголовочных) файлов. Сформированный таким образом полный текст программы поступает на компиляцию. Наиболее часто подключаемые файлы:
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
Главная функция main. Выполнение программы начинается с вызова функции main(). Поэтому каждая программа на языке С должна содержать функцию main(). Следующая строка
{
содержит открывающую фигурную скобку, обозначающую начало тела функции main(). Фигурные скобки в языке С всегда используются парами (открывающая и закрывающая). Закрывающая скобка обозначает конец функции main().
Тело функции main состоит из последовательности операторов, причем работа программы начинается именно с первого оператора этой функции. Отдельные операторы в теле функции отделяются друг от друга точкой с запятой.
Пример простейшей программы.
#include <stdio.h>
Void main()
// программа на языке Си
{
printf("Моя первая программа на Си \n");
}
Команда #include указывает, что прежде чем транслировать программу необходимо включить в нее функции вывода printf() из файла stdio.h
Файл с именем stdio.h содержит информацию о вводе-выводе.
Строка main() содержит название функции, с которой всегда начинается программа. Пустые скобки обозначают, что эта функции, но она без параметров.
После символов // стоят комментарии (для одной строки), (комментариями также называются символы, стоящие между /* и */).
Фигурные скобки {} отмечают начало и конец тела программы или функции. Они также применяются для объединения нескольких операторов программы в блок.
В строке printf ("Моя первая программа на Си \n ") содержится стандартная функция печати Си.
Символ \n - обозначает перевод строки на новую строку после печати.
Типы данных в языке С
Чтобы реализовать алгоритм, программам необходимо работать с данными - числами, символами, т.е. объектами, которые несут в себе информацию, предназначенную для использования. Некоторые данные устанавливаются равными определенным значениям еще до того, как программа начинает выполняться, а после ее запуска такие значения сохраняются неизменными на всем протяжении работы программ. Эти данные называются константами. Данные, которые могут изменяться, или же им могут быть присвоены значения во время выполнения программы, называются переменными.
В языке С любая переменная характеризуется своим типом. Все переменные должны быть описаны до их использования с помощью операторов объявления типа данных, имеющих следующий вид:
<имя тип> <список переменных> ;
В языке С определены 3 типов данных, которые можно назвать базовыми или простами:
char - символьный,
int - целый,
float - с плавающей точкой или вещественный.
Типы char и int являются целыми типами и предназначены для хранения целых чисел, хотя название типа char - символьная переменная.
Переменные типа double и float являются числами с плавающей точкой.
На основе этих базовых типов строятся дальнейшие типы данных.
Простейшим приемом является использование модификаторов (modifiers) типа, которые ставятся перед соответствующим типом.
В стандарте ANSI языка С такими модификаторами являются следующие зарезервированные слова:
signed - знаковый,
unsigned - беззнаковый,
long - длинный,
short - короткий.
double - двойной точности
В таблице 1, таблице 2, таблице 3 приведены все возможные типы с различными комбинациями модификаторов, использующиеся в языке С. Размер в байтах и интервал изменения могут варьироваться в зависимости от компилятора, процессора и операционной системы (среды).
Таблица 1.1
Размер переменных целого типа
Целый тип |
Размер в байтах (битах) |
Интервал изменения
|
|
int |
2 (16) или 4(32) |
от -32768 (-232) |
до 32767 (232-1) |
unsigned int |
2 (16) |
от 0 |
до 65535 |
signed int |
2 (16) |
от -32768 |
до 32767 |
short int |
2 (16) |
от -32768 |
до 32767 |
unsigned short int |
2 (16) |
от 0 |
до 65535 |
signed short int |
2 (16) |
от -32768 |
до 32767 |
long int |
4 (32) |
от -2147483648 |
до 2147483647 |
signed long int |
4 (32) |
от -2147483648 |
до 2147483647 |
unsigned long int |
4 (32) |
от 0 |
до 4294967295 |
Таблица 1.2
Размер переменных вещественного типа
Вещественный тип |
Размер в байтах (битах) |
Интервал изменения
|
|
float |
4 (32) |
от 3.4Е-38 |
до 3.4Е+38 |
double |
8 (64) |
от 1.7Е-308 |
до 1.7Е+308 |
long double |
10 (80) |
от 1.7Е-4932 |
до 1.7Е+4932 |
Таблица 1.3
Размер переменных символьного типа
Символьный тип |
Размер в байтах (битах) |
Интервал изменения
|
|
char |
1 (8) |
от -128 |
до 127 |
unsigned char |
1 (8) |
от 0 |
до 255 |
signed char |
1 (8) |
от -128 |
до 127 |
Примеры объявлений (описаний) переменных:
int х=0, у, z=1;
float radius;
unsigned char ch=’q’;
long double integral;
long LL;
Функции ввода и вывода
Язык Си содержит множество стандартных функции ввода–вывода.
Функция форматированного вывода printf()
Функция позволяет вывести информация на экран: простые сообщения, значения переменных и специальные символы. Функция определяется в библиотеке <stdio.h>. Синтаксис функции:
printf(<управляющая строка>, <список переменных>);
где <список переменных> - перечень идентификаторов переменных, значения которых необходимо вывести на экран.
<управляющая строка> - строка, которая может содержать:
а) простые сообщения, выводимые на экран без изменения, эти сообщения могут содержать произвольные символы, в том числе и на русском языке;
б) спецификации формата вывода переменных;
в) специальные символы или симвлы управляющие последовательности;
Спецификации формата начинаются с символа %, за которым следует код формата. Перечень основных спецификаций приведен в таблице 4.
Таблица 4
Перечень основных спецификаций
Формат спецификации |
Назначение |
|
ЦЕЛЫЕ ЧИСЛА |
%d |
целое десятичное число |
%x |
целое шестнадцатеричное число |
%o |
целое восьмеричное число |
%u |
целое беззнаковое десятичное число |
%ld |
число типа длинное целое |
|
ВЕЩЕСТВЕННЫЕ ЧИСЛА |
%f |
вещественное число в формате xx.xxxxxx |
%e |
вещественное число в научном формате xx.xxxxx e+xx |
%g |
вещественное число в форматах %f или %e (в какой форме запись будет короче) |
%lf |
вещественное число двойной точности |
|
ПРОЧЕЕ |
%c |
символ |
%s |
строка |
%p |
указатель |
Управляющие последовательности (эскейп-последовательности)- коды, не имеющие графического представления на экране дисплея, клавиатуре или принтере. Для их изображения используются комбинации из нескольких символов, имеющих графическое представление. Каждая такая комбинация начинается с символа ‘\’ (обратная косая черта - backslash)
Полный набор эскейп-последовательностей таков:
\а сигнал-звонок
\b возврат-на-шаг (забой)
\f перевод-страницы \n новая-строка
\r возврат-каретки
\t горизонтальная-табуляция
\v вертикальная-табуляция
\\ обратная наклонная черта
\? знак вопроса
\' одиночная кавычка
\" двойная кавычка
\ooo восьмеричный код
\xhh шестнадцатеричный код
В функции printf() существует возможность задания вывода переменных определенного формата, а именно, можно задавать ширину поля переменных, определять точность вывода вещественных переменных, определять тип выравнивания данных и т.д. В этом случае спецификации формата записывается в такой форме:
%[флаг][ширина].[точность]спецификация
где флаг – тип выравнивания (пусто – выравнивания по правому краю, `–` – выравнивания по левому краю, `+` – всегда печатать знак числа);
ширина – общая длина поля вывода, т.е. общее количество символов при выводе, включая знак и десятичную точку;
точность – количество цифр числа после запятой.
Примеры спецификаций формата:
%12.4f – вывод вещественной переменной с выравниванием по правому краю, общее количество символов при выводе –12 позиций, количество знаков после десятичной точки – 4;
%-+10.0f – вывод вещественной переменной с выравниванием по левому краю и обязательным выводом знака числа, общая длина поля вывода – 10 позиций, знаки после десятичной точки не выводятся;
%08d – вывод целой переменной с выравниванием по правому краю, ширина поля – 8 позиций, слева число дополняется нулями;
%16s – вывод строки, ширина поля вывода – 16 позиций.
Функция вывода строки puts
Функция puts выводит строку Привет, студент на экран. Например:
#include <stdio.h>
