ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 Процедурный подход к разработке программ (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем,

Презентация:



Advertisements
Похожие презентации
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 2 Время жизни и области видимости программных объектов (весенний семестр 2012 г.) Доцент Кафедры вычислительных.
Advertisements

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Время жизни и области видимости программных объектов Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ.
Процедурный подход к программированию Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Модульное программирование Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Лекция 4 Представление основных структур: итерации, ветвления, повторения. Вспомогательные алгоритмы и процедуры.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Часть 1: «Основы программирования». Содержание Основные понятия. Структура программы. Ввод-вывод Программирование циклов. Операторы цикла while, for и.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
1 Тема 1.7. Алгоритмизация и программирование Информатика.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Подпрограммы. Субкомпетенции: 1. Обработка данных с помощью стандартных подпрограмм и подпрограмм, определённых пользователем. 2. Организация передачи.
Подпрограммы Лекция 7. Ломаско Павел Сергеевич16 декабря 2013 г.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Тема 1. Модульность. Основы модульного программирования Одной из распространенных методик создания программной продукции в настоящее время является структурное.
ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
1 Программирование на языке Си++. 2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в.
Программирование Программирование – это раздел информатики, задача которого – разработка программного обеспечения компьютера. Люди, работающие на компьютерах.
Транксрипт:

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 Процедурный подход к разработке программ (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»

Императивная парадигма программирования Противопоставлена декларативной парадигме. Вычислительный процесс описывается в виде инструкций, изменяющих состояние программы. Аналогична приказам, выражаемым повелительным наклонением в естественных языках, то есть это последовательность команд, которые должен выполнить компьютер. 2 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»

Процедурное программирование Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Каждый шаг алгоритма однозначно определяется программистом. Задачи разбиваются на шаги, которые выполняются в некоторой последовательности. Используя процедурный язык, программист определяет языковые конструкции для выполнения последовательности алгоритмических шагов. 3 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»

Структурное программирование Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций: последовательное исполнение, ветвление и цикл. Базовые конструкции могут быть вложены друг в друга. Повторяющиеся или логически целостные фрагменты программы могут оформляться в виде подпрограмм. В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. Разработка программы ведётся пошагово, методом «сверху вниз». 4 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»

Проектирование программ сверху-вниз Задача: вычислить значение выражения: A·B + С·B, где A, C – матрицы размерности m x n, а B – матрица n x k. 5 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» c 21

Проектирование программ "сверху-вниз" Задача: вычислить значение выражения: A·B + С·B, где A, C – матрицы размерности m x n, а B – матрица n x k. 6 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Задача Ввод данных X·Y X + Y Вывод данных Вычислить выражение Вычислить выражение Ввод Х Ввод вектора scanf (СИ) Произв. векторов Произв. векторов a·b (СИ) a+b (СИ) Сумма векторов Сумма векторов Вывод Х Ввод вектора printf (СИ)

Подпрограммы Подпрограммы упрощают структуру сложных программ. Разбиение программы на подпрограммы облегчает ее отладку в целом, так как каждая программа может быть тестироваться и отлаживаться отдельно. Повторное использование кода позволяет уменьшить размер программы. Подпрограммы могут использоваться в нескольких программах как в виде исходного кода, так и через вызов объектного (бинарного) кода (программные библиотеки). 7 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»

Подпрограммы в языке Си 8 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» В языке Си предусмотрены только функции (нет процедур). Однако с их помощью можно реализовать функционал процедуры. С функцией в языке Си связано 3 понятия: определение содержит информацию необходимую для вызова функции, а также код, формирующий тело функции. объявление содержит только информацию необходимую для вызова функции (указывается в заголовочных файлах, например stdio.h). вызов применяется в других подпрограммах для активации действий, связанных с функцией.

РБНФ определения функции 9 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ОпределениеФункции = ТипРезультата ИмяФункции "(" СписокФормПарам ")" "{" { ОператорОписания } Оператор { Оператор } "}" ТипРезультата = ТипДанного ИмяФункции = Идентификатор СписокФормПарам = [ ТипДанного Идентиф {"," ТипДанного Идентиф } ] ТипДанного = БазовыйТип | ПользовательскийТип int sum(int i,int j) { return i + j; }

РБНФ объявления функции 10 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ОпределениеФункции = ТипРезультата ИмяФункции "(" СписокФормПарам ")"";" ТипРезультата = ТипДанного ИмяФункции = Идентификатор СписокФормПарам = [ ТипДанного Идентиф {"," ТипДанного Идентиф } ] ТипДанного = БазовыйТип | ПользовательскийТип int sum(int i,int j);

РБНФ вызова функции 11 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» ОпределениеФункции = [Идентиф=] ИмяФункции "(" СписокФактПарам ")"";" Идентиф = Идентификатор ИмяФункции = Идентификатор СписокФактПарам = [ Идентиф {"," Идентиф } ] ТипДанного = БазовыйТип | ПользовательскийТип int main(){ int s, m=3; s = sum(m, 5); }

Формальные и фактические параметры функции 12 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Формальные параметры локальные переменные, используемые внутри тела функции и получающие значение при вызове функции путем копирования в них значений соответствующих фактических параметров. int sum(int i,int j) { int r = i + j; return r; } int main(){ int s, m=3; s = sum(m, 5); } Память summain Cлужебн. информация sm Cлужебн. информация ijr 3 5 8

Формальные и фактические параметры функции (2) 13 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» При вызове функции значения фактических параметров приводятся к типу данного формального параметра. int sum(int i,int j) { int r = i + j; return r; } int main(){ float s, m=3.8; s=sum(m,5.5); } Память summain Cлужебн. информация sm Cлужебн. информация ijr 3 5 8

Передача параметров по значению 14 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» В языке Си параметры передаются по значению. Это означает, что: изменение формального параметра не приводит к изменению фактического! void sum(int i,int j) { i = i + j; } int main(){ int s, m=3; sum(m, 5); printf("%d",m); } Стек summain Cлужебн. информация sm Cлужебн. информация ijr

Передача результатов через параметры функции 15 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Если функция имеет более одного результата, возникает необходимость их возврата через параметры. Для этого выполняется передача указателей на фактические параметры (а не их значения). int sumsub(int *i,int j) { int k = *i *i = k - j; return k + j; } int main(){ int s, m=3; s = sum(&m, 5); printf("%d",m); }

-23 Передача результатов через параметры функции (2) 16 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» int sumsub(int *i,int j) { int k = *i *i = k - j; return k + j; } int main(){ int s, m=3; s = sum(&m, 5); printf("%d",m); } Стек summain Cлужебн. информация sm Cлужебн. информация ijk 0x0FFA x0FFA 0FFA 3

Передача результатов через параметры функции 17 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Если функция имеет более одного результата, возникает необходимость их возврата через параметры. Для этого выполняется передача указателей на фактические параметры (а не их значения). int sumsub(int *i,int j) { i = i - j; return i+2*j; } int main(){ int s, m=3; sum(m, 5); printf("%d",m); } Стек summain Cлужебн. информация sm Cлужебн. информация ijr

Литература 18 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 1.Подбельский В.В, Фомин С.С. Программирование на языке Си: Учеб. пособие. - 2-е доп. изд. - М.: Финансы и статистика, с. 2.Керниган Б., Ритчи Д., Фьюер А. Язык программирования Си. Задачи по языку Си: Пер. с англ. - М.: Финанасы и статистика, 1985.