- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •230201 - Информационные системы и технологии
- •Тема 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на эвм.
- •Тема 4 изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
- •Тема 8 посвящена структурам данных фиксированного размера (массивы), а также типам данных, определяемых пользователем (структуры, объединения, перечисления).
- •Тема 10 изучает динамические структуры данных: виды и способы реализации списков, динамическое выделение памяти.
- •Тема 12 затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
- •Тема 14 вводит в технологию объектно-ориентированного программирования.
- •Раздел I Принципы программирования на языках высокого уровня
- •Тема 1. Эволюция языков программирования
- •1.1. Неструктурированное, «стихийное» программирование
- •1.2. Процедурное (модульное) программирование
- •1.3. Объектно-ориентированное программирование
- •1.4. Компонентные технологии программирования
- •Тема 2. Жизненный цикл программы и основные
- •2.1. Дружественность, жизненный цикл программы
- •2.2. Постановка задачи и спецификация программы
- •2.3. Проектирование и реализация программы
- •2.4. Способы записи алгоритма
- •2.5. Критерии качества программы
- •3.1. Классификация программных продуктов
- •3.3. Модели программирования в ms-dos и Windows
- •Тема 4. Диалоговые программы
- •4.1. Типы пользовательских интерфейсов
- •4.2. Классификация диалогов и их реализация
- •4.3. Основные компоненты графических
- •Тема 5. Программа на языке высокого уровня
- •5.1. Структура программы и функции
- •5.2. Стандартные типы данных и операции над ними
- •5.3. Адресные типы данных: указатели и ссылки
- •5.4. Стандартные библиотеки языка
- •5.5. Классы памяти
- •Раздел 2 Управляющие структуры и структуры данных
- •Тема 6. Представление управляющих структур
- •6.1. Структура следования
- •6.2. Структуры ветвления
- •6.3. Структуры повторения
- •Int kol, //счетчик введенных оценок
- •Int god; //число лет
- •Тема 7. Адресные типы данных
- •7.1. Указатели
- •7.2. Ссылки
- •Тема 8. Структуры данных фиксированного размера
- •8.1. Массивы
- •8.2. Типы данных, определяемые пользователем
- •Тема 9. Функции (процедуры)
- •9.1. Определение, прототип и вызов функции
- •9.2. Передача параметров
- •9.3. Программирование рекурсивных алгоритмов
- •Тема 10. Динамические структуры данных
- •10.1. Списки: основные виды и способы реализации
- •10.2. Динамическое выделение памяти
- •Раздел 3 Процедурное программирование
- •Тема 11. Ввод/вывод данных
- •11.1. Видеофункции библиотеки conio.H
- •11.2. Функции библиотеки потокового ввода/вывода
- •Тема 12. Обработка файлов данных
- •12.1. Записи и файлы данных
- •12.2. Операции и средства обработки файлов
- •12.3. Контроль операций обработки файлов
- •Тема 13 Технология процедурного программирования
- •13.1. Способы конструирования программ
- •13.2. Проектирование программы: методы декомпозиции и и модульного программирования
- •13.3. Реализация программы: методы структурного
- •Тема 14. Введение в технологию объектно-
- •14.1. Основные понятия объектно-ориентированного
- •14.2. Проектирование программы
- •14.3. Реализация программы
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •Тема 1. Технология программирования и этапы ее
- •Тема 2. Жизненный цикл программы и основные этапы
Тема 8. Структуры данных фиксированного размера
8.1. Массивы
Массив - это поименованная совокупность данных, состоящая из фиксированного числа элементов одинакового типа.
При объявлении массива резервируется память.
Примеры объявления массивов:
int a[5]; //объявление массива kol для 5 элементов типа int
int b[10], c[20]; //объявление двух массивов
char imf[7]; //объявление массива символов
При объявлении массива можно одновременно выполнить его инициализацию набором значений, заключённых в фигурные скобки. Массивы символов можно инициализировать строкой символов, указанной в двойных кавычках.
Примеры:
int a[5]={10, 20, 30, 40, 50};
int a[]={10, 20, 30, 40, 50};//можно не указывать размер массива
char imf[]=”akt.dat”;//объявление и инициализация
Доступ к элементам массива осуществляется с помощью индексированной переменной, например, a[i]:
,где i -целое положительное число от 0 до 4 (количества элементов минус 1).
Пример:
int a[5];//первый элемент - a[0],...,пятый элемент - a[4]
В языке С++ предусмотрено понятие только одномерного массива. Многомерные массивы представляются как массив, состоящий из элементов типа массив.
Пример объявления и инициализации двумерного массива:
int a[2][3]={{1, 2, 3},{4, 5, 6}};
Первый индекс указывает номер строки, а второй – номер столбца.
Доступ к элементам двумерного массива осуществляется с помощью индексированной переменной, например, a[i][j]:
, где i – целое число 0, 1; j – целое число 0, 1, 2.
Операции над элементами массива варьируются в зависимости от типа его элементов.
Массивы и указатели тесно связаны и могут быть использованы почти одинаково. Имя массива можно считать как константный указатель. При обработке массивов лучше использовать нотацию массивов, а не нотацию указателей. Программировать становится легче, программа становится более понятной, хотя и несколько длиннее.
Элементами массива могут быть указатели. Примером использования такой структуры данных является массив строк, в котором каждый элемент является указателем на первый символ строки.
Приведем пример массива указателей из функции menu главы 5:
char* m[]={«Акты работ», «Расценки», «Ведомости», «Выход»};
Хотя размер массива m фиксирован, он обеспечивает доступ к строкам символов любой длины. Эта гибкость – один из примеров мощных возможностей структурированных данных в С++.
Если этот массив строк разместить в двумерном массиве, то такая структура данных должна иметь фиксированное количество столбцов, равное самой длинной строке. В этом случае затраты памяти будут значительны.
Пример 6. «Типовые операции над массивами»
Условие задачи: ввести два массива, отсортировать их, и затем произвести их слияние..
Создать проект консольного приложения и ввести имя проекта TPlab2_4.
Создается исходный файл TPlab2_4.cpp, который будет содержать всего одну пустую функцию main():
int t_main(int args, _TCHAR* argv[])
{return 0;}.
Проект должен содержать файл заголовков TPlab2_4.h и файл кодов TPlab2_4.cpp.
Создать файл TPlab1_2.h, ввести текст файла и сохранить его:
//файл заголовков TPlab2_4.h
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
const int nmax=100;
const int nmaxr=200;
void vvod(int n, float m[]);
void sort(int n, float m[]);
void slijanie(int n1, float m1[], int n2, float m2[], float m[]);
void vyvod(int n, float m[]);
Добавить в файл кодов TPlab2_4.cpp тексты функций:
//файл кодов TPlab2_4.cpp
#include "stdafx.h"
#include "TPlab2_4.h"
int _tmain(int argc, _TCHAR* argv[])
{
int k, k1, k2;
float a1[nmax], a2[nmax], a[nmaxr];
cout<<"Vvedite chislo elementov massiva 1: ";
cin>>k1;
vvod(k1, a1);
sort(k1, a1);
cout<<"Vvedite chislo elementov massiva 2: ";
cin>>k2;
vvod(k2, a2);
sort(k2, a2);
k=k1+k2;
slijanie(k1, a1, k2, a2, a);
vyvod(k, a);
return 0;
}
void vvod(int n, float m[])
{
for(int i=0; i<n; i++)
{
cout<<"Vvedite element "<<i+1<<": ";
cin>>m[i];
}
return;
}
void sort(int n, float m[])
{
int i=0;
int perest=1;
while(i<=n-1 && perest)
{
perest=0;
for(int j=n-1; j>0; j--)
if(m[j-1]>m[j])
{
perest=1;
float b=m[j-1];
m[j-1]=m[j];
m[j]=b;
}
i++;
}
return;
}
void slijanie(int n1,float m1[],int n2,float m2[],float m[])
{
int i, i1, i2;
i=i1=i2=0;
while(i1<n1 && i2<n2)
if(m1[i1]<m2[i2])
{
m[i]=m1[i1];
i++;
i1++;
}
else
{
m[i]=m2[i2];
i++;
i2++;
}
if(i1==n1)
{
for(int k=i2; k<n2; k++)
{
m[i]=m2[k];
i++;
}
}
else
{
for(int k=i1; k<n1; k++)
{
m[i]=m1[k];
i++;
}
}
return;
}
void vyvod(int n, float m[])
{
cout<<"Resultat: "<<endl;
for(int i=0; i<n; i++)
cout<<m[i]<<" ";
return;
}