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

ЯП Лекция 1.ppt

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

? ? ? ? ? ? ? ?

Языки программирования Языки программирования -это формальная знаковая система, предназначенная для описания алгоритмов в форме, Языки программирования Языки программирования -это формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя. Фортран – старейший язык программирования, предназначен для решения математических задач. 1 c – для решения экономических задач Бейсик , Pascal – для обучения Java – язык сетевого программирования C, С++ - для системного программирования Mat. Lab – для имитационного моделирования

Синтаксис и семантика Синтаксис – описывает структуру программ как наборов символов Семантика – определяет Синтаксис и семантика Синтаксис – описывает структуру программ как наборов символов Семантика – определяет смысловое значение предложений алгоритмического языка.

? ? ? ? ? ?

C++ C# C++ C#

Классификация языков программирования Время появления: 1940 -е г. г. Краткая характеристика: линейная последовательность элементарных Классификация языков программирования Время появления: 1940 -е г. г. Краткая характеристика: линейная последовательность элементарных инструкций «низкого уровня» Преимущества: • высокая вычислительная эффективность Недостатки: • существенная зависимость от среды вычислений Примеры: • машинные коды, ассемблеры

Императивные (процедурные) языки программирования Время появления: 1950 -е г. г. Краткая характеристика: программа – Императивные (процедурные) языки программирования Время появления: 1950 -е г. г. Краткая характеристика: программа – последовательность инструкций-операторов, включающих блоки типичных действий – процедуры или Функции Преимущества: • более высокий уровень абстракции; • меньшая машинная зависимость; • более широкая совместимость содержательная значимость текстов программ; • унификация программного кода; • повышение производительности труда программистов

Императивные (процедурные) языки программирования Недостатки: • большие трудозатраты на обучение; • меньшая эффективность программного Императивные (процедурные) языки программирования Недостатки: • большие трудозатраты на обучение; • меньшая эффективность программного кода Примеры: Fortran, ALGOL, PL/1, APL, BPL, COBOL, Pascal, C, Basic

Декларативные языки программирования Время появления: 1960 -е г. г. Краткая характеристика: программа – описание Декларативные языки программирования Время появления: 1960 -е г. г. Краткая характеристика: программа – описание действий, которые необходимо осуществить Преимущества: • простота верификации и тестирования программ; • строгость математической формализации; • высокая степень абстракции Недостатки: • сложность эффективной реализации; • необходимость фундаментальных математических знаний Примеры: LISP (Interlisp, Common Lisp, Scheme), SML, Haskell, Prolog

Функциональные языки программирования Время появления: 1960 -е г. г. Краткая характеристика: программа – функция, Функциональные языки программирования Время появления: 1960 -е г. г. Краткая характеристика: программа – функция, аргументы которой, возможно, также являются функциями Преимущества: • полностью автоматическое управление памятью компьютера ( «сборка мусора» ); • простота повторного использования фрагментов кода; • расширенная поддержка функций с параметрическими аргументами (параметрический полиморфизм); Преимущества: • абстрагирование от машинного представления данных; • прозрачность реализации самоприменяемых (рекурсивных) функций; • удобство символьной обработки данных (списки, деревья) Недостатки: • нелинейная структура программы; • относительно низкая эффективность Примеры: LISP, SML, Ca. ML, Haskell, Miranda, Hope

Логические языки программирования Время появления: 1970 -е г. г. Краткая характеристика: программа – совокупность Логические языки программирования Время появления: 1970 -е г. г. Краткая характеристика: программа – совокупность правил или логических высказываний с причиной и следствием Преимущества: • высокий уровень абстракции; • удобство программирования логики поведения; • удобство применения для экспертных систем; • механизм откатов (backtrack) Недостатки: • ограниченный круг задач; • нелинейная структура программы; • недостаточно эффективная реализация Примеры: Prolog, Mercury

Объектно-ориентированные языки программирования Время появления: 1970 -е г. г. Краткая характеристика: программа – описание Объектно-ориентированные языки программирования Время появления: 1970 -е г. г. Краткая характеристика: программа – описание объектов, их совокупностей, отношений между ними и способов их взаимодействия Преимущества: • интуитивная близость к произвольной предметной области; • моделирование сколь угодно сложных предметных областей; • событийная ориентированность; Преимущества: • высокий уровень абстракции; • повторное использование описаний; • параметризация методов обработки объектов Недостатки: • сложность тестирования и верификации программ Примеры: C++, Visual Basic, C#, Oberon

Языки сценариев Время появления: 1990 -е г. г. Краткая характеристика: программа – совокупность описаний Языки сценариев Время появления: 1990 -е г. г. Краткая характеристика: программа – совокупность описаний возможных сценариев обработки данных Преимущества: • интуитивная ясность; • близость к предметной области; • высокая степень абстракции; • высокая переносимость • возможность повторного использования кода; • совместимость с инструментальными средствами автоматизированного проектирования (CASE) и быстрой разработки (RAD) прикладного программного обеспечения Недостатки: • сложность тестирования и верификации программ; • множественные побочные эффекты Примеры: VBScript, Power. Script, Lotus. Script, Java. Script

Языки параллельных вычислений Время появления: 1980 -е г. г. Краткая характеристика: программа – совокупность Языки параллельных вычислений Время появления: 1980 -е г. г. Краткая характеристика: программа – совокупность описаний процессов, которые могут выполняться одновременно или псевдопараллельно Преимущества: • высокая вычислительная эффективность для больших программных систем (тысячи одновременно работающих пользователей или компьютеров); • высокая эффективность функционирования в системах реального времени (системы жизнеобеспечения и принятия решений) Недостатки: • высокая себестоимость разработки относительно небольших программ (сотни строк кода); • относительно узкий спектр применения Примеры: Ada, Modula-2, Oz

Элементы Языка СИ Элементы Языка СИ

Историческая справка В конце 70 -х годов C превратился в язык, называемый теперь Историческая справка В конце 70 -х годов C превратился в язык, называемый теперь "традиционным C" или "классическим C" или "C Кернигана и Ритчи". В это же время издательством Prentice-Hall была опубликована ставшая знаменитой книга Кернигана и Ритчи "Язык программирования C «. В 1983 году при Американском Национальном Комитете Стандартов в области вычислительной техники и обработки информации был создан технический комитет X 3 J 11, чтобы "обеспечить недвусмысленное и машинно-независимое определение языка". В 1989 году стандарт был утвержден. В дальнейщем ANSI скооперировался с Международной Организацией Стандартов (International Standards Organizations - ISO), чтобы стандартизировать C в мировом масштабе. Совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990. В 1995 году была принята 1 -я Поправка к стандарту С. Стандарт 1989 года вместе с 1 -й Поправкой стали называть базовым документом Стандарта С++. В нем С определяется как подмножество С++.

Используемые символы Множество символов используемых в языке СИ можно разделить на пять групп 1. Используемые символы Множество символов используемых в языке СИ можно разделить на пять групп 1. Символы, используемые для образования ключевых слов и идентификаторов Прописные буквы латинского алфавита ABCDEFGHIJKLMNOPQRSTUVWXYZ Строчные буквы латинского алфавита abcdefghijklmnopqrstuvwxyz Символ подчеркивания _

Используемые символы 2. Группа прописных и строчных букв русского алфавита и арабские цифры Прописные Используемые символы 2. Группа прописных и строчных букв русского алфавита и арабские цифры Прописные буквы русского алфавита АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЫЬЭЮЯ Строчные буквы русского алфавита абвгдежзиклмнопрстуфхцчшщъыьэюя Арабские цифры 0123456789

Используемые символы 3. Знаки нумерации и специальные символы. Эти символы используются с одной стороны Используемые символы 3. Знаки нумерации и специальные символы. Эти символы используются с одной стороны для организации процесса вычислений, а с другой - для передачи компилятору определенного набора инструкций.

Используемые символы 4. Управляющие и разделительные символы. К той группе символов относятся: пробел, символы Используемые символы 4. Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. 5. Кроме выделенных групп символов в языке СИ широко используются так называемые, управляющие последовательности, т. е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты () (обязательный первый символ) и комбинацией латинских букв и цифр

Используемые символы символ возврата каретки может быть представлен различными способами: r - общая управляющая Используемые символы символ возврата каретки может быть представлен различными способами: r - общая управляющая последовательность, 15 - восьмеричная управляющая последовательность, x 00 D - шестнадцатеричная управляющая последовательность.

Ключевые слова - это зарезервированные идентификаторы, которые наделены определенным смыслом. Ключевые слова - это зарезервированные идентификаторы, которые наделены определенным смыслом.

Идентификатор Идентификатором называется последовательность цифр и букв, а также специальных символов, при условии, что Идентификатор Идентификатором называется последовательность цифр и букв, а также специальных символов, при условии, что первой стоит буква или специальный символ. Для образования идентификаторов могут быть использованы строчные или прописные буквы латинского алфавита. В качестве специального символа может использоваться символ подчеркивание (_). Два идентификатора для образования которых используются совпадающие строчные и прописные буквы, считаются различными. Например: abc, ABC, A 128 B, a 128 b. Важной особенностью является то, что компилятор допускает любое количество символов в идентификаторе, хотя значимыми являются первые 31 символ. Идентификатор создается на этапе объявления переменной, функции, структуры и т. п. после этого его можно использовать в последующих операторах разрабатываемой программы

Константы В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой, Константы В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой, символьные константы и строковыми литералы Целая константа: это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной. Десятичная константа состоит из одной или нескольких десятичных цифр, причем первая цифра не должна быть нулем (в противном случае число будет воспринято как восьмеричное). Восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр (среди цифр должны отсутствовать восьмерка и девятка, так как эти цифры не входят в восьмеричную систему счисления). Шестнадцатеричная константа начинается с обязательной последовательности 0 х или 0 Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шеснадцатеричной системы счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) const int hex = 0 x 80; /* 128 в десятичной системе */ const int oct = 012; /* 10 в десятичной системе */

Программа на С Программа на С

Использование комментариев в тексте программы /*пример Пример*/ //пример Использование комментариев в тексте программы /*пример Пример*/ //пример

Простые типы данных Простые типы данных

Объявление переменных Объявление переменной имеет следующий формат: [спецификатор_класса_памяти] спецификатор_типа идентификатор [=инициатор]. Спецификатор класса памяти Объявление переменных Объявление переменной имеет следующий формат: [спецификатор_класса_памяти] спецификатор_типа идентификатор [=инициатор]. Спецификатор класса памяти определяется одним из 4 ключевых слов языка C: auto, extern, register, static и указывает, во-первых, каким образом будет распределяться память под объявляемую переменную и, во-вторых, область видимости этой переменной, т. е. из каких частей программы можно к ней обратиться. Спецификатор типа - одно или несколько ключевых слов, определяющих тип объявляемой переменной. Инициатор задает начальное значение или список начальных значений, присваиваемых переменной при объявлении. Примеры инициализации переменных: int i=5; float f=12. 35; char ch='a'; int k=0, b=5, d=7;

Пример Пример

Как вводить и выводить информацию Самый простой механизм ввода - чтение по одному символу Как вводить и выводить информацию Самый простой механизм ввода - чтение по одному символу из стандартного входного потока (с клавиатуры) с помощью функции getchar( ). Она имеет следующий прототип (т. е. описание заголовка): int getchar(void); Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int). Оператор вида: х = getchar( ); присваивает переменной х очередной вводимый символ. Переменная х должна иметь символьный или целый тип. Другая функция - putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). Функция putchar( ) имеет прототип: int putchar(int);

Простой ввод-вывод Простой ввод-вывод

Форматированный вывод данных Функция printf( ) (прототип содержится в файле stdio. h) обеспечивает форматированный Форматированный вывод данных Функция printf( ) (прототип содержится в файле stdio. h) обеспечивает форматированный вывод. Ее можно записать в следующем формальном виде: рrintf ("управляющая строка", аргумент _1, аргумент _2, . . . );

Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка; управляющие символьные константы. Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование. Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом: % [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n Все параметры в квадратных скобках не являются обязательными. На месте параметра c_n (символ преобразования) могут быть записаны: с - значением аргумента является символ; d или i - значением аргумента является десятичное целое число; е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1. 23 e+2; Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1. 23 E+2; f - значением аргумента является вещественное десятичное число с плавающей точкой; g (или G) - используется, как е или f, и исключает вывод незначащих нулей; о - значением аргумента является восьмеричное целое число; s - значением аргумента является строка символов (символы строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью); u - значением аргумента является беззнаковое целое число; х - значением аргумента является шестнадцатеричное целое число с цифрами 0, . . . , 9, а, b, с, d, е, f; X - значением аргумента является шестнадцатеричное целое число с цифрами 0, . . . , 9, А, В, С, О, Е, F; р - значением аргумента является указатель; n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.

Например, в результате вызова функции: printf( Например, в результате вызова функции: printf("t. Computern%dn", i); сначала выполняется горизонтальная табуляция (t), т. е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (n), затем будет выведено целое число i по формату %d (десятичное целое), и, окончательно, курсор перейдет в начало новой строки (n). Напечатать строку символов можно и так: printf("Это строка символов");

Пример Пример

Форматированный ввод данных Функция scanf( ) (прототип содержится в файле stdio. h) обеспечивает форматированный Форматированный ввод данных Функция scanf( ) (прототип содержится в файле stdio. h) обеспечивает форматированный ввод. Ее можно записать в следующем формальном виде: scanf("управляющая строка", аргумент_1, аргумент_2, . . . ); Аргументы scanf( ) должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &. scanf("%d", &a); scanf("%c", &b); scanf("%d%c%f", &a, &b, &t);

Пример Пример

Операции Операции

Структурированные типы данных Массивы определяются так же, как и переменные: int a[100]; char b[20]; Структурированные типы данных Массивы определяются так же, как и переменные: int a[100]; char b[20]; float d[50]; В первой строке объявлен массив а из 100 элементов целого типа: а[0], а[1], . . . , а[99] (индексация всегда начинается с нуля). Во второй строке элементы массива b имеют тип char, а в третьей - float. Двумерный массив представляется как одномерный, элементами которого так же являются массивы. Например, определение char а[10][20]; задает такой массив. По аналогии можно установить и большее число измерений. Пусть задан массив: int a[2][3]; Тогда элементы массива а будут размещаться в памяти следующим образом: a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2].

Массивы Язык Си позволяет инициализировать массив при его определении. Для этого используется следующая форма: Массивы Язык Си позволяет инициализировать массив при его определении. Для этого используется следующая форма: тип имя_массива[. . . ]. . . [. . . ] = {список значений}; Примеры: int a[5] = {0, 1, 2, 3, 4}; char ch[3] = {'d', 'e', '9'}; int b[2][3] = {1, 2, 3, 4, 5, 6};

Строки символов char array[7] = Строки символов char array[7] = "Строка"; char s[ ] = {'С', 'т', 'р', 'о', 'к', 'а', ''}; Если string - массив символов, то ввести строку с клавиатуры можно так: gets(string); (ввод оканчивается нажатием клавиши ). Вывести строку на экран можно следующим образом: puts(string);

Функции работы со строками Отметим также, что для работы со строками существует специальная библиотека Функции работы со строками Отметим также, что для работы со строками существует специальная библиотека функций, прототипы которых находятся в файле string. h. Если string 1 и string 2 - массивы символов, то вызов функции strcpy( ) имеет вид: strcpy(string 1, string 2); Эта функция служит для копирования содержимого строки string 2 в строку string 1. Массив string 1 должен быть достаточно большим, чтобы в него поместилась строка string 2. Так компилятор не отслеживает этой ситуации, то недостаток места приведет к потере данных. Вызов функции strcat( ) имеет вид: strcat(string 1, string 2); Эта функция присоединяет строку string 2 к строке string 1 и помещает ее в массив, где находилась строка string 1, при этом строка string 2 не изменяется. Нулевой байт, который завершал первую строку, заменяется первым байтом второй строки. Функция strlen( ) возвращает длину строки, при этом завершающий нулевой байт не учитывается. Если a - целое, то вызов функции имеет вид: a = strlen(string); Функция strcmp( ) сравнивает две строки и возвращает 0, если они равны.

Пример Пример

Операции увеличения и уменьшения ++I; Необычный аспект заключается в том, что ++ и -- Операции увеличения и уменьшения ++I; Необычный аспект заключается в том, что ++ и -- можно использовать либо как префиксные операции (перед переменной, как в ++N), либо как постфиксные (после переменной: N++). Эффект в обоих случаях состоит в увеличении N. Но выражение ++N увеличивает переменную N до использования ее значения, в то время как N++ увеличивает переменную N после того, как ее значение было использовано. Это означает, что в контексте, где используется значение переменной, а не только эффект увеличения, использование ++N и N++ приводит к разным результатам. Если N = 5, то х = N++; устанавливает х равным 5, а х = ++N; полагает х равным 6.

Бинарные операции Бинарные операции

Задача: каждое слово строки вывести на экран в отдельную строку Задача: каждое слово строки вывести на экран в отдельную строку