Язык программирования Си — это универсальный язык с богатым набором операторов и компактным способом записи выражений. Благодаря гибкости, выразительности и компактности своих конструкций Си завоевал наибольшую популярность в среде профессиональных программистов и широко используется при разработке системных и прикладных программ.
Язык Си представляет собой удачный компромисс между желанием располагать теми возможностями, которые обычно предоставляют программисту столь понятные и удобные языки высокого уровня, и стремлением эффективно использовать особенности компьютера. Кроме набора средств, присущих современным языкам программирования высокого уровня (структурность, модульность, определяемые типы данных) в него включены средства для программирования «почти» на уровне ассемблера (использование указателей, побитовые операции, операции сдвига).
Большой набор операторов позволяет писать компактные и эффективные программы. Однако, такие мощные средства требуют от программиста осторожности, аккуратности и хорошего знания языка со всеми его преимуществами и недостатками. В отличие от языков программирования типа Паскаль, требующих жесткой дисциплины программирования, ограничивающих свободу программиста, содействующих устранению многих ошибок в программах еще на стадии их трансляции, язык Си предоставляет программисту наибольшую свободу. Однако, ответственность за корректность программ при этом полностью ложится на программиста.
Си был создан Денисом Ритчи как инструмент для разработки операционной системы UNIX и реализован в рамках этой операционной системы. Название языка имеет случайное происхождение: «С» — третья буква английского алфавита. Это наименование говорит о чувстве юмора у создателей языка — его предшественником был язык В («В» — вторая буква английского алфавита).
В настоящее время имеется большое количество систем программирования на Си для разных типов компьютеров. Разработано много библиотек модулей, инструментальных средств разработки и отладки, облегчающих создание новых программ. Программы на Си обладают высокой мобильностью, без каких-либо изменений они переносятся, транслируются и выполняются на машинах различных типов.
Язык Си — компилирующего типа. Текст программы на Си, подготовленный с помощью текстового редактора, для получения объектного модуля обрабатывается компилятором, причем компиляция выполняется в два прохода. При первом проходе (претрансляцни) обрабатываются строки-директивы, начинающиеся со знака #, при втором — транслируется текст программы и создается объектный (машинный) код. Для получения загрузочного (исполняемого) модуля теперь необходимо отредактировать внешние связи объектного модуля — подсоединить к нему соответствующие библиотечные модули.
Рассмотрим простую программу на языке Си. Такой пример позволит нам выявить некоторые основные черты любой программы, написанной на языке Си.
Программа 82
main() /* Простая программа */
printf («Это моя 1-я программа на языке Си.n»,num);)
Результат выполнения программы:
Это моя 1-я программа на языке Си.
Поясним строки этой программы.
#include — подключение файла stdio.h, который является частью пакета, имеющегося в любом компиляторе языка Си и описывающего функции ввода-вывода (например, средства взаимодействия программы с терминалом). В качестве имени файла используется аббревиатура английских слов: STandard Input/Output header — стандартный заголовок ввода-вывода. Данная строка не является оператором языка Си. Символ # оказывает, что она должна быть обработана «препроцессором» компилятора. Препроцессор осуществляет некоторую предварительную обработку текста программы перед началом компиляции.
Main() — имя функции (в переводе с английского main — «главная»). Любая программа, написанная на языке Си, состоит из одной или более «функций», являющихся модулями, из которых она собирается. Данная программа состоит из одной функции main. Круглые скобки указывают именно на то, что main() — имя функции. Программа, написанная на языке Си всегда начинает выполняться с функции, называемой main().
Программист имеет возможность выбирать имена для всех используемых им функций, кроме main. В круглых скобках в общем случае содержится информация (параметры), передаваемые этой функции. В нашем примере параметры не требуются и, следовательно, в скобках ничего не содержится.
/* Простая программа */-комментарий. Использование комментариев облегчает процесс понимания программы любым программистом. Большим удобством при написании комментариев является возможность располагать их в той же строке, что и операции, которые они объясняют. Длинный комментарий может помещаться в отдельной строке или даже занимать несколько строк. Все, что находится между символом, указывающим начало комментария /*, и символом, указывающим его
конец */, игнорируется компилятором, поскольку он не в состоянии интерпретировать язык, отличный от Си.
< >- фигурные скобки отмечают начало и конец тела функции. Фигурные скобки применяются также для того, чтобы объединить несколько операторов программы в сегмент или «блок».
int num; — оператор описания. С помощью такого оператора мы объявляем, что будем использовать в программе переменную num, которая принимает целые (int) значения.
Точка с запятой в конце строки является частью оператора языка Си, а не разделителем операторов, как в Паскале.
Слово int служит «ключевым словом», определяющим один из основных типов данных языка Си. Ключевыми словами называются специальные зарезервированные слова, используемые для построения фраз языка.
В языке Си все переменные должны быть объявлены. Это означает, что, во-первых, в начале программы необходимо привести список всех используемых переменных, а во-вторых, необходимо указать тип каждой из них. Вообще, объявление переменных считается «хорошим стилем» программирования.
num=l; — оператор присваивания. Служит для присваивания переменной num значения 1.
printf(«этo моя %d-я программа на языке Си.n»,num); — вызов функции printf() форматного вывода на печать. Этот оператор выводит на печать значение переменной num в формате, содержащемся в строке в кавычках (в данном случае печатается приведенная в кавычках фраза. Символы %d указывают компилятору, где в выводимой строке и в какой форме необходимо вставить значение переменной num. Символ % сигнализирует программе, что, начиная с этой позиции, необходимо вывести значение переменной, a d указывает, что число надо печатать в десятичном формате.
Символы n не появляются на экране. Эти символы служат директивой начать новую строку на устройстве вывода. Комбинация символов n на самом деле представляет собой один символ, называемый «новая строка». Для этого символам (n) не существует соответствующей клавиши на клавиатуре. Символ «новая строка» служит примером «управляющей последовательности», которую невозможно ввести с клавиатуры.
В общем случае обращение к этой функции имеет вид:
Управляющая строка «формат» содержит объекты двух типов: обычные символы, которые просто копируются в выходной поток (печатаются), и спецификации преобразования значений из внутреннего машинного представления в текстовое для вывода на печатающем устройстве.
Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования. Между % и символом преобразования могут (не обязательно) находиться
1) знак минус, указывающий, что преобразуемый параметр должен быть выровнен влево в своем поле;
2) целое число, задающее минимальный размер поля: преобразованный параметр будет напечатан в поле-минимум оказанного размера; если в преобразованном параметре символов меньше, чем размещается в указанном поле, то слева будут добавлены пробелы (или справа, если указано выравнивание влево);
3) строка цифр с начальным нулем — лишние позиции поля заполняются нулями, а не пробелами:
4) точка, отделяющая размер поля от последующей строки цифр (только для преобразования строк %s) — строка цифр указывает максимальное число символов, выводимых в одной строке.
d — десятичное число со знаком;
u — десятичное число без знака;
О — восьмеричное число без знака (и без ведущего 0);
х — шестнадцатеричное число без знака (и без ведущего 0);
s — символьная строка;
с — одиночный символ;
f- действительное число в представлении с фиксированной точкой;
е-действительное число в экспоненциальном представлении;
g — наиболее короткое представление действительного числа; и др.
Функцией ввода, аналогичной функции вывода printf(), является scanf() — стандартная функция форматного ввода.
Обращение к этой функции имеет вид
где , . — имена переменных, значения которых надо ввести. Наличие символа » перед каждым именем обязательно (кроме переменных строкового типа), его смысл будет пояснен ниже.
При обращении к функции scanf выполнение программы приостанавливается, ожидается ввод значений указанных переменных, после чего работа программы продолжается.
В качестве спецификаций в формате можно использовать те же символы, что и в функции printf(). Спецификации формата должны соответствовать количеству и типу вводимых переменных. В управляющей строке функции scanf нет промежуточных управляющих символов между % и символом преобразования, за исключением «*». Если присутствует символ *, входное поле просто пропускается и никакого присваивания не производится. Обычные символы (кроме °о) сопоставляются с очередными (отличными от символов промежутков) символами входного потока, и в случае отличия дальнейший ввод игнорируется.
int data,month,year; char name[15],town[15];
printf(«Kaк вас зовут? «); scanf(«%s»,name); printf(«Укажите дату, месяц и год вашего рождения.пДата:»);
printf («Месяц (числом):»); scanf («%d», Sinonth);
printf(«А в каком городе? «); scanf(«%s»,town);
printf(«Вот мы и познакомились. n»);
printf(«Вас зовут %s «,name); printf(«Вы родились в городе %s (%d.%d.%d)»,town,data, month,year);)
Результат работы программы:
Как вас зовут? Иван
Укажите дату, месяц и год вашего рождения.
Месяц (номером): 02
А в каком городе? Новгород
Вот мы н познакомились.
Вас зовут Иван
Вы родились в городе Новгород
Источник: infopedia.su
1. ОСНОВНЫЕ ПОНЯТИЯ И ДАННЫЕ языка Си
Привет, сегодня поговорим про основные понятия языка си, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое основные понятия языка си, данные языка си , настоятельно рекомендую прочитать все из категории Алгоритмизация и программирование. Структурное программирование.
Язык C. Язык Си, созданный Денисом Ритчи в начале 70-х годов в Bell Laboratory американской корпорации AT
Программирование на Си для гуманитариев — Урок 1 — Установка ПО и первая программа
Программирование на Си — Урок 12 — Пишем первую простую игру про голодную собаку
- ключевые слова;
- знаки операций;
- разделители;
- литералы (константы).
Ключевые слова — это слова, зарезервированные для специального предназначения и их нельзя использовать как имена идентификаторов.
Программа, написанная на языке Си, состоит из операторов. Каждый оператор вызывает выполнение некоторых действий на соответствующем шаге выполнения программы.
При написании операторов применяются латинские прописные и строчные буквы, цифры и специальные знаки. К таким знакам, например, относятся: точка (.), запятая (,), двоеточие (:), точка с запятой (;) и др. Совокупность символов, используемых в языке, называется алфавитом языка.
Оператор задает законченное описание некоторого действия.
Объединенная единым алгоритмом совокупность описаний и операторов образует программу.
Различают простые и составные операторы.
Унарные, бинарные, тернарные
Составной оператор или блок — это группа операторов, заключенная в фигурные скобки. Блоки могут быть вложенными.
Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями.
— это оператор описания целочисленной переменной a.
Исполняемые операторы задают действия над данными.
Например, присваивание, цикл, ввод и т.д.
В персональном компьютере символы хранятся в виде кодов. Соответствие между каждым символом и его кодом задается специальной кодовой таблицей. На нее разработан стандарт ASCII, поэтому коды символов называют ASCII-кодами.
Различают видимые и управляющие символы. Первые могут быть отображены на экране дисплея либо отпечатаны на принтере. Вторые вызывают определенные действия в машине, например: звуковой сигнал — код 710, возврат курсора на один шаг — код 810, горизонтальная табуляция — код 910, перевод курсора на новую строку — код 1010, перемещение курсора в начало строки — код 1310 и т.д. Такие управляющие символы имеют десятичные номера 0 — 31, 127.
Для представления каждого символа в персональном компьютере используется один байт, поэтому общее число символов равно 2 8 = 256. Кодовая таблица, которая устанавливает соответствие между символом и его кодом, имеет 256 строк вида:
код_символа_в_заданной_системе_счисления — символ.
Первая половина кодовой таблицы является стандартной, а вторая используется для представления символов национальных алфавитов, псевдографических элементов и т.д.
Важным понятием языка является идентификатор, который используется в качестве имени объекта (функции, переменной, константы и др.). Идентификаторы должны выбираться с учетом следующих правил:
- Они должны начинаться с буквы латинского алфавита (а. z, А. Z) или с символа подчеркивания (_).
- В них могут использоваться буквы латинского алфавита, символ подчеркивания и цифры (0. 9). Использование других символов в идентификаторах запрещено.
- В языке Си буквы нижнего регистра (а. z), применяемые в идентификаторах, отличаются от букв верхнего регистра (А. Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т.д.
- Идентификаторы могут иметь любую длину, но воспринимается и используется для различения объектов (функций, переменных, констант и т.д.) только часть символов. Их число меняется для разных систем программирования, но в соответствии со стандартом ANSI C не превышает 32 (в Си++ это ограничение снято). Если длина идентификатора установлена равной 5, то имена count и counter будут идентичны, поскольку у них совпадают первые пять символов.
- Идентификаторы для новых объектов не должны совпадать с ключевыми словами языка и именами стандартных функций из библиотеки.
В программах на языке Си важная роль отводится комментариям. Они повышают наглядность и удобство чтения программ. Комментарии обрамляются символами /* и */. Их можно записывать в любом месте программы.
В языке Си++ введена еще одна форма записи комментариев. Все, что находится после знака // до конца текущей строки, будет также рассматриваться как комментарий. Отметим, что компилятор языка Си, встроенный в систему программирования Borland C++, позволяет использовать данный комментарий и в программах на Си.
Пробелы, символы табуляции и перехода на новую строку в программах на Си игнорируются. Это позволяет записывать различные выражения в хорошо читаемом виде. Кроме того, строки программы можно начинать с любой позиции, что дает возможность выделять в тексте группы операторов.
Унарные операторы языка Си
Источник: intellect.icu
Первая программа на С++.
Как и всегда в начале изучения нового языка без практики необойтись. В любом программировании первая программа это вывод приветствия. Этим мы сегодня и займемся. Мы выведим наше приветствие в консоль. Язык С++ похож на Си поэтому код будет немного похож на код Си, но запомните это разные языки.
Я уже писал статью о различиях данных языков. Можете посмотреть их тут. В статье Первая программа на языке Си я описывал установку и настройку компилятора CodeBlocks, в языке С++ вы также можете её использовать, только нужно будет выбрать язык С++ вместо Си. Но я использую программу Visual Studio 2012, по моему мнению VS намного лучше подходит для языка С++.
Она является платной, но на сайте есть бесплатная версия, называется она Visual Studio Community. После всех установок приступим к написанию первой программы. Я открываю Visual Studio 2012 нажимаю Файл->создать->проект.. откроется окно:
Выбираем консольное приложение Win32. Нажимаем далее и готово. Проект откроется и вы увидите:
Удаляйте предложеннный нам код и пишите вот этот. Сейчас я по полочкам его разберу. p.s. Если вы также как я используете Visual Studio 2012, тогда, чтобы проверить работу кода надо нажать Постоение->Перестроить решение, либо горячие клавиши (Ctrl+Alt+F7). Затем нажимаем F5 и откроется консоль с приветствием. Перестроили решение мы для того чтобы компилятор увидел новый написанный вами код.
Продолжим работу.
#include «stdafx.h» #include using namespace std; int main ()
#include — это директива она предлагает компилятору включить другой исходный файл. stdafx.h — инклуд-файл, который служит для генерации файла предкомпилированных заголовков. В него включено большинство стандартных и используемых в каждом приложении включаемых файлов. Сделано это для того, чтобы ускорить компиляцию проекта. В С++ он обязательно должен стоять первым.
iostream — это класс, который поддерживает двунаправленный ввод/вывод. В нашем случае вывод из консоли. using namespace std; — это строка сообщает компилятору, что нужно использовать группу функций, которые являются частью стандартной библиотеки std. В том числе она позволяет программе использовать операторы, такие как cout. Точка с запятой является частью синтаксиса C++.
Она сообщает компилятору, что это конец команды. int main () — это строка сообщает компилятору, что есть функция с именем main, и что функция возвращает целое число типа int. Фигурные скобки < и >сигнализируют о начале < и конце >функции. Фигурные скобки используются и в других блоках кода, но обозначают всегда одно — начало и конец блока, соответственно.
cout — в C++ объект cout используется для отображения текста (произносится как «Cи аут»). Он использует символы n — cимвол n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.
cin.get() — это еще один вызов функции, которая считывает данные из входного потока данных и ожидает нажатия клавиши ENTER. Эта команда сохраняет консольное окно от закрытия, до тех пор пока не будет нажата клавиша ENTER. Это даёт вам время для того, чтобы посмотреть результат выполнения программы.
return 0 — завершает выполнение функции с возвратом значения 0, определяемого стандартом (для функции main) как код успешного завершения. Вот и конец нашей первой консольной программы. Хочу посоветовать комментировать строчки вашего кода для удобства его понимания в будущем. Чтобы создать комментарий используйте или //, который сообщает компилятору, что остальная часть строки является комментарием или /* и затем */. После разбора кода попробуйте его скомпилировать (F5) и вы увидите такой результат:
Для закрепления материала поэкспериментируйте немного с оператором cout. Это поможет вам привыкнуть к языку.
Источник: it-black.ru