Главная страница

Тема_1,2_Основы_алгоритмизации_Операторы_ввода_и_вывода_Типы_дан. 1. основы алгоритмизации. Язык программирования си. Операторы ввода и вывода. Типы данных


Скачать 2.17 Mb.
Название1. основы алгоритмизации. Язык программирования си. Операторы ввода и вывода. Типы данных
Дата15.02.2022
Размер2.17 Mb.
Формат файлаpdf
Имя файлаТема_1,2_Основы_алгоритмизации_Операторы_ввода_и_вывода_Типы_дан.pdf
ТипДокументы
#362606
страница2 из 4
1   2   3   4

Сравнительный анализ языка «C» с другими языками
программирования.
Парадигмы
Возможность
Язык программирования
Ada C C++ C# Prolog F# Java JavaScript Perl PHP Python
Императивная
+
+
+
+
-
+
+
+
+
+
+
Объектно-
ориентированная
+
-
/+
+
+
-
+
+
+
+
+
+
Функциональная
-
- +/- +/-
+
+
-/+
+/-
+
+/-
+
Обобщенное
программирование
+
-
+
+
+
+
+
+
+
+
+
Логическая
-
-
-
-
+
-
-
-
-
-
-

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 13
Императивная
Императивный язык должен описывать не столько саму задачу (описание, «ЧТО» нужно получить), сколько её решение («КАК» получить).
Объектно-ориентированная
Основана на представлении всего в виде объектов, являющихся экземплярами того или иного класса и воплощает применение концепции абстрагирования. Объект при этом соединяет внутри себя как данные, так и методы, их обрабатывающие.
Функциональная
Позволяет записывать программу как композицию функций. В чистом функциональном языке нет переменных. Так как функции не имеют побочных эффектов, они могут выполняться в любом порядке.
Обобщенное программирование
Обобщенное программирование позволяет записывать алгоритмы, принимающие данные любого типа.
Логическая
Программа представляет собой описание фактов и правил вывода в некотором логическом исчислении. Желаемый результат, который часто записывается как вопрос, получается системой в результате попытки применения описанных правил — путем логического вывода.
Типизация

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 14
Статическая типизация
Переменные и параметры методов/функций связываются с типами в момент объявления и не могут быть изменены позже.
Динамическая типизация
Переменные и параметры методов/функций связываются с типами в момент присваивания значения (или передачи параметра в метод/функцию), а не в момент объявления переменной или параметра. Одна и та же переменная в разные моменты может хранить значения разных типов.
Явная типизация
Типы переменных и параметров указываются явно.
Неявная типизация
Типы переменных и параметров не указываются явно.
Неявная типизация может быть и статической, в таком случае типы переменных и параметров вычисляются компилятором.
Явное приведение типов
Для использования переменной какого-то типа там, где предполагается использование переменной другого типа, нужно
(возможно) явно выполнить преобразование типа.
Неявное приведение типов без потери данных
Неявное приведение типов в таких ситуациях, где не происходит потери данных — например, использование целого числа там, где предполагалось использование числа с плавающей точкой.

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 15
Неявное приведение типов с потерей данных
Неявное приведение типов в таких ситуациях, где может произойти потеря данных — например, использование числа с плавающей точкой там, где предполагалось использование целого числа.
Неявное приведение типов в неоднозначных ситуациях
Например, использование строки там, где предполагалось число или наоборот. Классический пример: сложить число 1 со строкой «2» — результат может быть как число 3, так и строка «12». Другой пример — использование целого числа там, где ожидается логическое значение (boolean).
Компилятор/интерпретатор

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 16
Open-source компилятор (интерпретатор)
Наличие полноценного open- source компилятора (для интерпретируемых языков — интерпретатора).
Возможность компиляции
Возможность компиляции в нативный код или в byte-код с возможностью JIT-компиляции.
Интерпретатор командной строки
Возможность вводить инструкции языка строка за строкой с их немедленным выполнением. Может использоваться в качестве калькулятора.
Условная компиляция
Возможность включать/выключать части кода в зависимости от значения символов условной компиляции (например, с помощью
#if … #endif в C++)
Управление потоком вычислений

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 17
Инструкция goto
Поддержка инструкции goto (безусловный переход на метку).
Инструкция break без метки
Поддержка инструкции break без метки
(безусловный выход из ближайшего цикла), и соответствующей инструкции continue. Наличие в языке инструкции break, относящегося к switch или другой конструкции, не влияет на это поле.
Инструкция break с меткой
Поддержка инструкции break с меткой
(безусловный выход из цикла, помеченного меткой), и соответствующей инструкции continue. Наличие в языке инструкции break, относящегося к switch или другой конструкции, не влияет на это поле.
Поддержка try/catch
Поддержка обработки исключений с помощью try/catch или эквивалентной конструкции.
Блок finally
Поддержка блока finally при обработке исключений или эквивалентной конструкции.
ТЕОРИЯ АЛГОРИТМОВ
Понятие алгоритма.
Алгоритм - это строгая, четкая последовательность математических и логических операций, приводящая к решению задачи.
Алгоритм – понятное и точное предписание исполнителю выполнить конечную последовательность команд, приводящую от исходных данных к искомому результату.
Пример 1. Алгоритм «Заварка
чая»:
1. Вскипятить воду в чайнике.
2. Положить в пустую чайную чашку пакетик чая.
Пример 2. Алгоритм «Приготовь
яичницу»:
1. Достать яйцо и масло.
2. Включить плиту.
3. Поставить сковороду на плиту.

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 18 3. Залить чашку горячей водой.
4. Подождать 1 минуту.
5. Вытащить пакетик.
6. Положить в чашку
2 чайных ложки сахара.
7. Размешать сахар.
4. Растопить на сковородке масло.
5. Взять нож.
6. Разбить ножом яйцо над сковородкой.
7. Выбросить скорлупу в мусорное ведро.
8. Жарить яичницу 5 минут.
9. Выключить плиту.
Задачи, для которых невозможно составить общий алгоритм решения, получили название алгоритмически неразрешимыми.
Создателей алгоритмов называют программистами, а тех, кто по алгоритмам выполняет действия, – исполнителями.
Исполнитель алгоритма – это объект или субъект, для управления которым составлен алгоритм.
В качестве исполнителей могут быть как живые существа, так и технические устройства.
Любой алгоритм должен удовлетворять основным свойствам:
Свойства алгоритма
Дискретность означает, что путь решения задачи определён в виде последовательности шагов — чётко отделённых друг от друга предписаний
(правил, инструкций, команд). Только выполнив одно предписание, можно приступить к выполнению следующего. Другими словами все в алгоритме должно выполнятся в строгом порядке.
Детерминированность (определённость) означает, что на каждом шаге однозначно определено преобразование данных, полученных на предшествующих шагах алгоритма. Все данные, принимающие участие в решении на данном шаге

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 19 должны иметь определённые значения. Другими словами в алгоритме все должно быть строго и не двусмысленно определено.
Массовость означает, что алгоритм применим к некоторому классу задач с изменяющимися в определённых пределах исходными данными. Т.е. алгоритм должен иметь возможность применения с различными исходными данными.
Результативность означает содержательную определённость результата на каждом шаге и в итоге применения всего алгоритма. Т.е. в алгоритме не должно быть ошибок.
Конечность алгоритма гарантирует получение результата за конечное число шагов.
Виды алгоритмов:
1. Линейные алгоритмы (все этапы решения задачи выполняются строго последовательно)
2. Разветвляющиеся алгоритмы (в таких алгоритмах выбирается один из нескольких возможных путей (вариантов) вычислительного процесса)
3. Циклические алгоритмы (реализует повторение некоторых действий):
Цикл – пока (с предусловием), Цикл до (с постусловием), Цикл с параметром
Для записи алгоритмов используют несколько способов:
• способ записи алгоритма на естественном языке, но с тщательно отработанным набором слов и фраз, не допускающих повторений, синонимов, двусмысленности,
лишних слов.
Словесный
• описания алгоритма осуществляется с помощью блок-схем.
Графический
• запись алгоритма на языке программирования (в виде компьютерной программы).
Программный

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 20
Блок-схемы
Блок-схема – это графический способ представления алгоритма, каждое действие при этом осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма.
Порядок выполнения действий указывается стрелками.
Основные элементы:
Правила выполнения схем алгоритмов регламентирует ГОСТ 19.002-80
(единая система программной документации):
1. Блоки на схемах соединяются линиями потоков информации.

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 21 2. Основное направление потока информации идёт сверху вниз и слева направо (стрелки могут не указываться), снизу вверх и справа на лево – стрелка обязательна.
3. Количество входящих линий для блока не ограничено.
4. Выходящая линия должна быть одна (исключение составляет логический блок).
Пример описания алгоритма
Большинство начинающих программистов зачастую очень недооценивают столь важный и удобный инструмент программирования, как блок-схема.
Достигнув первых успехов в написании кода, многие хватаются за новые задачи, даже не пытаясь представить ход их решения, который так хорошо позволяет представить блок-схема. Как результат – задачу удается решить, лишь затратив значительно больше времени, чем стоило. Поэтому даже опытные программисты зачастую набрасывают ход решения поставленной задачи в виде блок-схемы и лишь затем начинают её программировать.
Возьмем за пример следующую задачу:
В квадратной комнате шириной A и высотой B есть окно и дверь с размерами C
на D и M на N соответственно. Вычислите площадь стен для оклеивания их
обоями. Составьте блок-схему алгоритма решения поставленной задачи
Шаг 1. Перед тем, как составлять блок-схему, стоит набросать на листке бумаги то, что вы прочли в условии. Рисуя и присваивая формулы элементам рисунка, вам удается сформировать в голове ход решения задачи. Например, эту задачу можно нарисовать так:

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 22
Смотря на рисунок, сразу становится ясно, что площадь под поклейку обоев равна высоте комнаты умноженной на ее ширину и на 4 стены. Но из этой площади нужно вычесть площадь окна и площадь двери.
Шаг 2. Разобравшись со смыслом программы можно составлять её блок- схему
Начало
Каждая программа обязательно начинается с этого блока
Ввод A,B,
C, D, M, N
Вводим данные, которые необходимы для расчетов
S=A*B*4-C*D-M*N
Производим расчеты. В данном примере мы привели все расчеты к одной формуле. Однако с тем же успехом можно было поочередно рассчитать сначала площадь стен, площадь окна, площадь двери и затем вычесть их из площади стен.
Вывод S
На предыдущем этапе компьютер рассчитал по нашей формуле значение площади и это значение хранится в оперативной памяти. Однако мы его еще не видели, соответственно это значение нужно вывести на экран
Конец
Каждая программа обязательно заканчивается этим блоком

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 23
Основные понятия языка Си
Лексемы.
В языке Си используются (являются допустимыми)

все символы латинского алфавита
A
,
B
,
C
,
D
,
E
,
F
,
G
,
H
,
I
,
J
,
K
,
L
,
M
,
N
,
O
,
P
,
Q
,
R
,
S
,
T
,
U
,
V
,
W
,
X
,
Y
,
Z
a
, b
, c
, d
, e
, f
, g
, h
, i
, j
, k
, l
, m
, n
, o
, p
, q
, r
, s
, t
, u
, v
, w
, x
, y
, z

цифры
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9

и специальные символы
,
(запятая),
;
,
(точка),
+
,
-
,
*
,
^
,
&
(амперсанд),
=
,


(тильда),
!
,
/
,
<
,
>
,
(
,
)
,
{
,
}
,
[
,
]
,
|
,
%
,
?
,
'
(апостроф),
"
(кавычки),
:
(двоеточие),
_
(знак подчёркивания)
Из допустимых символов формируются лексемы — предопределённые
константы, идентификаторы и знаки операций. В свою очередь, лексемы являются частью выражений; а из выражений составляются инструкции и
операторы.
При трансляции программы на Си из программного кода выделяются лексемы максимальной длины, содержащие допустимые символы. Если в
А
В
S = A*B* 4 стены
С
D
M
N

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 24 программе имеется недопустимый символ, то лексический анализатор (или компилятор) выдаст ошибку, и трансляция программы окажется невозможной.
Также имеется символ
#
, который не может быть частью никакой лексемы, и используется в препроцессоре
Исходный текст программы - текст написанный по правилам языка программирования (в данном случае на С).
Функция - часть программы, которая может неоднократно вызываться.
Функция main() вызывается только один раз - при запуске программы. Перед вызовом любой функции в С, надо сначала её объявить.
Компилятор - программа, которая проверяет исходный текст вашей программы на ошибки и если ошибок нет, то компилятор создает объектный модуль - файл с расширением .obj (от слова object).
*.exe файлы получаются после обработки файла *.obj - линкером.
Линкер - это редактор связей. Говоря простым языком он склеивает объектный модуль вашей программы и модули библиотек. При этом он устанавливает связи между этими модулями.
Интерпретатор
- программа или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы. В отличие от компилятора, интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Как в компиляторах, так и в интерпретаторах используются одинаковые методы анализа исходного текста программы. Но интерпретатор позволяет начать обработку данных после написания даже одной команды. Это делает процесс разработки и отладки программ более гибким.

ТЕМА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ. ОПЕРАТОРЫ
ВВОДА И ВЫВОДА.ТИПЫ ДАННЫХ.
Сотник Евгений Александрович
Sotnik_e@itstep.academy
Страница 25
Синтаксис — совокупность правил некоторого языка, определяющих формирование его элементов. Иначе говоря, это совокупность правил образования семантически значимых последовательностей символов в данном языке. Синтаксис задается с помощью правил, которые описывают понятия некоторого языка. Примерами понятий являются: переменная, выражение, оператор, процедура.
Компилятор, линковщик и интерпретатор
Что такое компилятор?
Компилятор преобразует исходный код (файлов *.с, *.cpp) в работающую программу. Если у вас нет компилятора, необходимо его установить, прежде чем начать программировать. Есть много компиляторов, которые доступны в
Интернете для скачивания. Если вы являетесь пользователем Mac OS X, Linux или других *nix систем (например, Unix или FreeBSD), вероятно, у вас уже установлены компиляторы, такие как GCC или G++.
Компоновщик (Линкер) — программа, которая генерирует исполнимый модуль путём связывания объектных файлов проекта.
1   2   3   4


написать администратору сайта