Основы программирования
Определения информации
История
История
История
Типы данных
Типы данных и структуры
Представление чисел в памяти
Программы, которые используются для трансляции или запуска других программ
Низкоуровневые языки программирования
Высокоуровневые языки программирования
Python
Python
C++
Условные конструкции
Функции и методы
Сигнатуры метода
Сигнатуры метода
Функции и методы
Функции и методы
Функции и методы
Функции и методы
Вызов функции
Физические и математические модели
Физические и математические модели
Основные этапы метода математического моделирования
Классы
Классы
4.69M

Lektsia_1

1. Основы программирования

Лектор: Мотин Константин Владиславович

2. Определения информации

«Информация – это обозначение содержания, полученное нами из
внешнего мира в процессе приспособления к нему нас и наших
чувств» (Норберт Винер)
«Информация – это не знание само по себе, а значение, которое
может быть получено
представления посредством
Что такоеизинформация?
интерпретации» (Хьюберт Йоки)
Символическое представление одной сущности с помощью другой.
Но сама информация не является абстрактной в том же смысле, что
и множество всех простых чисел, поскольку она существует только
тогда, когда она физически реализована.

3. История

Самый первый язык
программирования
был написан Адой
Лавлейс еще в 1843
году для
машины
Беббиджа, именно Ада
ввела в обиход такие
компьютерные
термины как цикл и
ячейка.

4. История

Машина Тьюринга
Абстрактный исполнитель,
осуществляющий
алгоритмический процесс
Это математический объект, а
не физическая машина
Предложена Аланом
Тьюрингом в 1936 году

5. История

Планкалкюль — первый в
мире высокоуровневый язык
программирования,
созданный немецким инженером Конрадом Цузе в 1943—
1945 году и впервые
опубликованный в 1948 году.
Был написан для компьютера
Z4

6. Типы данных

Примитивные (базовые) — простейшие типы, которые есть в любом языке
программирования. Например:
целочисленные — для хранения целых чисел (int, short, long);
числа с плавающей точкой — для хранения дробных чисел (float, double);
символьные типы — для хранения одного символа (char);
логические типы — для хранения значений true или false (bool).
Составные — объединяют несколько примитивных типов. Например:
массивы — набор элементов одного типа;
структуры и классы — объединённые данные разных типов;
строки — последовательность символов.
Пользовательские — программисты могут создавать свои типы данных,
например, с помощью enum (перечислений) или классов.

7. Типы данных и структуры

Простые типы данных
Существуют основные типы данных, такие как
целые числа (int), числа с плавающей запятой
(float), строки (string) и логические значения
(bool). Разные языки могут иметь свои
собственные правила для работы с этими
типами.
Сложные структуры данных
Это включает в себя массивы, списки,
множества, словари (или хэш-таблицы) и
другие
структуры,
которые
позволяют
организовывать и хранить данные. Синтаксис
для работы с такими структурами может
варьироваться в зависимости от языка.

8. Представление чисел в памяти

9. Программы, которые используются для трансляции или запуска других программ

Компилятор принимает файл с кодом, написанным на определённом языке
программирования, и преобразует его в формат, который может исполнять
компьютер. На вход компилятор принимает исходный код, а на выходе
предоставляет исполняемый файл — готовую к запуску программу.
Интерпретатор анализирует исходный код и выполняет его строка за
строкой, не создавая никаких промежуточных файлов. Это позволяет ему
выполнять код на лету, преобразуя команды в байт-код. Пример такого
подхода — CPython, который является стандартным интерпретатором для
языка Python.
JIT-компилятор (Just-In-Time) объединяет лучшие черты обоих подходов.
Он начинает работу как интерпретатор, выполняя команды по мере их
чтения, но также переводит некоторые из них в машинный код. Это
особенно полезно для часто повторяющихся операций, поскольку
позволяет значительно ускорить выполнение программы, избегая
повторного интерпретирования одних и тех же команд.

10. Низкоуровневые языки программирования

Языки программирования, предназначенные для определенного
типа ЭВМ и отражающие его внутренний машинный код.
Процессор распознает команды только в двоичном коде —
написанные при помощи нулей и единиц (100110). Цифры помогают
машине понять, что именно нужно сделать — вывести на экран
изображение, положить свитшот в корзину или запустить любимую
игру. У низкоуровневых языков нет встроенных функций.
Примеры: Ассемблер, C++, Rust и др.

11. Высокоуровневые языки программирования

Языки программирования, средства которых обеспечивают
описание задачи в наглядном, легко воспринимаемом виде, удобном
для программиста.
Данные языки предлагают абстрактные конструкции, позволяющие
разработчикам сосредоточиться на логике приложений,
минимизируя внимание к низкоуровневым операциям компьютера.
Их синтаксис разработан таким образом, чтобы код был легко
читаемым и удобным для поддержки и изменений.
Примеры: Фортран, ПЛ/1 , Бейсик, Паскаль, C#, Ада, Python и др.

12. Python

Python — это высокоуровневый язык программирования,
который известен своей простотой и читаемостью кода.
Он был создан в конце 1980-х годов Гвидо ван Россумом и
стал популярным благодаря своей универсальности и
доступности для начинающих.
Особенности Python:
- Простота синтаксиса: Python имеет минималистичный
синтаксис, что делает его идеальным для начинающих
программистов.
- Динамическая типизация: В Python переменные не
требуют явного указания типа данных — интерпретатор
сам определяет тип.
- Большая стандартная библиотека: Python поставляется с
множеством библиотек для работы с различными
задачами, такими как веб-разработка, анализ данных,
искусственный интеллект, автоматизация и т. д.
- Интерпретируемый язык: Python код выполняется
интерпретатором, что облегчает отладку и тестирование.

13. Python

C++ — это язык программирования, разработанный Бьёрном
Страуструпом в 1979 году как расширение языка C, добавляющий
поддержку объектно-ориентированного программирования. C++
сочетает в себе особенности высокоуровневых и низкоуровневых
языков, что позволяет создавать очень производительные и
ресурсоемкие приложения.
Особенности C++:
- Мощь и производительность: C++ предоставляет низкоуровневые
возможности работы с памятью (например, через указатели), что
позволяет создавать высокопроизводительные системы.
- Статическая типизация: Типы данных необходимо указать заранее,
что помогает избежать ошибок.
Объектно-ориентированное
программирование:
C++
поддерживает классы и объекты, а также наследование,
полиморфизм и инкапсуляцию.
- Управление памятью: C++ дает программисту контроль над
управлением памятью, включая выделение и освобождение
памяти вручную, что делает его идеальным для разработки
системного программного обеспечения.

14. C++

C++ — это язык программирования, разработанный Бьёрном
Страуструпом в 1979 году как расширение языка C, добавляющий
поддержку объектно-ориентированного программирования. C++
сочетает в себе особенности высокоуровневых и низкоуровневых
языков, что позволяет создавать очень производительные и
ресурсоемкие приложения.
Особенности C++:
- Мощь и производительность: C++ предоставляет низкоуровневые
возможности работы с памятью (например, через указатели), что
позволяет создавать высокопроизводительные системы.
- Статическая типизация: Типы данных необходимо указать заранее,
что помогает избежать ошибок.
Объектно-ориентированное
программирование:
C++
поддерживает классы и объекты, а также наследование,
полиморфизм и инкапсуляцию.
- Управление памятью: C++ дает программисту контроль над
управлением памятью, включая выделение и освобождение
памяти вручную, что делает его идеальным для разработки
системного программного обеспечения.

15. Условные конструкции

Условные
конструкции:
Языки
программирования позволяют принимать
решения с использованием условных
операторов (if, else, elseif, switch, и др.).
Синтаксис для этих конструкций может
варьироваться. Например, в Python
используются отступы, а в Java - фигурные
скобки.
Циклы:
Для
повторения
действий
используются циклы (for, while, и др.).
Синтаксис определения циклов может
отличаться в зависимости от языка.

16. Функции и методы

Метод представляет собой блок кода, содержащий набор
инструкций.
Метод Main является точкой входа для каждого приложения C#, и
вызывается он средой CLR при запуске программы.
<уровень доступа><модификаторы><тип возвращаемого
значения><имя>(<тип аргумента><имя аргумента>)
Примеры
public static int Main(object param){…}
public void PrintName(){…}
internal sealed Point GetCentr(Circle cir, double r){…}

17. Сигнатуры метода

Сигнатура метода включает:
• уровень доступа,
• необязательные модификаторов,
• тип возвращаемого значения,
• имя метода и всех параметров этого метода.
Тип возврата метода не является частью сигнатуры метода в целях
перегрузки метода. Однако он является частью сигнатуры метода при
определении совместимости между делегатом и методом, который
он указывает.

18. Сигнатуры метода

Сигнатура метода включает:
• уровень доступа,
• необязательные модификаторов,
• тип возвращаемого значения,
• имя метода и всех параметров этого метода.
Тип возврата метода не является частью сигнатуры метода в целях
перегрузки метода. Однако он является частью сигнатуры метода при
определении совместимости между делегатом и методом, который
он указывает.

19. Функции и методы

[модификатор доступа] [тип возвращаемого значения] [имя функции]
([аргументы])
{
// тело функции
}
static int max( int f, int s )
{
if ( f > s )
return f;
else
return s;
}

20. Функции и методы

• Функция являет собой небольшую подпрограмму. Если просто программа - это
решение какой-то прикладной задачи, то функция – это тоже решение, только
уже в рамках программы и, соответственно, она выполняет задачу «попроще».
• Функции позволяют уменьшить размер программы за счет того, что не нужно
повторно писать какой-то фрагмент кода - мы просто вызываем сколько угодно
и где нужно объявленную функцию.
• Функции в Си-шарп также называют методами.
• От прошлого нам остался еще один термин – «процедура». Если у функции тип
возвращаемого значения - void - это указывает на то, что функция ничего не
возвращает.

21. Функции и методы

В отличие от процедур функции возвращают определенное значение. Например,
определим пару функций:
int Factorial()
{
return 1;
}
string Hello()
{
return "Hello World";
}

22. Функции и методы

В функции в качестве типа возвращаемого значения вместо void используется
любой другой тип. В данном случае тип int.
Функции также отличаются тем, что мы обязательно должны использовать
оператор return, после которого ставится возвращаемое значение.
Возвращаемое значение всегда должно иметь тот же тип, что значится в
определении функции.
Так как у нас функция возвращает значение типа int, после оператора return
стоит число 1 - которое неявно является объектом типа int.

23. Вызов функции

В примере определены два метода.
Первый метод Hello возвращает значение типа string. Поэтому мы можем присвоить это значение какой-нибудь переменной типа string:
string message = Hello(); // вызов первого метода
Второй метод - процедура Sum - просто складывает два числа и выводит результат на консоль. Поэтому при вызове мы не можем ее приравнять какой-либо переменной!
Sum(); // вызов второго метода
class Program
{
public static int GetMax(int[] array)
{
int max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
max = array[i];
}
return max;
}
static void Main(string[] args)
{
int[] numbers = { 3, 32, 16, 27, 55, 43, 2, 34 };
int max;
max = GetMax(numbers);
//вызов такой функции можно использовать
при присваивании значения
Console.WriteLine(GetMax(numbers)); // вызов функции также можно использовать
как аргумент при вызове другой
}
}
Console.ReadKey();
функции. WriteLine() – тоже функция!

24. Физические и математические модели

Физическое моделирование – это вид моделирования, который состоит в замене
изучения некоторого объекта или явления экспериментальным исследованием его
модели, имеющей ту же физическую природу.
В основе физического моделирования лежат теория подобия и анализ размерностей.
Теория подобия – это учение об условиях подобия физических явлений. Теория подобия
опирается на учение о размерностях физических величин и служит основой
моделирования физического. Предметом теории подобия является установление
подобия критериев различных физических явлений и изучение с помощью этих
критериев свойств самих явлений.
Физические явления, процессы или системы подобны, если в сходственные моменты
времени в сходственных точках пространства значения переменных величин,
характеризующих состояние одной системы, пропорциональны соответствующим
величинам другой системы. Коэффициенты пропорциональности для каждой из
величин называется коэффициентом подобия.

25. Физические и математические модели

Под математическим моделированием будем понимать процесс установления
соответствия данному реальному объекту некоторого математического объекта,
называемого математической моделью, и исследование этой модели,
позволяющее получать характеристики рассматриваемого реального объекта.
Если математическая модель описывается некоторыми уравнениями, то такая
модель называется детерминированной.
Если модель описывается некоторыми вероятностными законами, то такая
модель называется стохастической.

26. Основные этапы метода математического моделирования

1. Создание качественной модели.
2. Создание математической модели (постановка математической задачи).
а) Выделение существенных факторов.
б) Выделение дополнительных условий (начальных, граничных, условий сопряжения и т.д.).
3. Изучение математической модели.
а) Математическое обоснование модели.
б) Качественное исследование модели. Выяснение поведения модели в крайних и предельных
ситуациях.
в) Численное исследование модели.
a) Разработка алгоритма.
b) Разработка численных методов исследования модели.
г) Создание и реализация программы. Компьютерный эксперимент.
4. Получение результатов и их интерпретация. Уточнение и модификация модели и
методов ее исследования.
5. Использование полученных результатов.

27. Классы

Класс – это обобщенное понятие, определяющее характеристики и поведение некоторого
множества объектов, называемых экземплярами класса. В программном понимании класс является
типом данных, определяемым пользователем, в котором объединены структуры данных и методы их
обработки.
Описание класса содержит ключевое слово class, за которым следует его имя, а далее в фигурных
скобках — тело класса. Кроме того, для класса можно задать его базовый класс (предок) и ряд
необязательных атрибутов и спецификаторов, определяющих различные характеристики класса:
[ атрибуты ] [ спецификаторы ] class имя_класса [ : предки ] {
тело_класса
}
С# позволяет указывать только один класс в качестве предка. Кроме этого, класс может
реализовывать несколько интерфейсов. Более подробно схема наследования будет рассмотрена
позже.
Спецификаторы определяют характеристики класса, а также доступность класса для других
элементов программы. Возможные значения спецификаторов перечислены в следующей таблице:
Спецификаторы называются спецификаторами доступа. Они определяют, откуда можно
непосредственно обращаться к данному классу. Спецификаторы доступа могут комбинироваться с
остальными спецификаторами, но не могут комбинироваться между собой.
Замечание. В рамках данного модуля атрибуты класса мы рассматривать не будем.
Класс
можно
описывать
непосредственно
внутри
пространства
имен
или
внутри
другого
класса.
В
последнем
случае
класс
называется
вложенным.
В
зависимости
от
места
описания
класса
некоторые
из
этих
спецификаторов
могут
быть запрещены.

28. Классы


Спецификатор
Описание
1.
abstract
Абстрактный класс. Применяется в иерархии объектов.
2.
internal
Доступ только из данного проекта (сборки).
3.
new
Задает новое описание класса взамен унаследованного от предка. Используется для вложения классов (в иерархии
объектов).
4.
private
Доступ только из элементов класса, внутри которых описан данный класс. Используется для вложенных классов.
5.
protected
Доступ только из данного или производного класса. Используется для вложенных классов.
6.
protected internal
Доступ только из данного и производного класса в рамках текущего проекта (сборки).
7.
public
Доступ к классу не ограничен
8.
sealed
Бесплодный класс. Запрещает наследование данного класса. Применяется в иерархии объектов.
9.
static
Статический класс. Позволяет обращаться к методам класса без создания экземпляра класса
English     Русский Правила