- •Программирование на языке c
- •Ознакомление со средой разработки. Консольная программа на языке c
- •Основные теоретические сведения
- •Пример простейшей программы
- •Комментарии
- •Типы и описания
- •Основные типы
- •Производные Типы
- •Выражения и операторы
- •Выражения
- •Стандартный ввод и вывод Функции getchar и putchar
- •Форматный вывод - функция printf
- •Форматный ввод - функция scanf
- •Оператор возврата – return
- •Оператор условия - if
- •Операторы цикла Оператор цикла с предусловием - while
- •Оператор цикла с постусловием – do…while
- •Оператор цикла - for
- •Оператор прерывания выполнения операторов - break
- •Оператор продолжения выполнения – continue
- •Ход работы
- •Задание
- •Варианты задания
- •Содержание отчета
- •Литература
Производные Типы
Вот операции, создающие из основных типов новые типы:
* |
указатель на |
*const |
константный указатель на |
& |
ссылка на |
[] |
вектор |
() |
функция, возвращающая |
Например:
char* p |
// указатель на символ |
char *const q |
// константный указатель на символ |
char v[10] |
// вектор из 10 символов |
Все вектора в качестве нижней границы индекса имеют ноль, поэтому в v десять элементов: v[0] ... v[9]. Переменная указатель может содержать адрес объекта соответствующего типа:
char c;
// ...
p = &c; // p указывает на c
Унарное & является операцией взятия адреса.
Выражения и операторы
В C++ имеется богатый набор операций, с помощью которых в выражениях образуются новые значения и изменяются значения переменных. Поток управления в программе задается с помощью операторов, а описания используются для введения в программе имен переменных, констант и т.д. Заметьте, что описания являются операторами, поэтому они свободно могут сочетаться с другими операторами.
Выражения
В C++ имеется большое число операций, и они будут объясняться там, где (и если) это потребуется. Следует учесть, что операции
~ |
(дополнение) |
& |
(И) |
^ |
(исключающее ИЛИ) |
| |
(включающее ИЛИ) |
<< |
(логический сдвиг влево) |
>> |
(логический сдвиг вправо) |
применяются к целым, и что нет отдельного типа данных для логических действий.
Смысл операции зависит от числа операндов; унарное & является операцией взятия адреса, а бинарное & - это операция логического И. Смысл операции зависит также от типа ее операндов: + в выражении a+b означает сложение с плавающей точкой, если операнды имеют тип float, но целое сложение, если они типа int.
В C++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках. Таким образом, присваивание может встречаться в неожиданном контексте; например, x=sqrt(a=3*x). Это бывает полезно. a=b=c означает присвоение c объекту b, а затем объекту a. Другим свойством операции присваивания является то, что она может совмещаться с большинством бинарных операций. Например, x[i+3]*=4 означает x[i+3]=x[i+3]*4, за исключением того факта, что выражение x[i+3] вычисляется только один раз. Это дает привлекательную степень эффективности без необходимости обращения к оптимизирующим компиляторам. К тому же это более кратко.
В большинстве программ на C++ широко применяются указатели. Унарная операция * разыменовывает указатель, т.е. *p есть объект, на который указывает p. Эта операция также называется косвенной адресацией. Например, если имеется char* p, то *p есть символ, на который указывает p. Часто при работе с указателями бывают полезны операция увеличения ++ и операция уменьшения --. Предположим, p указывает на элемент вектора v, тогда p++ делает p указывающим на следующий элемент.
Операторы выражения
Самый обычный вид оператора - оператор выражение. Он состоит из выражения, за которым следует точка с запятой. Например:
a = b*3+c;
cout << "go go go";
lseek(fd,0,2);
Пустой оператор
Простейшей формой оператора является пустой оператор:
;
Он не делает ничего. Однако он может быть полезен в тех случаях, когда синтаксис требует наличие оператора, а вам оператор не нужен.
Блоки
Блок - это возможно пустой список операторов, заключенный в фигурные скобки:
{ a=b+2; b++; }
Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.
Основная функция программы – main
Каждая программа на C или C++ должна иметь функцию main; куда Вы поместите ее - дело вкуса. Некоторые программисты помещают функцию main в начало файла, другие - в конец. Вне зависимости от ее дислокации, следующие положения всегда применимы.
Аргументы главной функции.
Два параметра передаются в main процедурой начальной загрузки Dev C++: argc, argv.
argc, целое, содержащее число аргументов командной строки, передаваемых в main.
argv - массив указателей на строки (char *[]).
В DOS 3.x и выше arg[0] - это полное имя выполняемой программы.
argv[1] указывает на первую строку, набранную в команде DOS после имени программы.
argv[2] указывает на вторую строку, набранную после имени программы.
argv[argc - 1] указывает на последний аргумент, передаваемый в main.
argv[argc] содержит ноль.
Если Вы объявляете какие-либо из этих параметров, Вы
должны объявлять их строго в следующем порядке: argc, argv. Например, следующие объявления правильны:
main()
main(int argc)
main(int argc, char *argv[])
Объявление main(int argc) корректно, но маловероятно, что Вы будете использовать argc в Вашей программе без использования элементов argv.
argc и argv также доступны через глобальные переменные _argc и _argv.
Пример программы.
Приведем пример программы ARGS.EXE, демонстрирующей простой способ использования аргументов, передаваемых в main.
/* Программа ARGS.C */
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[], char *env[])
{
int i;
printf("The value of argc is%d \n\n", argc);
printf("These are the %d command-line arguments passed to main: \n\n", argc);
for (i = 0; i < argc; i++);
printf(" argv[%d]: %s\n", i, argv[i]);
printf("\nThe environment string(s) on this system are:\n\n");
for (i = 0; env[i] !=NULL; i++);
printf(" env[%d]: %s\n", i, env[i]);
return 0;
}
Предположим, Вы выполняете ARGS.EXE со следующей командной строкой:
C:>args first_arg "arg with blanks" 3 4 "last but one" stop!
Заметим, что Вы можете передавать аргументы, содержащие пробелы, заключив их в двойные кавычки, как это сделано выше для "arg with blanks" и "last but one".
Вывод ARGS.EXE (предполагая, что переменные среды установлены, как здесь) может быть таким:
The value of argc is 7
These are the 7 command-line arguments passed to main:
argv[0]: C:\TC\TESTARGS.EXE
argv[1]: first_arg
argv[2]: arg with blanks
argv[3]: 3
argv[4]: 4
argv[5]: last but one
argv[6]: stop!
The environment string(s) on this system are:
env[0]: COMSPEC=C:\COMMAND.COM
env[1]: PROMPT=$p $q
env[2]: PATH= C:\SPRINT;C:\DOS;C:\TC
Максимальная общая длина аргументов командной строки, передаваемых в main (включая разделяющие их пробелы и само имя программы) - 128 символов (это - ограничение DOS, т.е. для Windows оно уже больше).