Язык С. История развития. Основные свойства языка
Язык Си (C) был создан в начале 70-х годов Дэннисом Ритчи, который работал в компании Bell Telephone Laboratories. Родословная языка Си (C) берет свое начало от языка Алгол и включает в себя Паскаль и ПЛ/I.
В 1978 году Ричи и Керниган опубликовали первую редакцию книги «Язык программирования Си». Эта книга, известная среди программистов как «K&R», служила многие годы неформальной спецификацией языка.
В конце 1970-х годов Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время Бьярне Страуструп и другие в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, C++, в настоящее время является самым распространённым языком программирования для платформы Microsoft Windows. Си остаётся более популярным в UNIX-подобных системах.
В 1983 году Американский Национальный Институт Стандартизации (ANSI) сформировал комитет для разработки стандартной спецификации Си. По окончании этого долгого и сложного процесса в 1989 году он был наконец утверждён как «Язык программирования Си» ANSI X3.159-1989. Эту версию языка принято называть ANSI C.
ANSI C сейчас поддерживают почти все существующие компиляторы. Почти весь код Си, написанный в последнее время, соответствует ANSI C.
Язык программирования, известный как Си++— это надмножество языка Си. Реально он не является новым языком, так как включает все операторы и средства языка Си, добавив только некоторые новые. Изучая Си, вы по большей части одновременно изучаете и язык Си++. Преимущество Си++ в том, что он позволяет с большей легкостью разрабатывать большие сложные программы за счет более модульного подхода и некоторых других усовершенствований. Кроме того, Си++ является языком объектно-ориентированного программирования.
Компилятор- программа, преобразующая текст, написанный на алгоритмическом языке, в программу, состоящую из машинных команд. Компилятор создает законченный вариант программы на машинном языке.
Транслятор - в широком смысле - программа, преобразующая текст, написанный на одном языке, в текст на другом языке
Константы
Константами называются перечисление величин в программе. В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой, символьные константы и строковыми литералы
Константа с плавающей точкой - десятичное число, представленное в виде действительной величины с десятичной точкой или экспонентой. Формат имеет вид:
[ цифры ].[ цифры ] [ Е|e [+|-] цифры ] .
Число с плавающей точкой состоит из целой и дробные части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.
Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2
Символьная константа - представляется символом заключенном в апострофы. Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа
36)Указатель – адрес памяти, распределяемой для размещения идентификатора (идентификатор – имя переменной, массива, структуры, строкового литерала). Если переменная объявлена как указатель, то она содержит адрес памяти, по которому может находиться скалярная величина любого типа.
При работе с указателями действуют следующие правила:
· при объявлении переменной-указателя перед именем переменной указывается операция *;
Между указателями и массивами существует тесная связь.
Любую операцию, которую можно выполнить с помощью индексов массива, можно сделать и с помощью указателей. Вариант с указателями обычно оказывается более быстрым, но и несколько более трудным для непосредственного понимания, по крайней мере для начинающего.
Описание int a[10] определяет массив размера 10, т.е. Набор из 10 последовательных объектов, называемых a[0], a[1], ..., a[9]. Запись a[i] соответствует элементу массива через i позиций от начала. Если pa - указатель целого, описанный как
int *paто присваивание
pa = &a[0]приводит к тому, что pa указывает на нулевой элемент массива a; это означает, что pa содержит адрес элемента a[0]. Теперь присваивание
x = *pa
будет копировать содержимое a[0] в x.
Если pa указывает на некоторый определенный элемент массива a, то по определению pa+1 указывает на следующий элемент, и вообще pa-i указывает на элемент, стоящий на i позиций до элемента, указываемого pa, а pa+i на элемент, стоящий на i позиций после. Таким образом, если pa указывает на a[0], то
*(pa+1)ссылается на содержимое a[1], pa+i - адрес a[i], а *(pa+i) - содержимое a[i].
37)
Самый простой метод – это объявление переменных внутри функций. Если переменная объявлена внутри функции, каждый раз, когда функция вызывается, под переменную автоматически отводится память. Когда функция завершается, память, занимаемая переменными, освобождается. Такие переменные называют автоматическими или локальными.
При создании автоматических переменных они никак не инициализируются, т.е. значение автоматической переменной сразу после ее создания не определено, и нельзя предсказать, каким будет это значение. Соответственно, перед использованием автоматических переменных необходимо либо явно инициализировать их, либо присвоить им какое-либо значение.
Замечание. Распространенной ошибкой является использование адреса автоматической переменной после выхода из функции.
Другой способ выделения памяти – статический
Если переменная определена вне функции, память для нее отводится статически, один раз в начале выполнения программы, и переменная уничтожается только тогда, когда выполнение программы завершается – глобальная переменная. Можно статически выделить память и под переменную, определенную внутри функции или блока. Для этого нужно использовать ключевое слово static в его определении:
В данном примере переменная visited создается в начале выполнения программы. Ее начальное значение – false. При первом вызове функции func условие в операторе if будет истинным, выполнится инициализация, и переменной visited будет присвоено значение true. Поскольку статическая переменная создается только один раз, ее значения между вызовами функции сохраняются. При втором и последующих вызовах функции func инициализация производиться не будет.
Если бы переменная visited не была объявлена static, то инициализация происходила бы при каждом вызове функции.
Третий способ выделения памяти в языке Си++ – динамический.
Динамическое распределение памяти используется, прежде всего, тогда, когда заранее неизвестно, сколько объектов понадобится в программе, и понадобятся ли они вообще. С помощью динамического распределения памяти можно гибко управлять временем жизни объектов, например, выделить память не в самом начале программы (как для глобальных переменных), но, тем не менее, сохранять нужные данные в этой памяти до конца программы.
38)Вывод в C/C++
Выводом называется процедура переноса данных из памяти компьютера в другое место. Данные можно вывести на экран, отпечатать на принтере или сохранить на диске в виде файла. Кроме того, данные можно сохранить на магнитной ленте или послать по телефонной линии через модем или по факсу.
Вывод данных не означает, что они удаляются из памяти компьютера или что изменяется способ их хранения, компьютер просто копирует данные и посылает их куда-то еще.
Функции, используемые для вывода данных, зависят от типа данных и способа их представления. Наиболее прост вывод строк и символьных данных
Языки Си и Си++ имеют более многостороннюю функцию, называемую printf(). Она позволяет выводить на дисплей данные всех типов и работать со списком из нескольких аргументов. Кроме того, при вызове функции printf() можно определить способ форматирования данных.
В простейшем случае функцию printf() можно использовать вместо функции puts() для вывода строки.
Каждый указатель формата начинается с символа процента (%), после которого стоит буква, указывающая тип данных:
%d | целое число |
%u | беззнаковое целое число |
%f | вещественное число типа float или double |
%e | вещественное число в экспоненциальной форме |
%g | вещественное число, отображаемое по формату %f или %e, в зависимости от того, какая форма записи является более короткой |
%c | символ |
%s | строка |
Вводом называется процесс предоставления компьютеру информации, необходимой для работы программы. Информация вводится в переменные, это означает, что данные, которые пользователь вводит в ответ на соответствующую подсказку, определяются как значение переменной, хранящейся в памяти. Затем переменная используется в выполняемых программой операциях.
Ввод данных — это процесс, который определяет всю дальнейшую работу программы. Достоверность получаемых от программы результатов не может быть больше, чем достоверность вводимой в нее информации.
Данные вводятся только как значения переменных, но не констант. Константы всегда сохраняют присвоенные им начальные значения. Когда вы вводите в переменную некоторые данные, они помещаются в отведенную для этой переменной область памяти. Если переменной уже присвоено какое-то значение, новая информация заместит прежнюю, уничтожив ее.
Форматированный вывод
Функцию printf() можно использовать для управления форматом данных. Определять величину пробелов и количество выводимых символов можно с помощью указателей ширины поля.
Без указателя ширины поля числа с плавающей точкой, например, будут выводиться с шестью знаками после точки.Мы используем указатель ширины поля для того, чтобы придать желаемый вид числам и тексту, выводимым на экран.
Чтобы определить число знаков после точки, используется указатель %.nf, где число n определяет количество знаков.
Указатель ширины поля может работать как с символьными, так и со строковыми данными.
39) Под ПО информационных систем понимается совокупность программных и документальных средств для… Базовые ПО организуют процесс обработки информации в компьютере и обеспечивающий нормальную рабочую среду для прикладных программ. Прикладное ПО предназначено для решения (разработки и выполнения) конкретных задач пользователя и организации вычислительного процесса.
БАЗОВЫЕ ПО [ОС (однозадачные, однопользовательские, многозадачные, многопользовательские, сетевые), сервисные программы (оболочки, утилиты, антивирусные средства, программы архивации/разархивации, средства защиты), трансляторы языков программирования (транслятор-интерпретатор, транслятор-компилятор), программы технического обслуживания].
Сервисные ПО– совокупность программ, обеспечивающих предоставление пользователю дополнительные услуги в работе с компьютером и расшир. возможностей ОС. Оболочки – настройки ОС, предоставляющие пользователю более дружественный интерфейс.
Прикладное ПО [программны пользователя (метоориентированные, проблеммно-ориентирванные, глобальных систем), пакеты прикладных программ (общего назначения универсальные, редакторы, электронные таблицы, СУБД, экспертные системы искуственного интеллекта, программы-переводчики, программы распознавания образов, математические пакеты, пакеты проектирования и моделирования)].
40)СУБД– это совокупность программных средств, предназначенных для создания, ведения (обслуживания) БД на внешних запоминающих устройствах, а также доступа к данным и обработки. БД – совокупность специальным образом организованных наборов данных, находящихся на дисках. В зависимости от способа организации данных различают: сетевые (каждый объект связан со всеми, все с одним). 1) иерархические (каждый объект связан только одной связью с другим), 2) реляционные (каждый объект связан от одного к другому), 3) распределение. Интегрир-ые пакеты объединяют в себе функционально-различные программные компоненты. Текстовый редактор, электронную таблицу, графический редактор, СУБД: MS Office (word. excel, power point, access). Экспертные системы – системы обработки знаний в узко-специализированной области при подготовке решений пользователя и доведение их до уровня проффесиональных экспертов. Основа экспертных систем – база знаний в предметной области, состоящая из факторов и правил. Фактор фиксирует количество и качество показателей между факторами в идеологических условиях, Expert-Ease и др. Математические пакеты: Derive, MathCad, Maple, Matlab. Пакеты проектирования и моделирования: Acad, Pcad, Orcad. Распознавание: Fine reader, Coniform. Программа-переводчик – сократ, Styles. В своей основе реал-т метод решения задач, нетр. матем. программ., теория массовго обслуживания.
Проблемно-ориентированные пакеты: Stadia, Statgraphics – предназначены для решения какой-либо проблеммы. Они делятся на ПП промышленные сферы и непромышленные сферы. Пакеты глобальных сетей предназначены для более удобного и надежного доступа к ресурсам глобальной сети. MS Internet Explorer, Netscape Navigator, Opera.
41)
Редакторы предназначены для создания и изменения текстов, документов, графических данных и иллюстраций. Текстовые редакторы предназначены для обработки тектовой информации и выполнения замены символов, строк, *** текстов, проверку орфографии, оформление текста различными шрифтами, выравнивание текста, подготовка оглавления, разбивка текста на строки, поиск и замена слов и выражений, включение в текст иллюстраций и печать текста: MS Word, Word perfect, Math Edit, лексикон.
Классификация: 1. текстовые редакторы предназначенные только для создания, редактирования и печати текста. 2. служат для работы с документами, где содержатся рисунка, таблицы. 3. редакторы научных текстов.
42)В обычном режиме программа Excel вводит в таблицу результаты вычислений по формулам. Можно изменить этот режим и ввести текстовый индикации (отображения) формул, нажав комбинацию клавиш [Ctrl-~].После этого на экране становятся видны не результаты вычислений, а тексты самих формул и функций. В этом режиме увеличивается ширина столбцов, чтобы можно было увидеть всю формулу и попытаться найти ошибку. Относительная адресация. От метода адресации ссылок зависит, что будет с ними происходить при копировании формулы из одной ячейки в другую. По умолчанию, ссылки на ячейки в формулах рассматриваются как относительные. Это означает, что ссылки при копировании формулы из одной ячейки в другую автоматически изменяются. Они приводятся в соответствие с относительным расположением исходной ячейки и создаваемой копии.Абсолютная адресация. Однако иногда возникают ситуации, когда при заполнении ячеек формулой необходимо сохранить абсолютный адрес ячейки (т.е. не менять его), если, например, она содержит значение, используемое при последующих вычислениях в других строках и столбцах. Для задания абсолютной ссылки надо задать перед обозначением номера столбца или номера строки символ $. Числовые форматы. Для экономических расчетов применяют три разных формата записи чисел: обычный числовой, финансовый и формат даты.Финансовый формат используется для записи денежных сумм, он отличается от числового указанием денежной единицы (например, р.) и фиксированным числом знаков после запятой. Кроме того, программа иначе подходит к округлению чисел в этом формате, чтобы в результате операций с очень большими суммами не потерялась ни одна копейка.При записи даты можно выбирать разные варианты форматирования, но надо помнить о том, что любая дата это некоторое число, которое можно представить как количество миллисекунд прошедших с некоторой точки отсчета.Текстовые форматы. Используют для записи текстовых строк и цифровых нечисловых данных (например, почтовых индексов, номеров телефонов и т.п.). Документы Excel называют рабочими книгами. Рабочие книги записываются как файлы с расширением .XLS.Рабочая книга может содержать расположенные в произвольном порядке рабочие листы. Имена листов отображаются на ярлыках в нижней части окна книги. Для перехода с одного листа на другой следует щелкнуть мышью по соответствующему ярлыку. Название текущего (активного) листа выделено.Рабочее поле Excel – это электронная таблица, состоящая из столбцов и строк. Названия столбцов – буква или две буквы латинского алфавита. Каждая строка таблицы пронумерована.
43) База данных – это организационная структура, предназначенная для хранения информации. Система управления базой данных это комплекс программных средств, который предназначен для создания структуры новой базы, редактирования содержимого и визуализации информации, т.е. отбор отображаемых данных в соответствии с заданным критерием, их упорядочение, оформление и последующая выдача на устройство вывода или передача по каналам связи. Все составляющие базы данных, такие, как таблицы, отчеты, запросы, формы и объекты, в Access хранятся в едином дисковом файле, который имеет расширение .mdb.Основным структурным компонентом базы данных является таблица. В таблицах хранятся вводимые данные. Каждая таблица состоит из столбцов, называемых полями, и строк, называемых записями. Каждая запись таблицы содержит всю необходимую информацию об отдельном элементе базы данных. Таблицы. Это основные объекты любой базы данных. Именно в них хранятся, во-первых, все данные, имеющиеся в базе, а, во-вторых, структура самой базы (поля, их типы и свойства).Запросы. Это объекты предназначены для извлечения данных из таблиц и предоставления их пользователю в удобном виде. Особенность запросов состоит в том, что берут информацию из базовых таблиц и создают на их основе временную результирующую таблицу, которая не имеет аналога на жестком диске, это только образ отобранных полей и записей.Формы. Это средства для ввода и просмотра данных. С помощью форм можно закрыть некоторые поля для несанкционированного ввода, можно разместить специальные элементы управления (счетчики, раскрывающиеся списки, переключатели, флажки и пр.) для автоматизации ввода. Можно представить форму с помощью графических средств, в виде бланка, если ввод производится со специальных бланков.Отчеты. Предназначены для вывода данных на печатающее устройство. В них приняты специальные меры для группирования выводимых данных и для вывода специальных элементов оформления, характерных для печатных документов
44) Реляционные БД представляют связанную между собой совокупность таблиц-сущностей базы данных (ТБД). Связь между таблицами может находить свое отражение в структуре данных, а может только подразумеваться, то есть присутствовать на неформализованном уровне. Каждая таблица БД представляется как совокупность строк и столбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы - атрибутам (признакам, характеристикам, параметрам) объекта, события, явления.При практической разработке БД таблицы-сущностизовутся таблицами, строки-экземпляры- записями, столбцы-атрибуты - полями ТБД. Одно из важнейших достоинств реляционных баз данных состоит в том, что можно хранить логически сгруппированные данные в разных таблицах и задавать связи между ними, объединяя их в единую базу. Такая организация данных позволяет уменьшить избыточность хранимых данных, упрощает их ввод и организацию запросов и отчетов.В каждой таблице БД может существовать первичный ключ. Под первичным ключом понимают поле или набор полей, однозначно (уникально) идентифицирующих запись. Первичный ключ должен быть минимально достаточным: в нем не должно быть полей, удаление которых из первичного ключа не отразится на его уникальности. Между двумя или более таблицами базы данных могут существовать отношения подчиненности. Отношения подчиненности определяют, что для каждой записи главной таблицы {master, называемой еще родительской} может существовать одна или несколько записей в подчиненной таблице {detail, называемой еще дочерней}.Существует три разновидности связей между таблицами базы данных:- «один-ко-многим»,- «один-к-одному»,- «многие-ко-многим».Отношение «один-ко-многим» имеет место, когда одной записи родительской таблицы может соответствовать несколько записей в дочерней таблице.Связь "один-ко-многим" является самой распространенной для реляционных баз данныхОтношение «один-к-одному» имеет место, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице.Отношение «многие-ко-многим» имеет место, когда:а) записи в родительской таблице может соответствовать больше одной записи в дочерней таблице;б) записи в дочерней таблице может соответствовать больше одной записи в родительской таблице.
45.Компьютерной графикой называется любое (статическое или динамическое) изображение созданное на компьютере с помощью специальных графических программ. ...