Основы алгоритмизации и программирования

Содержание

Слайд 2

Минимальный (обязательный) набор практических навыков

Умение нарисовать блок-схему алгоритма для линейных участков, любых

Минимальный (обязательный) набор практических навыков Умение нарисовать блок-схему алгоритма для линейных участков,
циклов, развилок, в том числе вложенных (любой степени вложенности).
Умение выполнять ручную трассировка алгоритма/программы – на листочке бумаги.
Умение создать новый проект в VS. Умение набрать текст программы в редакторе VS.
Умение собрать и запустить программу на выполнение в VS.
Умение ввести числовые данные с клавиатуры в консоли. Умение прочитать результат программы в консоли.
Умение трассировать программу в VS – линейные участки, развилки, циклы. Умение трассировать вызов функций, трассировать рекурсию. Просматривать локальные переменные, стек вызовов, любые выбранные выражения.
Умение создавать текстовые файлы вручную.
Умение читать программно числовые данные из текстовых файлов.
Умение создавать проект Windows.
Умение создавать картинки средствами Win API, состоящие из линий, прямоугольников и эллипсов.

Слайд 3

Минимальный набор алгоритмов (выученных наизусть!)

Вычисление факториала.
Вычисление чисел Фибоначчи.
Ввод элементов массива
Вывод элементов массива
Поиск

Минимальный набор алгоритмов (выученных наизусть!) Вычисление факториала. Вычисление чисел Фибоначчи. Ввод элементов
минимального/максимального элемента массива
Поиск среднего арифметического элементов массива
Обмен местами двух элементов массива
Функция strlen - смочь написать свою реализацию
Функция strcat - смочь написать свою реализацию
Функция strcpy - смочь написать свою реализацию

Слайд 4

Пример экзаменационной задачи (на «хорошо»)

Общее задание
Ввести двумерный массив из файла. Количество

Пример экзаменационной задачи (на «хорошо») Общее задание Ввести двумерный массив из файла.
элементов не более 10x10.
Каждый элемент – целое число в интервале значений -1000..+1000.
Количество строк (N) и столбцов (M) задано первой строке входного файла. Далее в N строках записаны по M числе.
Обработать массив согласно варианту.
Сохранить результат в формате, аналогичном входному
Вариант

Слайд 5

Простое решение экзаменационной задачи
(другие варианты решения – см. Лекция 9)

Простое решение экзаменационной задачи (другие варианты решения – см. Лекция 9)

Слайд 6

Входной файл

Входной файл

Слайд 7

Решение без функций (1)

#define _CRT_SECURE_NO_WARNINGS
#include
void main()
{
int a[10][10];
int n, m;
// Чтение из

Решение без функций (1) #define _CRT_SECURE_NO_WARNINGS #include void main() { int a[10][10];
входного файла
FILE *fin = fopen("d:\\Temp\\in.txt", "rt");
if (fin == NULL) {
printf("File in3.txt is not found");
return;
}
fscanf(fin, "%d", &n);
fscanf(fin, "%d", &m);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(fin, "%d", &a[i][j]);
fclose(fin);

Слайд 8

Решение без функций (2)

// вывод массива в консоль
for (int i = 0;

Решение без функций (2) // вывод массива в консоль for (int i
i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");
// поиск минимального
int min = a[0][0];
int iMin = 0;
int jMin = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] < min) {
min = a[i][j];
iMin = i;
jMin = j;
}
}
}

Слайд 9

Решение без функций (3)

// поиск максимального
int max = a[0][0];
int iMax = 0;
int

Решение без функций (3) // поиск максимального int max = a[0][0]; int
jMax = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] > max) {
max = a[i][j];
iMax = i;
jMax = j;
}
}
}
// перестановка столбцов с минимальным и максимальным элементами
for (int i = 0; i < n; i++) {
int tmp = a[i][jMin];
a[i][jMin] = a[i][jMax];
a[i][jMax] = tmp;
}

Слайд 10

Решение без функций (4)

// вывод массива в консоль
for (int i = 0;

Решение без функций (4) // вывод массива в консоль for (int i
i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%5d ", a[i][j]);
}
printf("\n");
}
printf("\n");
// Запись в выходной файл
FILE *fout = fopen("d:\\Temp\\out.txt", "wt");
if (fout == NULL) {
printf("File out.txt cannot be created");
return;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
fprintf(fout, "%5d ", a[i][j]);
fprintf(fout, "\n");
}
fclose(fout);

Слайд 11

Решение без функций (5)

{
int x;
scanf("%d", &x);
}
}

Решение без функций (5) { int x; scanf("%d", &x); } }

Слайд 12

Пример экзаменационной задачи (на «отлично»)

Общее задание
Ввести двумерный массив из файла. Количество

Пример экзаменационной задачи (на «отлично») Общее задание Ввести двумерный массив из файла.
элементов не более 10x10.
Каждый элемент – целое число в интервале значений -1000..+1000.
Количество строк (N) и столбцов (M) задано первой строке входного файла. Далее в N строках записаны по M числе.
Обработать массив согласно варианту.
Сохранить результат в формате, аналогичном входному.
Имейте в виду - во время выполнения программы количество используемых строк и столбцов может изменится. Предусмотрите в массиве столько строк и столбцов, чтобы программа корректно работала на любых корректных входных данных.
Нельзя использовать дополнительные массивы – в программе используется ровно один массив.

Слайд 13

Пример экзаменационной задачи (на «отлично»)

Вариант

Пример экзаменационной задачи (на «отлично») Вариант

Слайд 14

Теоретические вопросы к экзамену

1. Графические схемы алгоритмов = блок-схемы алгоритмов. (Линейный алгоритм,

Теоретические вопросы к экзамену 1. Графические схемы алгоритмов = блок-схемы алгоритмов. (Линейный
развилка, цикл, вложенный цикл и т.д., break, continue, вызов функции, в том числе рекурсивной, return)
2. Идентификаторы (DlinnoeMnemonicheskoeImya1).
3. Стандартные типы данных (int).
4. sizeof(), диапазон значений типа (Пр: unsigned char – от 0 до 255).
5. Подключение библиотек (#include)
6. Объявление переменных (int a;).
7. Выражения (a+b*c).
8. Операторы. Приоритеты операторов (-b+sqrt(d)/2*a).
9. Развилка. Полная, усеченная, вложенная. (if (a10. Выбор (switch(day) { case Monday: printf(“Mn”);}).
11. Циклы. Циклы с предусловием и с постусловием (while (*str++);).
12. Циклы для обхода всех элементов. Цикл for (for( i=0; i13. Изменение естественного хода выполнения программы – инструкции break, continue, return, goto и т.п.)
14. Структуры (struct Line {int x1, y1, x2, y2;}; struct Line *p; …p->x1 = 10; ).
15. Указатели (int *p; p = &a; *p = 10;). Указатель void *
16. Функции. (int f(int x) {}).
17. Область видимости переменных. Локальные и глобальные переменные (int x; void f() { int x;}).
18. Статические переменные (void f() { static int x = 0;}).

Слайд 15

Теоретические вопросы к экзамену

19. Разделы памяти во время выполнения программы: статическая, автоматическая,

Теоретические вопросы к экзамену 19. Разделы памяти во время выполнения программы: статическая,
динамическая, машинный код.
20. Рекурсия. Прямая и косвенная. Область применения. (void f() { f();})
21. Массивы. Работа с одномерными массивами. Работа с двумерными массивами. (int a[10];)
22. Динамическая память. Выделение и освобождение динамической памяти. (malloc, free).
23. Символы. ASCII. Функции обработки символов (if (isdigit(ch) {digit = ch – ‘0’;})
24. Обработка текста. Строки ASCIIZ. (char s[]= “abc”; int len = strlen(s);)
25. Ввод/вывод. Консоль. (scanf(“%d”, &a); printf(“%d”, a * a);)
26. Ввод/вывод. Текстовые файлы. HTML. (FILE * f = fopen(filename, “rt”);)
27. Создание многомодульных проектов.
28. Декартова система координат. Экранная система координат. Рисование линий средствами Win API.
29*. Реализация односвязных списков. (struct Item {Data data; Item * next;};)
30*. Реализация двусвязных списков. (struct Item {Data data; Item * next; Item * prev;};)
31*. Понятие «Двоичное дерево поиска». Реализация двоичного дерева поиска на Си. (struct NodeTree { int data; NodeTree * left; NodeTree * right; };)
32*. Вычислительная сложность алгоритма. Асимптотическая оценка сложности: O(1), O(log N), O(N), O(N2), … . Измерение времени работы программы.
*Вопросы помеченные “*” (с 29 по 32) являются обязательными для сдачи на оценку «отлично». Они исключены из списка вопросов на «хорошо» и «удовлетворительно»

Слайд 16

Ориентировочная структура экзамена

Сделать все лаб работы
Сдать все лаб работы
Подготовиться к экзамену
а) Выполнить

Ориентировочная структура экзамена Сделать все лаб работы Сдать все лаб работы Подготовиться
пробные задачи
б) выбрать уровень сложности, который вы готовы подтверждать на экзамене
в) Подготовить ответы на теоретические вопросы
* Посетить консультацию перед экзаменом – задать на ней любые вопросы по предмету и списку вопросов, получить ответы
Прийти на экзамен
Выбрать уровень сложности
Получить практическую задачу соответствующего уровня сложности
За ограниченное время - выполнить полученную задачу
Продемонстрировать работоспособность задачи на любых корректных входных данных
В случае необходимости – отладить и исправить код
По требованию преподавателя – нарисовать блок-схему для указанного фрагмента кода
По требованию преподавателя – продемонстрировать навыки трассировки как вручную так и в VS
Выбрать теоретические вопросы
Подготовить ответы письменно
В беседе с преподавателем показать знакомство с темами теоретических вопросов
В случае необходимости – ответить на дополнительные вопросы без подготовки
Получить оценку
Отметить успешную сдачу экзамена

Слайд 17

Уровни сложности на экзамене

На «удовлетворительно»
Можно сдать не все лабораторные работы (Пибд и

Уровни сложности на экзамене На «удовлетворительно» Можно сдать не все лабораторные работы
ИСЭбд – 12 и 14 лабы можно не сдавать!)
Задача практическая (из списка Обязательных алгоритмов)
1 теоретический вопрос – при подготовке можно пользоваться бумажными носителями информации
Никаких дополнительных вопросов
На «хорошо»
Сделаны и сданы все лабораторные работы
Задача практическая
2 теоретических вопроса – при подготовке можно пользоваться бумажными носителями информации
дополнительные вопросы – 1-2
На «отлично»
Сделаны и сданы все лабораторные работы.
Оценка за аттестацию – не ниже «4» ИЛИ есть особые дополнительные заслуги (победитель олимпиады в течение семестра и т.п.)
Задача практическая
2 теоретических вопроса – при подготовке нельзя пользоваться ничем
дополнительные вопросы – 6+
Имя файла: Основы-алгоритмизации-и-программирования.pptx
Количество просмотров: 24
Количество скачиваний: 0