Разделы презентаций


Основы программирования ФИСТ 1 курс Власенко Олег Федосович

Содержание

файлhttps://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BBФайл (англ. file) — именованная область данных на носителе информации.

Слайды и текст этой презентации

Слайд 1Основы программирования ФИСТ 1 курс Власенко Олег Федосович
Лекция 10.
Работа с файлами.
Загрузка карты

уровня игры из файла.
Игра Сокобан.

Основы программирования ФИСТ 1 курс Власенко  Олег  ФедосовичЛекция 10.Работа с файлами.Загрузка карты уровня игры из

Слайд 2файл
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB

Файл (англ. file) — именованная область данных на носителе информации.

файлhttps://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BBФайл (англ. file) — именованная область данных на носителе информации.

Слайд 3Текстовый файл
Текстовый файл содержит последовательность символов (в основном печатных знаков,

принадлежащих тому или иному набору символов). Эти символы обычно сгруппированы

в строки (англ. lines, rows). В современных системах строки разделяются разделителями строк

https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB


Текстовый файлТекстовый файл содержит последовательность символов (в основном печатных знаков, принадлежащих тому или иному набору символов). Эти

Слайд 4Работа с файлом – общий алгоритм
Открыть файл
Работать с файлом
Закрыть файл



Работа с файлом – общий алгоритмОткрыть файлРаботать с файломЗакрыть файл

Слайд 5Задача 1 – прочитать из файла 2 целых числа, подсчитать

их сумму, вывести в другой файл
// Чтение из входного файла
//

Обработка
// Запись в выходной файл

Входной файл:
3 12

Выходной файл:
15

Задача 1 – прочитать из файла 2 целых числа, подсчитать их сумму, вывести в другой файл// Чтение

Слайд 6Задача 1 – прочитать из файла 2 целых числа, подсчитать

их сумму, вывести в другой файл
// Чтение из входного файла
FILE

*fin;
int a, b, s;
fin = fopen(“d:\\Temp\\Files\\in1.txt", "rt");
if (fin == NULL) {
printf("File in1.txt is not found");
return;
}
fscanf(fin, "%d%d", &a, &b);
fclose(fin);
Задача 1 – прочитать из файла 2 целых числа, подсчитать их сумму, вывести в другой файл// Чтение

Слайд 7Задача 1 (2)
// Обработка
s = a + b;

Задача 1 (2)// Обработка	s = a + b;

Слайд 8Задача 1 (3)
// Запись в выходной файл
FILE *fout;
fout = fopen(“d:\\Temp\\Files\\out1.txt",

"wt");
if (fout == NULL) {
printf("File out1.txt cannot be created");
return;
}
fprintf(fout, "s

= %d", s);
fclose(fout);
Задача 1 (3)// Запись в выходной файл		FILE *fout;	fout = fopen(“d:\\Temp\\Files\\out1.txt

Слайд 9Зачем нужно закрывать файл?
Кэш
Буфер

Зачем нужно закрывать файл?КэшБуфер

Слайд 10Задача 2
Загрузить из файла “in2.txt” массив из N строк по

M элементов каждая (1

клавиатуры.
(Загруженный массив вывести в консоль для контроля).
Удалить столбцы, в которых есть хотя бы один четный элемент.
Получившийся массив вывести в консоль и в файл “out2.txt”.
Задача 2Загрузить из файла “in2.txt” массив из N строк по M элементов каждая (1

Слайд 11Задача 2 – загрузка из файла

// Чтение из входного файла
//

Открытие файла
FILE *fin;
fin = fopen("d:\\Temp\\in3.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);
Задача 2 – загрузка из файла// Чтение из входного файла// Открытие файлаFILE *fin;fin = fopen(

Слайд 12Задача 2 – удаление столбцов с четными элементами
for (j =

0; j < m; ) {
int flag = 0;
for (i

= 0; i < n; i++)
if (a[i][j] % 2 == 0) {
flag = 1;
break;
}

if (flag) {
for (int j2 = j; j2 < m - 1; j2++)
for (i = 0; i < n; i++)
a[i][j2] = a[i][j2 + 1];
m--;
}
else {
j++;
}
}
Задача 2 – удаление столбцов с четными элементамиfor (j = 0; j < m; ) {	int flag

Слайд 13Задача 2 – вывод результата в файл
// Запись в выходной

файл
FILE *fout = fopen("d:\\Temp\\out2.txt", "wt");
if (fout == NULL) {
printf("File out2.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);
Задача 2 – вывод результата в файл// Запись в выходной файлFILE *fout = fopen(

Слайд 14Задача 3 **
Загрузить из файла “in3.txt” массив из N строк

по M элементов каждая (1

с клавиатуры.
(Загруженный массив вывести в консоль для контроля).
Продублировать строки, в которых есть отрицательные элементы.
Получившийся массив вывести в консоль и в файл “out3.txt”.
Задача 3 **Загрузить из файла “in3.txt” массив из N строк по M элементов каждая (1

Слайд 15Задача 3 – вставка строк
for (i = n - 1;

i >= 0; i--) {
int flag = 0;
for (j =

0; j < m; j++)
if (a[i][j] < 0) {
flag = 1;
break;
}

if (flag) {
// вставка i-ой строки дублированием
for (int i2 = n; i2 > i; i2--)
for (j = 0; j < m; j++)
a[i2][j] = a[i2 - 1][j];
n++;
}
}
Задача 3 – вставка строкfor (i = n - 1; i >= 0; i--) {	int flag =

Слайд 16Будем делать Sokoban – на основе предыдущей игры

Будем делать Sokoban –  на основе предыдущей игры

Слайд 17Кодируем состояние игры в 2D массиве
#define N 10
#define M 15

int

a[N][M] = {
{ 3, 0, 1, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 },
{ 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 },
{ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 }
};

int steps = 0;
int gold = 0;

Коды ячеек
// 0 - свободно
// 1 - золото
// 2 - стена
// 3 - игрок

Кодируем состояние игры в 2D массиве#define N 10#define M 15int a[N][M] = {{ 3, 0, 1, 0,

Слайд 18Sokoban
http://www.flashplayer.ru/play_4959.php

Sokobanhttp://www.flashplayer.ru/play_4959.php

Слайд 19Sokoban – нужно растолкать ящики по местам
http://www.flashplayer.ru/play_4959.php

Sokoban – нужно растолкать ящики по местамhttp://www.flashplayer.ru/play_4959.php

Слайд 20Как будем хранить игровое поле и состояние?
#define N 12
#define M

15

int field[N][M];
// 0 – не игровое поле
// 1 – стена
//

2 - игровое поле
// 3 – поле для ящика

int boxes[N][M];
// 0 – на поле ничего нет
// 1 – грузчик
// 2 - ящик
Как будем хранить игровое поле и состояние?#define N 12#define M 15int field[N][M];// 0 – не игровое поле//

Слайд 21Файл с игровым полем

Файл с игровым полем

Слайд 22Содержимое файла 1.txt

Содержимое файла 1.txt

Слайд 23Загрузка игрового поля из файла - main
void main()
{

if (loadLevel(“d:\\Temp\\Files\\Lec10\\1.txt")) {
printField();
}

{
int

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

}

Загрузка игрового поля из файла - mainvoid main(){	if (loadLevel(“d:\\Temp\\Files\\Lec10\\1.txt

Слайд 24Загрузка игрового поля из файла – loadLevel (1)
int loadLevel(char filename[])

{

FILE *fin = fopen(filename, "rt");
int i, j;

if (fin == NULL)

{
printf("File %s is not opened", filename);
return 0;
}
Загрузка игрового поля из файла – loadLevel (1)int loadLevel(char filename[]) {	FILE *fin = fopen(filename,

Слайд 25Загрузка игрового поля из файла – loadLevel (2)
for (i =

0; i < N; i++) {
for (j = 0; j

< M; j++) {
fscanf(fin, "%d", &field[i][j]);
}
}

for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
fscanf(fin, "%d", &boxes[i][j]);
}
}
fclose(fin);
return 1;
}
Загрузка игрового поля из файла – loadLevel (2)	for (i = 0; i < N; i++) {		for (j

Слайд 26Печать игрового поля
void printField() {
int i, j;
for (i = 0;

i < N; i++) {
for (j = 0; j

M; j++) {
// трехмерный массив!!!
char symbol[4][3][3] = {
{ "..", ".1", ".2" },
{ "##", "#1", "#2" },
{ "xx", "xM", "xB" },
{ "$$", "$M", "$B" }
};

printf("%s_", symbol [field[i][j]] [boxes[i][j]] );
}
printf("\n");
}
}
Печать игрового поляvoid printField() {	int i, j;	for (i = 0; i < N; i++) {		for (j =

Слайд 27Печать игрового поля (результат работы)

Печать игрового поля (результат работы)

Слайд 28Печать игрового поля (результат работы)

Печать игрового поля (результат работы)

Слайд 29Печать игрового поля (результат работы)

Печать игрового поля (результат работы)

Слайд 30Печать игрового поля 2 (результат работы)

Печать игрового поля 2 (результат работы)

Слайд 31Источники информации
msdn
google

Источники информацииmsdngoogle

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика