КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лекция №1. ВЕДЕНИЕ
Лекционный комплекс Технология программирования (наименование дисциплины)
Астана – 2013г
Язык С относится к классу универсальных языков, поскольку с его помощью можно решить очень широкий круг задач, выполняемых на ЭВМ. Среди современных алгоритмических языков С является, пожалуй, одним из самых популярных и распространенных, но наиболее эффективно его применение в написании системных программ-трансляторов, операционных систем, экранных интерфейсов, в обслуживании инструментальных средств. В большинстве случаев программы, выполненные на языке С, по быстродействию сравнимы с программами, написанными на Ассемблере. С - язык высокого уровня, поэтому программы, подготовленные на нем, более наглядны и просты в сопровождении. Программы на языке С легко переносимы с одного типа компьютера на другой. Основные особенности языка С следующие: 1) в нем реализованы некоторые операции низкого уровня; 2) его базовые типы данных совпадают с типами данных языка Ассемблера; 3) несмотря на присутствие таких составных объектов, как массивы и структуры, язык не допускает обращения с ними как с единым циклом; 4) широко использует указатели на переменные и функции; 5) удобным средством для передачи параметров являются ссылки; 6) считается языком для профессионалов, поэтому многое "доверяет" программисту: даже на такие важные действия, как преобразование типов, налагаются лишь незначительные ограничения; 7) несмотря на широкие возможности, невелик по объему за счет того, что практически все выполняемые функции оформлены в виде подключаемых библиотек. Язык С служит базовой платформой для изучения языка С++. Язык С был разработан в США сотрудниками Bell Laboratories Б. Керниганом и Д. Ритчи и использован для создания ОС UNIX. Язык программирования (ЯП) С++ широко использует средства объектно-ориентированного программирования. На его основе построены дополнительные средства для работы под управлением операционной системы Windows. Кроме того, язык С++ служит базой для создания событийно-ориентированной среды программирования Builder C++. В настоящее время С++ продолжает развиваться, поэтому возможны изменения некоторых его свойств и функций. Основные определения языка С Переводом программы с языка, на котором она написана, на машинный и анализом ее синтаксиса занимается программа - компилятор, Иногда компилятор называют более общим термином - транслятор. В программах предусмотрено использование комментариев, т. e. пояснительного текста, оформленного определенным образом и никак не влияющего на ход выполнения программы. В ЯП С комментарии обозначаются символами /* */: Идентификаторы, или имена, используются для обозначения (идентификации) всех объектов, вводимых в программу. Под объектами понимаются переменные, константы, типы, подпрограммы и т. д. Идентификаторы начинаются с латинской буквы и могут содержать латинские буквы, цифры и знаки подчеркивания. Ключевые (служебные, зарезервированные) слова имеют однозначно определенный смысл и могут использоваться только так, как это задано в языке. Ключевые слова не могут быть переопределены, т. e. их нельзя использовать в качестве имен, вводимых программистом. Алфавит языка С (С++) включает: * прописные латинские буквы А... Z; * строчные латинские буквы а... z; * арабские цифры 0... 9; * разделители:,,.,;,?, ',!, |, /, \, ~, _, #, %, &, ^, =, -, +, *, (,), {, }, [, ], <, >; * пробельные символы: SP, H_TAB, CR, LF, V_TAB, FF, Ctrl-Z (конец текстового файла); * специальные символы, необходимые для представления символов, не имеющих графического обозначения, а также пробельных символов. Наиболее употребительны следующие специальные символы: \n - новая строка; \t - горизонтальная табуляция; \r - возврат каретки; \f- новая страница; \a - звуковой сигнал; \' - апостроф; \" - двойные кавычки; \\ - обратный слэш. Компилятор языка С (С++) воспринимает одну и ту же прописную и строчную латинскую букву как различные символы. Другими словами, имена MyProgram, MYPROGRAM и myprogram С - компилятор будет трактовать как три различных имени. Директива препроцессора - инструкция, записанная в исходном тексте С -программы и выполняемая препроцессором. Структура программы на языке С Директива #include подключает заголовочный файл, в данном случае <stdio.h>, содержащий средства поддержки операций стандартного ввода-вывода: main () - имя основной программы, оно всегда присутствует и всегда одинаково. В программе на языке С в скобках стояло бы слово void: main (void); void перед словом main служит признаком того, что программа не возвращает конкретного значения; { } - скобки, ограничивающие тело программы. Каждый оператор завершается точкой с запятой, которая является атрибутом оператора, указывающим на его конец. Заголовочные файлы содержат так называемые прототипы функции. Прототип сообщает компилятору информацию о синтаксисе функции. Если раскрыть заголовочный файл любым текстовым редактором, то можно обнаружить в нем строку, описывающую прототип подключаемой функции. На данном этапе нет необходимости вникать в подробности описания прототипа каждой функции, следует лишь помнить о том, что заголовочные файлы вводят в программы некоторые предварительно объявленные элементы. Препроцессор просматривает программу до компилятора, подключает необходимые файлы, заменяет символические аббревиатуры в программе на соответствующие директивы и даже может изменить условия компиляции. Рассмотрим программу, содержащую элементы вычислений, ввод данных и вывод результатов. #include <stdio.h> void main() {float m, p, q; printf ("Введите значения p и q "); scanf("%f,%f",&p,&q); m = p/q; printf("m = %f/%f= %f\n ", p, q, m);} Здесь float m, p, q; - объявление трех переменных вещественного (действительного) типа; scanf ("%f, %f", &p, &q); - способ организовать ввод двух вещественных чисел. Первое из введенных с клавиатуры чисел будет присвоено переменной p, второе - переменной q. Следует обратить внимание на знак & перед именем переменной. В примере printf ("m = %f / %f = %f \n", p, q, m); - на место первого %f будет подставлено значение p, на место второго - значение q, на места третьего - значение m. Функции printf() и scanf() содержат в качестве аргументов управляющую строку, в состав которой может входить символ или строка символов, которые просто выводятся на экран (для функции printf()), строка формата, содержащая спецификации формата. Спецификация формата начинается знаком %, за которым следует признак типа вводимых или выводимых данных. За управляющей строкой следует список аргументов в соответствии со спецификациями формата. Здесь приведена простейшая программа, однако она позволяет сделать выводы о структуре С -программы: 1) любая программа начинается словом main(); 2) перед использованием переменной она объявляется с указанием типа 3) могут содержаться заголовочные файлы, подключенные директивой #include. Лекция №2. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ Язык С является типизированным языком с той точки зрения, что каждая используемая переменная должна быть объявлена с указанием типа, чтобы занять для нее достаточно места в ОЗУ ЭВМ. Однако в смысле преобразования типов язык С менее строг, чем другие языки программирования. Переменная представляет собой имя, связанное с областью памяти, которая отведена для хранения значения этой переменной. Все переменные в программе, написанной на языке С++, должны быть объявлены до их использования этой программой. Объявление предполагает наличие имени переменной и указание ее типа. В языке С используются как знаковые, так и беззнаковые переменные. Занимая одинаковый объем памяти, они представляют разный диапазон чисел. Основные стандартные типы данных, которые может принимать переменная, следующие: целые, вещественные, символьные. Язык С имеет некоторые особенности представления данных и преобразования типов, например для представления маленьких целочисленных значений можно использовать тип char, который, хотя и предназначен для представления символов, может поддерживать целочисленные значения в диапазоне от -128 до 127 или от 0 до 255. Все целые типы - char, short, int и long - являются знаковыми по умолчанию, но можно объявить их как беззнаковые, которые, занимая тот же объем памяти, что и их знаковые аналоги, представляют только положительные значения, включая нуль. Вследствие этого они могут представлять вдвое больше положительных значений. Если в процессе каких-либо арифметических действий, например при сложении, результат превосходит максимально допустимое значение для объявленного типа (т. e. при переполнении), значения целочисленных переменных обнуляются. Логического типа как такового в языке С++ нет, но целые значения могут представлять истинные и ложные значения в выражениях, трактуемых как логические, причем нулевое значение означает ложь, а ненулевое - истину. Типы данных с плавающей точкой (вещественные) могут иметь форму записи с десятичной точкой или экспоненциальную форму: double dl=2.35; // представление числа в формате с десятичной точкой; double d2=2.0E-5; // представление числа в экспоненциальной форме. Символьные типы, конечно, хранят отдельные символы в кодах ASCII (American Standard Code for Information Interchange), но могут содержать и небольшие целочисленные значения. Можно объявлять переменные и одновременно присваивать им значения, т. e. инициализировать их. Инициализацией называется присваивание переменным начальных значений. В языке С существуют глобальные переменные. Переменная называется глобальной, если она объявлена за пределами программы main(). В этом случае при запуске программы ей присваивается нулевое значение, т. e. говорят, что переменная инициализируется нулевым значением. Константы Данные в языках программирования могут представляться также в виде констант. Константы используются в тех случаях, когда программе запрещено изменять значение какой-либо переменной. В этом случае ее объявляют как константу следующим образом: const int intVal=25; Символьная константа состоит из одного символа, заключенного апострофы: 'q', '2', '.' и т. д.: const char sym='m'; К разряду символьных констант относятся и специальные символы. Литеральные константы (литералы) - значения, которые вводятся непосредственно в текст программы. Поскольку после компиляции программы нельзя изменять значения литералов, их также называют константами. Добавление к константам, имеющим тип double буквы f или F приводит к тому, что они приобретают тип float, а буквы l или L - тип long double. В языке С++, помимо числовых и символьных констант, используются строковые константы. Строковая константа состоит из последовательности символов кода ASCII, заключенной в кавычки. Выражения Запись Переменная = Выражение; интерпретируется как "присвоить Переменной значение Выражения ", а выполняется следующим образом: вычисляется значение Выражения стоящего справа от знака присваивания (=), и полученный результат становится значением, которое принимает переменная, стоящая слева от знака присваивания: A=5+2; Необходимо помнить о том, что знак "=" - это знак присваивания, а не знак равенства. Присваивание является выражением, так как имеет значение, равное присваиваемому результату. Следуя этому правилу, можно заметить, что i=(j=k) тоже является выражением, поскольку j=k - выражение, имеющее конкретный результат, так же, как i=j. Кроме того, скобки можно опустить, тогда выражение i=j=k присваивает значение k переменным i и j, а выражение i=j=k=125252 - значение 125252 всем трем переменным. Это очень удобно при инициализации нескольких переменных одним значением. Выражение представляет собой объединение операций и операндов. Операндом называется то, над чем выполняется операция. Каждое выражение в языке С имеет значение, которое присваивается переменной, стоящей слева. Операторы Типы операций, применяемые при построении выражений: арифметические; отношений; логические и поразрядные; инкремента и декремента; присваивания. Арифметические операции: * - умножение; / - деление; + - сложение; - - вычитание; % - деление по модулю (взятие остатка от целочисленного деления). Все перечисленные операции здесь выполняются традиционным образом, кроме операции деления. Особенность операции деления заключается в том, что она дает целый результат, если оба операнда целые. Чтобы получить действительный результат, необходимо иметь хотя бы один действительный операнд. Так, 9/5 даст 1, 9/5.0 будет равно 1.8. Необходимо помнить, что все операции в языках программирования следует указывать в явном виде. Запись выражения a*b в виде ab приведет к тому, что произведение будет интерпретироваться как идентификатор (имя) ab со всеми вытекающими из этого проблемами. Операции отношений в языках программирования, как и в математике, используются для сравнений. В языке С++ применяются следующие операции отношений: < - меньше; <= - меньше или равно; > - больше; >= - больше или равно; = -равно;!= - не равно. Не следует путать знак "= =" со знаком "=", так как это приводит к возникновению трудно обнаруживаемых ошибок. Операции отношения, а также логические и поразрядные (побитовые) операции имеют своим результатом логическое значение. Но в языке С нет встроенного логического типа в привычном понимании, т. e. типа, имеющего два значения: true (истина) и false (ложь). Здесь в качестве логических значений используются целочисленные значения, причем нуль интерпретируется как ложь, а любое ненулевое значение - как истина. К логическим операциям относятся: логическое "И" (&&), логическое "ИЛИ" (||) и логическое отрицание (!). Логические операции используются в тех случаях, когда необходимо объединить несколько условных выражений. Логические операции обладают следующими свойствами. Если VI и V2 - два условных выражения, то: V1 && V2 - истинно, когда истинны оба выражения одновременно; V1 || V2 - истинно, когда истинно по крайней мере одно из выражений; ! V1 - отрицание истинно, когда V1 ложно; ! V1 - отрицание ложно, когда V1 истинно; Поразрядные операции или операции с разрядами (битами) нельзя применять к переменным типа float и double. K таким операциям относятся: поразрядное "И" (&), поразрядное "ИЛИ" (|), поразрядная инверсия (~), поразрядное "исключающее ИЛИ" (^), сдвиг влево (<<), сдвиг вправо (>>). В языке С существуют две операции, не встречающиеся в математике: инкремент (++) и декремент (--). Операция инкремента прибавляет к операнду единицу, а операция декремента вычитает из операнда единицу. i+ + эквивалентно i = i+l; i- - эквивалентно i = i-l. Выражения, подобные i++ и i- -, имеют значения, которые зависят от расположения знаков ++ и - -. Запись j = i++ (постфиксная форма записи) эквивалентна j = i; i++; j = ++i (префиксная форма записи) эквивалентна i++; j = i. Пример. Запись sum=a+ b++; означает "сложить а и b, присвоить результат sum и увеличить b на единицу", а запись sum=a+ ++b; - "увеличить b на единицу, сложить а и b и присвоить результат sum": а = 2; b = 5; sum = a+ b++; sum = a+ ++b; Операция присваивания в языке С, помимо привычного вида, имеет нетрадиционное представление. Использование этого представления связано с тем, что, например, выполнение операции A=A+25 приводит к двукратному вычислению адреса переменной А: для нахождения исходного значения и для занесения полученного результата. Можно ликвидировать эту избыточность, записав A+=25. Символ += также называется операцией присваивания и дает компилятору указание прибавить число 25 к значению А и результат запомнить в А. Полный набор операций присваивания: *=, /=, +=, - =, %=, <<=, >>=, &=, ^=, \=. Например: cnt+=50; // cnt=cnt+50; cnt%=2; // cnt=cnt%2; Операторы служат основными элементами, из которых строится программа на языке С++. Каждый оператор в языке С++ заканчивается точкой с запятой, являющейся составной частью оператора, а не разделителем между ними.
Дата добавления: 2014-11-16; Просмотров: 461; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |