Скачать презентацию История создания языка программирования C С Язык С читается Скачать презентацию История создания языка программирования C С Язык С читается

2.Лекция С++ Алфавит, лексемы, пример.ppt

  • Количество слайдов: 25

История создания языка программирования C/С++ Язык С (читается История создания языка программирования C/С++ Язык С (читается "Си") создан в начале 70 х годов Дэнисом Ритчи в Bell Telephone Laboratories для ОС UNIX. Предшественником C является язык B ("Би"), созданный Кэном Томпсоном, который в свою очередь имеет корни в языке Мартина Ричардсона BCPL. Язык BCPL был создан в 1967 году как язык для написания компиляторов и программного обеспечения ОС. Кен Томпсон предусмотрел много возможностей в своем языке B для создания ранних версий операционной системы Unix в Bell Laboratories в 1970 году на компьютере DEC PDP-7. Языки BCPL и B были языками без определения типов данных - элемент данных занимал одно "слово" в памяти, и вся обработки элемента данных (например, как целого или действительного числа) падала на плечи программиста. Язык C был первоначально реализован на компьютере DEC PDP-11 в 1972 году. С использует многие важные концепции BCPL и B, а также добавляет типы данных и другие свойства. Первоначально C приобрел широкую известность как язык разработки ОС Unix. Широкое распространение языка C на различных типах ПК (иногда называемых аппаратными платформами) привело к многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на разных платформах. Стало ясно, что необходима стандартная версия C. В 1983 г. ANSI (Американский Национальный Комитет Стандартов) сформировал комитет X 3 J 11 для создания стандарта языка C (чтобы "обеспечить машиннонезависимое и недвусмысленное определение языка"). В 1989 стандарт был утвержден. ANSI скооперировался с ISO (Международной Организацией Стандартов), чтобы стандартизовать C в международном масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990. Этот стандарт усовершенствуется до сих пор и поддерживается большинством фирм разработчиков компиляторов. С++ НИТУ “МИСи. С” Мурадханов С. Э. № 1

С++ был разработан Бьерном Страуструпом в 1983 г. С++ был разработан Бьерном Страуструпом в 1983 г. "Я придумал C++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировал критерии проектирования C++, разработал его основные возможности и отвечал за судьбу предложений по расширению языка в комитете по стандартизации C++, - пишет автор самого популярного языка программирования. – Язык C++ многим обязан языку C, и язык C остается подмножеством языка C++ (но в C++ устранены несколько серьезных брешей системы типов C). Я также сохранил средства C, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критическими системными задачами. Язык C, в свою очередь многим обязан своему предшественнику, BCPL; кстати, стиль комментариев // был взят в C++ из BCPL. Другим основным источником вдохновения был язык Simula 67. Концепция классов (с производными классами и виртуальными функциями) была позаимствована из него. Средства перегрузки операторов и возможность помещения объявлений в любом месте, где может быть записана инструкция, напоминает Algol 68. Название C++ придумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. "++" - это операция приращения в C. Чуть более короткое имя C+ является синтаксической ошибкой; кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики C находят, что C++ хуже, чем ++C. Названия D язык не получил, поскольку он является расширением C и в нем не делается попыток исцеляться от проблем путем выбрасывания различных особенностей. . . Изначально C++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, C или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. С++ НИТУ “МИСи. С” Мурадханов С. Э. № 2

Элементы языка программирования С++ Обычный разговорный язык состоит из: символов, словосочетаний и предложений. Язык Элементы языка программирования С++ Обычный разговорный язык состоит из: символов, словосочетаний и предложений. Язык программирования содержит подобные элементы: - символы – знаки алфавита, - слова называют – элементарными конструкциями, - словосочетания – выражениями, - предложения – операторами. Описание алгоритмического языка – описание этих элементов. -Символы языка - основные неделимые знаки, в терминах которых пишутся все тексты на языке программирования. -Элементарные конструкции - минимальные единицы языка, имеющие самостоятельный смысл (они образуются из основных символов языка). -Выражение - состоит из элементарных конструкций и символов (оно задает правило вычисления некоторого значения). -Оператор - задает полное описание действия, которое нужно выполнить. Для описания сложного действия операторы объединяются в блок (группа операторов). Описание каждого элемента языка задается его синтаксисом и семантикой. Синтаксис определяет правила построения элементов языка (большинство команд С++ должно заканчиваться символом «; » {точка с запятой} – это одно из правил синтаксиса). Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения (переменные в С++ перед использованием должны быть объявлены; объявление переменных осуществляется с помощью ключевых слов int, double, char, которые обозначают целочисленный, дробный или символьный тип данных соответственно). С++ НИТУ “МИСи. С” Мурадханов С. Э. № 3

Этапы работы с программой на языке программирования Си++ в системе программирования С++ НИТУ “МИСи. Этапы работы с программой на языке программирования Си++ в системе программирования С++ НИТУ “МИСи. С” Мурадханов С. Э. № 4

Базовые средства С++ q Алфавит, идентификаторы, ключевые слова, константы q Типы данных С++ q Базовые средства С++ q Алфавит, идентификаторы, ключевые слова, константы q Типы данных С++ q Структура программы q Переменные и выражения q Базовые конструкции структурного программирования (операторы ветвления, цикла и т. д. ) q Указатели и ссылки q Массивы, строки q Типы данных, определяемые пользователем (enum, struct, union) q Классы Состав языка С++ НИТУ “МИСи. С” Мурадханов С. Э. № 5

Структура программы на языке С++ Директивы препроцессора Описания {типы, переменные} void main() {главная функция Структура программы на языке С++ Директивы препроцессора Описания {типы, переменные} void main() {главная функция программы} { описания {типы, переменные} операторы главной функции } int F 1() { описания {типы, переменные} операторы функции F 1 } char F 2() { описания {типы, переменные} операторы функции f 2 } #include #include using namespace std; int main() { setlocale(LC_ALL, "russian"); int a, b, res; cout <<"Введите первое число: "; cin >>a; cout <<"Введите второе число: "; cin >>b; cout <<" Результат: "; if (a>0 && b>0) { res=a*b; cout<< a <<" * " <

Алфавит языка С++ Программа на языке С++ может содержать следующие символы: §прописные, строчные латинские Алфавит языка С++ Программа на языке С++ может содержать следующие символы: §прописные, строчные латинские буквы A, B, C, & , x, y, z и знак подчеркивания; §арабские цифры от 0 до 9; §специальные знаки: { } , |, [ ] ( ) + / % *. : ? < = > ! & # ~ ; ^ §символы пробела, табуляции и перехода на новую строку. Из символов алфавита языка формируются лексемы (token - минимальная единица языка, имеющая самостоятельный смысл) языка (ключевые слова, идентификаторы, литералы (константы), знаки операций, разделители) и директивы препроцессора. Символы алфавита используются для написания комментариев (компилятор комментарии игнорирует). Границы лексем определяются другими лексемами, такими, как разделители или знаки операций. Лексемы языка аналогичны словам естественного языка (лексемами являются константа 128 (но не ее часть 12), имя Vasia, ключевое слово goto, знак операции сложения +. Из лексем составляются выражения и операторы. q Выражение задает правило вычисления некоторого значения (выражение a + b задает правило вычисления суммы величин a и b). q Оператор задает законченное описание некоторого действия. Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их называют описаниями. int a; - это оператор описания целочисленной переменной a. Составной оператор или блок - это группа операторов, заключенная в фигурные скобки { }. Блоки могут быть вложенными. С++ НИТУ “МИСи. С” Мурадханов С. Э. № 7

Каждый элемент языка определяется синтаксисом и семантикой. Синтаксис - устанавливают правила построения элементов языка, Каждый элемент языка определяется синтаксисом и семантикой. Синтаксис - устанавливают правила построения элементов языка, семантика - определяет смысл и правила их использования. Объединенная единым алгоритмом совокупность описаний и операторов образует программу. Для описания языка используется неформальный способ, при котором: [ { void | int } ] имя(); необязательные части синтаксических конструкций заключаются в квадратные скобки, текст, который необходимо заменить конкретным значением, пишется по-русски, выбор одного из нескольких элементов обозначается вертикальной чертой, фигурные скобки используются для группировки элементов, из которых требуется выбрать только один. Директивы препроцессора (строка в коде программы, которая начинается с символа # и следующего за ним ключевого слова препроцессора) предназначены для указанию компилятору языка выполнить то или иное действие в момент компиляции программы. Препроцессором называется предварительная стадия компиляции, на которой формируется окончательный вид исходного текста программы (с помощью директив , инструкций, команд) препроцессора можно включить или выключить из процесса компиляции фрагменты кода программы). Комментарии - используются для пояснений к программе, временного исключения фрагментов программы при отладке и формирования документации. Комментарии представляют собой произвольный текст, следующий за символами // до конца текущей строки (однострочные комментарии) или текст, располагающийся на нескольких строках, ограниченных символами /* в начале комментария и */ - в его конце (многострочные комментарии). С++ НИТУ “МИСи. С” Мурадханов С. Э. № 8

q/* Си комментарий, многострочный */ q// С++ комментарий, однострочный Идентификаторы в языке Си++ – q/* Си комментарий, многострочный */ q// С++ комментарий, однострочный Идентификаторы в языке Си++ – это последовательность символов, начинающаяся с буквы или знака подчеркивания для обозначения констант, структур, классов, переменных, функций, пространства имен, строк, указателей и т. п. В идентификаторах можно использовать заглавные и строчные латинские буквы. Длина идентификаторов произвольная. Правила создания идентификаторов: § начинается с буквы § содержит буквы, цифры и подчеркивания § длинна ограничена реализацией § отличается от ключевого слова § чувствителен к регистру § реализация рекомендует избегать подчеркиваний в начале Примеры правильных идентификаторов: abc A 12 Name. Of. Person BYTES_PER_WORD abc и Abc – два разных идентификатора, т. е. заглавные и строчные буквы различаются. Примеры неправильных идентификаторов: 12 X a-b Существует несколько видов нотаций - соглашений о правилах создания имен идентификаторов. Pascal нотация - каждое слово, входящее в идентификатор, начинается с заглавной буквы. Пример: Age, Last. Name, Time. Of. Death. Венгерская нотация отличается от предыдущей наличием префикса, соответствующего типу величины. Пример: f. Age, s. Name, i. Time. С++ НИТУ “МИСи. С” Мурадханов С. Э. № 9

Camel нотация: с заглавной буквы начинается каждое слово идентификатора, кроме первого. Пример: age, last. Camel нотация: с заглавной буквы начинается каждое слово идентификатора, кроме первого. Пример: age, last. Name, time. Of. Death. Наиболее часто используются нотации: Pascal или Camel. Ряд слов в языке Си++ имеет особое значение и не может использоваться в качестве идентификаторов. Такие зарезервированные слова называются ключевыми. Каждое имя (идентификатор) должно быть уникальным в пределах функции и не должно совпадать с ключевыми словами. Ключевые слова - зарезервированные слова, которые имеют специальное значение для компилятора и используются только в том смысле, в котором они определены (операторы языка, типы данных и т. п. ). Список (зарезервированных) ключевых слов: № 1 2 3 4 5 6 7 8 9 Ключевое слово and_eq asm auto bitand bitor bool break case 10 11 12 13 14 catch char class compl const 15 const_cast 16 continue 17 default Описание альтернатива оператору && альтернатива оператору &= вставить код на ассемблере объявить локальную переменную альтернатива оператору & альтернатива оператору | объявить булеву переменную выйти с цикла определенная ветка в операторе ветвления switch обработать исключение от throw объявить символьную переменную объявить класс альтернатива оператору ~ объявить неизменяемые данные или функцию, которая не изменяет данных приведение типа от константной переменной пропустить код до конца цикла и начать новую итерацию вариант по умолчанию в switch С++ НИТУ “МИСи. С” Мурадханов С. Э. № 10

Список (зарезервированных) ключевых слов (продолжение): № 18 19 20 21 Ключевое слово delete do Список (зарезервированных) ключевых слов (продолжение): № 18 19 20 21 Ключевое слово delete do double dynamic_cast 22 else 23 enum 24 explicit 25 export 26 extern 27 false 28 float 29 for 30 friend 31 goto 32 if 33 inline 34 35 36 37 38 int long mutable namespace new 39 40 41 not_eq operator Описание освобождение памяти, выделенной new оператор цикла объявить вещественное число двойной точности выполнить приведение типов во время выполнения ветка оператора if, которая выполняется при ложном условии создание перечисляемого типа использовать данный конструктор только при полном соответствии типов позволить разделить объявление и реализацию шаблона указание компилятору, что переменная объявлена в другом файле константа для ложного значения нулевой переменной объявить вещественную переменную оператор цикла разрешить другим функциям доступ к приватным данным класса безусловный переход оператор условия оптимизация вызовов для функций (встраиваемые функции) объявить переменную целого типа объявить следующий тип длинным перекрыть константность определить новое пространство имен выделить динамическую память под новую переменную альтернатива оператору != создание перегруженных операторов С++ НИТУ “МИСи. С” Мурадханов С. Э. № 11

Список (зарезервированных) ключевых слов (продолжение): № 42 43 44 45 46 47 Ключевое слово Список (зарезервированных) ключевых слов (продолжение): № 42 43 44 45 46 47 Ключевое слово or or_eq private protected public register 48 reinterpret_cast Описание альтернатива оператору || альтернатива оператору |= объявить приватное поле класса объявить защищенное поле класса объявить общее поле класса запрос компилятору на оптимизацию переменной по скорости изменить тип переменной 49 return возврат из функции 50 short объявить короткое целое 51 signed сделать данный целый тип знаковым 52 sizeof возвратить размер переменной или типа 53 static создать статическую переменную 54 static_cast сделать не полиморфное приведение типов 55 struct определить новую структуру 56 57 58 switch template this оператор ветвления создать шаблонную функцию указатель на текущий объект 59 60 throw true 61 try 62 63 typedef typeid выбросить исключение константа для истинного значения булевой переменной выполнить код, который может выкинуть исключение создание нового типа с существующего задать описание объекта С++ НИТУ “МИСи. С” Мурадханов С. Э. № 12

Список (зарезервированных) ключевых слов (продолжение): № Ключевое слово Описание 64 typename объявить класс или Список (зарезервированных) ключевых слов (продолжение): № Ключевое слово Описание 64 typename объявить класс или иной новый тип данных 65 union структура, содержащая несколько переменных в одной области памяти 66 unsigned объявить беззнаковое целое 67 using импортировать полностью или частично указанное пространство имен внутрь текущего блока 68 virtual создать виртуальную функцию 69 void объявить функцию или переменную без типа 70 volatile предупреждение компилятору, что переменная может измениться сама 71 wchar_t объявить переменную типа wide-character 72 while оператор цикла 73 xor альтернатива оператору ^ 74 xor_eq альтернатива оператору ^= Знаки операций - это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Символы, составляющие знак операции, могут быть как специальными, например, &&, | и <, так и буквенными, такими как reinterpret_cast или new. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Большинство стандартных операций может быть переопределено (перегружено). Константами называют неизменяемые величины. Константы могут быть целыми, вещественными, символьными или строковыми. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду. Можно задать тип константы явным образом. Оператор описания константы имеет вид: сonst тип имя=значение; С++ НИТУ “МИСи. С” Мурадханов С. Э. № 13

 const double pi=3. 141592653589793 Константа может быть определена до главной функции main. В const double pi=3. 141592653589793 Константа может быть определена до главной функции main. В этом случае применяется директива #define: #define PI 3. 141592653589793 int main() {… Константы языка С++ Константа Формат Примеры Логическая Обозначается ключевым словом true, false или false Целая Десятичный: последовательность 8, 0, 199226 десятичных цифр, начинающаяся не с нуля, если это не число нуль Восьмеричный: нуль, за которым 01, 020, 07155 следуют восьмеричные цифры (0, 1, 2, 3, 4, 5, 6, 7) Шестнадцатеричный: 0 х или 0 Х, за 0 x. A, 0 x 1 B 8, которым следуют шестнадцатеричные 0 X 00 FF, 0 X 00 ff цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) Вещественная Десятичный: [цифры] 5. 7, . 001, 35 Экспоненциальный: [цифры][. ][цифры]{E|e}[+|-][цифры] 0. 2 E 6, . 11 e-3, 5 E 10, 1. 22 E-10 Символьная Один или более символов, заключенных в апострофы 'A', 'ю', '*', 'db', 'A', 'n', '12', 'x 07' Строковая Последовательность символов, заключенная в кавычки "Здесь был Vasia", "t. Сумма =x. F 5n" Если требуется сформировать отрицательную целую или вещественную константу - перед ней ставится знак унарной операции изменения знака (-). Пример, -218, 1. 22 E-10 С++ НИТУ “МИСи. С” Мурадханов С. Э. № 14

Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Значение определяется как Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Значение определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10: 1. 3 e 12=1, 3 * 1012. При записи числа могут быть опущены его целая или дробная (но, не обе сразу) часть. Пробелы внутри числа не допускаются. Символьный литерал - это один или более символов, заключенных в одиночные кавычки (апострофы). Внутри апострофов можно задать любой символ из набора символов. Пустая символьная константа недопустима. Если перед символьным литералом указан символ L, то литерал называется широким. Если L - отсутствует, литерал называется обычным. Обычный символьный литерал имеет тип char, широкий - тип wchar_t. Некоторые символы набора реализации являются непечатаемыми. Они предназначены для управления процессом отображения печатаемых символов на экране или принтере. Для представления в программе таких символов используется управляющая (escape) последовательность символов, начинающаяся с обратной косой черты . a b f n r t v \ ' " ? Звуковой сигнал Возврат на шаг Перевод страницы (формата) Перевод строки Возврат каретки Горизонтальная табуляция Вертикальная табуляция Обратная косая черта Апостроф Кавычка Вопросительный знак В строковых литералах допускается задавать любые символы из набора символов реализации, в том числе и управляющие последовательности. "Издательский дом "Питер"" С++ НИТУ “МИСи. С” Мурадханов С. Э. № 15

Ввод и вывод данных Ввод-вывод данных в языке С++ осуществляется: q с помощью функций Ввод и вывод данных Ввод-вывод данных в языке С++ осуществляется: q с помощью функций ввода-вывода в стиле С; q с использованием библиотеки классов С++. Объекты С++ легче в использовании, особенно если ввод-вывод простой. Функции ввода-вывода унаследованные от С более громоздкие, но подходят для задач с форматированным выводом данных. Функции ввода- вывода printf(строка форматов, список выводимых переменных) выполняет форматированный вывод переменных, указанных в списке, в соответствии со строкой форматов. scanf(строка форматов, список адресов вводимых переменных) выполняет ввод переменных, адреса которых указаны в списке, в соответствии со строкой форматов. Строка форматов содержит символы, которые будут выводиться на экран (вводится с клавиатуры и так называемые спецификации. Спецификации - строки, которые начинаются символом % и выполняют управление форматированием: % флаг ширина. точность модификатор тип Параметры флаг, ширина, точность и модификатор - могут отсутствовать. Значения параметров спецификаций приведены в таблице: Параметр Назначение Ширина n Ширина 0 n Ширина поля вывода. Если n позиций недостаточно, то поле вывода расширяется до минимально необходимого. Незаполненные позиции заполняются пробелами. То же, что и n, но незаполненные позиции заполняются нулями. С++ НИТУ “МИСи. С” Мурадханов С. Э. № 16

Параметр Назначение Точность n Тип с Тип d Тип o Тип x, X Тип Параметр Назначение Точность n Тип с Тип d Тип o Тип x, X Тип f Тип e Тип E Тип g Тип G Тип s Для типов e, E, f выводить n знаков после десятичной точки При вводе символьный тип char, при выводе один байт Десятичное int со знаком Восьмеричное int unsigned Шестнадцатеричное int unsigned, при х используются символы a-f, при Х - A-F Значение со знаком вида [-]dddd Значение со знаком вида [-]d. dddde[+|-]ddd Значение со знаком вида [-]d. dddd. E[+|-]ddd Значение со знаком типа e или f в зависимости от значения и точности. Значение со знаком типа e или F в зависимости от значения и точности Строка символов #include #include #include #include int main() { float a, b, c, S, r; //Описание переменных //В операторах scanf для вычисления адреса переменной применяется операция & printf("a="); //Вывод на экран символов a= scanf("%f", &a); //Запись в переменную а значениия введенного с клавиатуры printf("b="); //Вывод на экран символов b= scanf("%f", &b); //Запись в переменную b значениия введенного с клавиатуры printf("c="); //Вывод на экран символов c= scanf("%f", &c); //Запись в переменную c С++ НИТУ “МИСи. С” Мурадханов С. Э. № 17

 значениия введенного с клавиатуры r=(a+b+c)/2; //Вычисление полупериметра S=sqrt(r*(r-a)*(r-b)*(r-c)); //Вычисление площади //Вывод символов S=, значениия введенного с клавиатуры r=(a+b+c)/2; //Вычисление полупериметра S=sqrt(r*(r-a)*(r-b)*(r-c)); //Вычисление площади //Вывод символов S=, значения S и символа табуляции t //Спецификация %5. 2 f означает, что будет выведено вещественное число под которое отводится 5 знаков, причем 2 из них после точки. printf("S=%5. 2 f t", S); //Вывод символов p=, значения выражения 2*r //и символа окончания строки n. printf("p=%5. 2 e n", 2*r); Результат выполнения //Оператор printf("S=%5. 2 f t p=%5. 2 f n", S, 2*r); a=312. 2345 b=412. 3456 //выдаст тот же результат. c=543. 12345 getch(); S=64007. 07 return 0; p=1. 27 e+003 } Объектно-ориентированные средства ввода-вывода При использовании директивы #include в программе создаются объекты-потоки: cin - для ввода с клавиатуры и cout - для вывода на экран, а так же операции помещения в поток << и чтения из потока >>. Объект cin и операции >> позволяют присвоить значение переменной. Если переменная i описана как целочисленная, то команда cin>> i; означает, что в переменную i будет записано целое число, введенное с клавиатуры. Если нужно ввести несколько переменных, следует написать cin>>x>>y>>z; . Объект cout и операция << позволяют вывести на экран значение любой переменной или текст. Текст необходимо заключать в двойные кавычки (допустимо применение специальных символов t и n cout<

При вводе-выводе можно использовать манипуляторы - функции форматирования (могут находиться в теле оператора ввода При вводе-выводе можно использовать манипуляторы - функции форматирования (могут находиться в теле оператора ввода - вывода). q Функция cout. width или setw. - указывает минимальное количество символов, которые будет использовать следующее выходное значение. q Функция cout. fill - указывает символ, который cout будет использовать для заполнения пустого пространства, устанавливаемого с помощью cout. width. q Функция cout. precision или setprecision (x) позволяет управлять количеством цифр, выводимых справа от десятичной точки для значений с плавающей точкой. q Функция cin. getline позволяет читать строку текста с клавиатуры. q endl – осуществляет перевод курсора на новую строку. #include #include #include using namespace std; #define pi 3. 14159 //Определение константы #define s 10 setw(10) #define s 20 setw(20) int main() { setlocale(LC_ALL, "russian"); cout<<"Ввод данныхn"; double R, h, r, S, V, m; //Описание переменных cout<<"t. Введите R - "; cin>>R; //Ввод/вывод переменных cout<<"t. Введите h - "; cin>>h; cout<<"t. Введите r - "; cin>>r; S=2*pi*R; //Расчет площади V=pi*R*R*h; //Вычисление объема m=r*V; //Определение массы cout. fill ('. '); cout<

cout<<s 10<< cout< #include "stdafx. h" #include #include #include #include #include //для получения времени using namespace std; const char* File. Name= "file_ex 1. dat"; const int max. R=3; char st 10[10]; float Real. Ar[max. R]; struct FD { char Sym[4]; char* Name; float Sum; }; FILE* f_write. T; int iter=0; int sh=0; //для инициализации генератора случайных чисел int random_int(int n)//Получение случайного числа {//sh<=0 диапазон: любое целое sh>0 диапазон: 0<х

if (sh==0) { time_t temp = time(NULL); //получаем время srand(temp); //инициализируем генератор случайных чисел if (sh==0) { time_t temp = time(NULL); //получаем время srand(temp); //инициализируем генератор случайных чисел } sh++; int r = rand(); // получаем случайное число if (n>0) r = (r % n); return r; } char* int_char(int val)//Преобразование числа в строку { int n = val, lx = 0; // определяет количество цифр в числе while(n != 0) // Расчет количество чисел во введённом числе. . . {// Пока число делится на 10 n /= 10; // увеличиваем счётчик считающий кол-во разрядов в числе lx++; // сохраняем "длину" числа, кол-во разрядов: 1234567 = 7 чисел } char* mch=new char[lx]; int index. Ras, // последний запоминаемый разряд числа decimal = 1; // делитель, после каждого прохода, умножается на 10 for (int j = 1; j < lx; j++)// Вычисляем максимальное число, которым decimal *= 10; //мы начнём "отрывать" разряды у введённого числа for(int i = 0; i < lx; i++) { index. Ras = val / decimal % 10; // Отрываем первый разряд в числе и сохраняем в переменной char g = char(48+ index. Ras); mch[i]=g; decimal /= 10; // уменьшаем делитель для последующего разряда } mch[lx]=''; return mch; } int main() { setlocale(LC_ALL, "russian"); fin=false; int max. Raz; С++ НИТУ “МИСи. С” Мурадханов С. Э. № 21

FD Zfile; FD *ZD; f_write. T=fopen( FD Zfile; FD *ZD; f_write. T=fopen("file_ex 12. txt", "w"); if (!f_write. T) { puts("Нельзя создать файл!n"); getch(); exit(1); } do { string str=""; int i=1; cout<<"Введите количество элементов файла -(0 -завершить работу)"; cin >>max. Raz; if (max. Raz==0) fin=true; f_write=fopen(File. Name, "wb"); if (!f_write) { puts("Нельзя создать файл!n"); getch(); exit(1); } cout << "Запись файла. . . " << endl; for (int i=0; i=0; i--, j--) { Zfile. Sym[i]=rr[j]; if(j<=0) break; } Zfile. Name=strcat(dd, FZ); С++ НИТУ “МИСи. С” Мурадханов С. Э. № 22

Zfile. Sum=1. 0+(1. 1 * random_int(0)); cout << Zfile. Sum=1. 0+(1. 1 * random_int(0)); cout <<"Запись-Zfile. Sym: " <

++iter; } while (fin==false); Результат выполнения fclose(f_write. T); f_write. T=fopen( ++iter; } while (fin==false); Результат выполнения fclose(f_write. T); f_write. T=fopen("file_ex 12. txt", "r"); cout<<"n Результаты Всего-"<

Результат выполнения (продолжение) Сумма всех полей структуры ZD = 61788. 9 Введите количество элементов Результат выполнения (продолжение) Сумма всех полей структуры ZD = 61788. 9 Введите количество элементов файла - (0 завершить работу) 2 Запись файла. . . Запись-Zfile. Sym: 556 Zfile. Name: 1 - элемент Zfile. Sum: 33758. 9 Запись-Zfile. Sym: 217 Zfile. Name: 2 - элемент Zfile. Sum: 11707. 2 Чтение файла. . . Zfile. Sym = 556 Zfile. Name = 1 - элемент Zfile. Sum = 33758. 9 Zfile. Sym = 217 Zfile. Name = 2 - элемент Zfile. Sum = 11707. 2 Сумма всех полей структуры ZD = 45466. 1 Введите количество элементов файла - (0 завершить работу) 1 Запись файла. . . Запись-Zfile. Sym: 084 Zfile. Name: 1 - элемент Zfile. Sum: 33171. 5 Чтение файла. . . Zfile. Sym = 084 Zfile. Name = 1 - элемент Zfile. Sum = 33171. 5 Сумма всех полей структуры ZD = 33171. 5 Введите количество элементов файла - (0 завершить работу) 0 Лабораторная работа № 1 Запись файла. . . Чтение файла. . . Написать программу для работы с одномерными и двухмерными Сумма всех полей структуры ZD = 0 массивами. Ввод данных массивов: 1). с клавиатуры, 2). из файла. Работа с одномерными массивами: Результаты Всего-5 итераций - найти max, min элементы (вывести номер и значение) Сумма всех полей структуры ZD = - выполнить прямую и обратную сортировку; 92418, 296875 - заполнить новый массив четными элементами из исходного. Сумма всех полей структуры ZD = Работа с 2 -мя двухмерными массивами: 61788, 898438 - найти max, min элементы (вывести номер и значение) Сумма всех полей структуры ZD = - произведение, сумму, разность массивов. 45466, 097656 Разработать меню для функционирования программы. Сумма всех полей структуры ZD = С++ НИТУ “МИСи. С” Мурадханов С. Э. № 25 33171, 500000