Слайд 1Курс Программирование II IAG0582
(использование языка «С» с реализацией алгоритмов)
модуль I
Преподаватели:
Владимир
Вийес viisВладимир Вийес viis@ati.ttu.eeВладимир Вийес viis@ati.ttu.ee, Маргит Аарна margitВладимир Вийес viis@ati.ttu.ee, Маргит Аарна margit@pld.ttu.ee,
Вииви Йокк viivi.jokkВииви Йокк viivi.jokk@ttu.eeВииви Йокк viivi.jokk@ttu.ee, Хеймар Веске heimar@cc.ttu.ee,
Таллиннский Технический Университет
2012
Слайд 2Цели предмета
Развитие логического и творческого мышления путем решения оригинальных задач
Научиться реализовывать
алгоритмы в различных средах, используя динамическое распределение памяти
Использовать файлы при обработке данных и записи для баз данных
Понять основы Объектно Ориентированного Программирования ООП
Слайд 3Краткое описание курса
Структурированные типы данных (Обзор)
Декларация, обработка
Файлы. Типовые файлы, текстовые файлы,
последовательные и возвратные . Буфер. Открытие файлов для (чтения, записи, изменения) и закрытие файлов.
Данные . Использование записей : ввод/вывод из файла в файл. Выстраивание элементов в файле, реакция на определенные действия. Алгоритм выстраивания записей в файле. Индексирование. Сортировка. Динамическое распределение памяти.
Рекурсия
Обмен данными с помощью рекурсии.
Прямая и косвенная
+/- использования рекурсии
Ссылки
Ссылки
Распределение и освобождение памяти. Работа программы.
Стек
Структура последовательности и стека
Алгоритм предоставления динамической структуры
Объектно ориентированное решение
Объектно ориентированные методы в построении программы (класс, метод, объект)
Отладка программы
Сканирование- контрольные пункты- отладка- построение – документация- составление проекта
Слайд 4Структура курса
Курс делится на 4 модуля/части:
1) Подготовка: ссылки, функции
2) Структурированные типы
данных: файлы, записи
3) Использование динамической памяти: структуры
4) ООП: C++, Java
Каждый модуль имеет:
Учебный материал (также видео лекцию).
Пример задания с объяснением его реализации.
Индивидуальные задания (с тестовыми данными и ответами)
Слайд 5Критерии оценивания
Домашнее задание = 30 пунктов
Письменный экзамен (2,5 ч ) +
устная часть = 70 пунктов
Допуск до экзамена 2+1 контрольные работы = 200 пунктов
Если у вас набралось в сумме 140 пунктов, то можно получить освобождение от письменной части на экзамене.
Слайд 6Предварительные знания
Курс “ПрограммированиеII” предполагает:
Что студент имеет представление о составлении алгоритмов
Что студент
знает основу языка С (DevC/C++)
В системе Moodle указан предшествующий курс “ПрограммированиеI “, который дает базовые знания в области программирования
Последние темы прошлого предмета мы повторим в рамках курса “ПрограммированиеII”
Ссылки (повторение 1)
Составление и использование подпрограмм (повторение 2)
Слайд 8printf
printf(“ %lf”, x);
printf(“%lf”, &pi);
Одинаково???
Как получить их адреса???
Слайд 9Ссылка
#include
int main(void)
{
double pi=3.14; // переменная и ссылка одного типа
double
*x=π
printf( “%If”, *x);
return 0;
}
Для вывода значения используется не имя переменной, а ссылка на адрес, где находится pi
*x – ссылка на адрес ячейки памяти
Слайд 10Ссылка на ссылку
#include
int main (void)
{
int value= 144;
int *x=&something;
int **link_link=&x;
printf(“variable
2l principle %d %d”, pi, *x);
printf(“address %d and is different to %d”, x, *link_link);
printf(“these addresses are %d, which are the same as %d”, &x, &link_link);
return 0;
}
Попробуйте реализовать этот код!
Слайд 11Практическое задание по использованию ссылок
1) Программа запрашивает у пользователя целочисленное
значение
переменной и выводит на экран.
2) Напишите ссылку для адреса этой переменной (*viit)
3) Выведите на экран значение переменной и адрес,
используя ссылку
4) Выведите на экран адрес, где находится ссылка.
Слайд 12На двух последующих слайдах изображена программа с передачей данных между подфункциями
(sub-functions) и функцией main
Используется уже знакомое нам представление, где подфункции изображены как простые переменные
( change(int a , int b) )
Следующие 2 подфункции уже реализовывают передачу данных по средством ссылок.
Попробуйте сделать сами!
Подфункции со ссылками
Слайд 13#include
#include
void change(int a, int b)
{
printf("a = %d and b
= %d\n" , a,b);
int abi=a; a=b; b=abi;
printf("a = %d and b = %d\n" , a,b);
}
void change2(int *p, int *q)
{
printf("addresses: p = %d and q = %d\n" , p,q);
printf("initial values: *p = %d and *q = %d\n" , *p,*q);
int abi=*p; *p=*q; *q=abi;
printf("End values: *p = %d and q = %d\n" , *p,*q);
}
void change3(int &a, int &b)
{
printf("a = %d and b = %d\n" , a,b);
int abi=a; a=b; b=abi;
printf("a = %d and b = %d\n" , a,b);
}
// функция main на следующем слайде
Слайд 14int main()
{
int m = 123, n=999;
change(m,n);
printf("change1: m=%d and n=%d\n" , m,n);
change2(&m,&n);
printf("сhange2:
m=%d and n=%d\n", m,n);
change3(m,n);
printf("сhange2: m=%d and n=%d\n", m,n);
system("PAUSE");
return 0;
}
Слайд 15Повторение 2
Составление подпрограмм: функции
Слайд 16Понятие функции
Функция состоит из следующих компонентов:
Выходным
значением может быть любая переменная (не массив)
В случае функции, которая ничего не выводит в типе выходного значения пишем ключевое слово void
В типе выходного значения предпочтительно использовать signed int
*
Слайд 17Декларатор
Под функциональным декларатором подразумевают имя функции и формальные параметры.
Декларатор начинается с
объявления функции, перечисление формальных параметров через запятую, и это перечисление находится в скобках.
<имя функции>(<определение 1 параметра>, <определение 2 параметра>,..., <определение n параметра>)
Слайд 18Пример:
Int fun(int a, int b, int c)
{………………………}
fun – это функция типа
int, для которой выходными параметрами являются размерности a,b,c типа int
Если формальные параметры отсутствуют, то мы дописываем ключевое слово void
Теоретически можно оставить пустые скобки, но компилятор может отреагировать на это дело с осторожностью, выдав предупреждение.
Выходными значениями и формальными параметрами могут быть любые одиночные переменные, но не массивы.
double fun(double a, double b)
{………….}
!!!Нельзя!!! double fun (double a, b) !!!Нельзя!!!
Слайд 19
Тело функции, ограниченное фигурными скобками начинает использовать задекларированные переменные и команды
. Совершаются действия и заканчивается командой return – возврат.
return<представленное выражение задает размерность вызываемой функции>
В языке С нельзя вперемешку писать описывающие и исполняемые команды. Область действия задекларированных переменных – это тело функции, обозначенное фигурными скобками.
После исполнения функций, (таких как main) следует
ставить return так как мы заканчиваем их использовать.
Слайд 20Пример использования подфункций
double max(double a, double b)
{
if (a>=b)
return a ;
else
return
b;
}
Здесь мы находим большее значение двух чисел.
Конечно, чтобы все это заработало надо прописать функцию main и все необходимое
Слайд 21Вызов функции
Функция вызывается командой/выражением по следующей схеме:
(
параметр>,..., <выражение, которое обозначает n параметр>)
Чтобы вызвать функцию без параметра, нужно оставить скобки пустыми
Результат работы функции показывается /возвращается с соответствующей командой main
Вызванное выражение может являться операндом другого выражения. Можем задать приоритет вызова выражений.
К функции типа void можно обратиться командой обозначенной выражением.
Слайд 22
Пример:
double x,y,z,m;
m=max(x*y-z, 5.0);
Задание функции следующее
double max(double a, double b);
double x,u,v,m;
m=max(x,max(u,v));
Находим
максимум из 3 чисел
Слайд 23E-kursusi teaduskonniti 2009/2010
Спасибо , что прослушали курс !
Продолжайте свое обучение
при помощи блока программного обеспечения (software/tarkvara )
Ознакомьтесь с материалами факультета Информационных Технологий по адресу www.tud.ttu.ee