Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Теоретическая часть. Требование к выполнению задания

Читайте также:
  1. Best Windows Apps 2013. Часть 1. Или приводим чистую операционную систему в рабочее состояние.
  2. I. Общая часть (титульный лист)
  3. I. Общая часть.
  4. II. Практическая часть.
  5. II.Основная часть
  6. PAZ Position - дисплей стереофонического позиционирования (нижняя часть плагина PAZ Analyzer)
  7. Активная часть

Требование к выполнению задания

5.1. Использовать стандартные средства управление памятью.

5.2. В коде программе необходимо применять тип данных: указатели.

5.3. Обращение к элементам массива выполнять через указатель.

5.4. Данные должны:

· Вводится с клавиатуры,

· Автоматически генерироваться случайным образом.

5.5. В программе должно быть предусмотрено (по выбору пользователя:

· Продолжение работы программы с новыми данными;

· Завершение работы программы.

6. Порядок выполнения работ

1) Анализ задания;

2) Разработать тесты;

3) Разработать алгоритм программы;

4) Разработать программу на исходном языке;

5) Отладить программу;

6) Проверить работу программы по тестам;

7) Оформить отчет;

8) Защитить работу.

7. Содержание отчета:

1) Тема работы;

2) Цель работы;

3) Задание (общее);

4) Требования к заданию;

5) Индивидуальное задание;

6) Тесты для проверки работы программы (не менее 5);

7) Блок-схема программы;

8) Текст программы;

9) Фрагменты работы программы (копия экрана монитора, подтверждающая работу программы).


Теоретическая часть

Обобщенный алгоритм работы с динамическим массивом:

1. Выделение памяти

2. Обработка в соответствии с задачей,

3. Освобождение памяти

 

Средства поддержки (языков программирования и стандартных подпрограмм), простейшие действия над указателями

Наименование Действия TurboPascal C C++
Объявление типа Type pdata=^data; data = record day: integer; mn: integer; year: integer; end; struct data { int day; int mn; int y; };   struct data { int day; int mn; int y; };
  Описание переменных   Var Pp: pointer; Mas, Pi: integer; Mt, Pr: real; Pdt: pdata; Dt: array[1..100] of data; void *pp; int *pin; float *pf; char *str; struct data dt[5], *pdt; void *pp; int *pin; float *pf struct data *pdt;
  Взять адрес K: integer; …. Pi:=@K; int k; ….. pi=&k int k; ….. pi=&k
  Определить содержимое k:=^pi; k:=pdt^.day; k=*pi; k=pi->day k=*pi; k=pi->day
Обращение по индексу: · Одномерный массив · матрица mas:=ptr(seg(p^),ofs(p^)+ i*sizeof(integer)) mt:=ptr(seg(p^),ofs(p^)+ (n*i+j)*sizeof(real)) *(ms+i)=9 (ms+n* i+j)=1 *(ms+i)=7 (ms+n* i+j=2)
Определение размера в байтах SizeOf(integer) SizeOf(data) sizeof(int) sizeof(data) sizeof(int) sizeof(data)
Выделение памяти для структуры GetMem(Pp: pointer, size:Word); void *malloc(size); Pin=new int[n]; pdt=new data;
Освобождение памяти FreeMem(Pp: pointer, size:Word); free(void *pp); delete(pin)

9. Примеры

9.1. Задание 1.

/**************************************************************** Пример программы с использованием динамической памяти ** ** на языке программирования TurboPascal *****************************************************************

uses crt;

var

mas:^integer;

m,n,i:integer;

p:pointer;

begin

write('kol:');

readln(n);

Getmem(p,sizeof(integer)*n);

m:=0;

for i:=0 to (n-1) do

begin

m:=m+11;

mas:=ptr(seg(p^),ofs(p^)+i*sizeof(integer));

mas^:=m;

end;

for i:=0 to (n-1) do

begin

mas:=ptr(seg(p^),ofs(p^)+i*sizeof(integer));

m:=mas^;

writeln(mas^,'=',m);

end;

freemem(p,sizeof(integer)*n);

end.

9.2. Задание 2.

/**************************************************************** Пример программы с использованием динамической памяти ** ** на языке программирования C *****************************************************************

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

main()

{

clrscr();

int *ms,n,i,y,v,j=0;

scanf("%d",&n);

ms=(int *)malloc(n*sizeof(int));

for(i=0;i<n; i++) scanf("%d",&*(ms+i));

for(i=0;i<n; i++){

printf(" %d ",*(ms+i));

printf("\n");

}

for(i=0;i<n;i++)

{

if(*(ms+i)==0){

v=i;

j=j+1;

if(j==1)y=i;

}

}

printf("\n pervei:%d",y+1); getch();

printf("\n posledniy:%d",v+1); getch();

free(ms);

return 0;

9.3. Задание 3.

/**************************************************************** Пример программы с использованием динамической памяти ** ** на языке программирования C ***************************************************************** #include <stdio.h> #include <stdlib.h> #include <alloc.h> int *p; int main(void) { int n,m; int i,j,l; printf("\nвведите размер матрицы NxM\n"); scanf("%d %d",&n,&m); p = (int *)malloc(n*m*sizeof(int)); if (p==NULL) { printf("нет достаточной памяти"); exit(1); } for (i=0; i<n; i++) { for (j=0; j<m; j++) { *(p+i*m+j) = i+1; printf("%d ",i+1); } printf("\n"); } l=m; if (n < m) l=n; printf("диагональные элементы матрицы:\n"); for (i=0; i<l; i++) printf("%4d ",*(p+i*m+i)); free(p); return(0); }

10. Типовые ошибки при выполнении практической работы:

1. Не освобождается память.

2. Неправильное обращение по индексу.

3. Путаница с командами «взять адрес» и взять содержимое.

Контрольные вопросы

1) Убедите в том, что задание выполнено с использованием динамических массивов.

2) Подтвердите что задание выполнено в соответствии с требованиями.

3) Тип данных: указатели. Особенности типа.

4) Действия выполняемые над указателями.

5) Функции управление памяти и их параметры.

6) Функции управление памяти в разных языках программирования

7) Классификация несвязанных динамических структур.

8) Отличительные особенности несвязанных структур.

9) Сравните статические и динамические массивы.

10) Средства поддержки динамического распределения памяти в несвязанных структурах.

 

12. Литература

1. Г.С.Иванова «Основы программирования» (издание второе) издательство «МГТУ имени Н.Э.Баумана» 2002

2. Минакова Н.И. И др. “Методы программирования” Москва Изд-во “Вузовская книга”, 1999, Стр 280

 


Дата добавления: 2015-10-29; просмотров: 77 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ДИПЛОМНЫЙ ПРОЕКТ| OSCAR WILDE QUOTES

mybiblioteka.su - 2015-2024 год. (0.01 сек.)