- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •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. Жизненный цикл программы и основные этапы
Int god; //число лет
cout<<"Vvod vclada: ";
cin>>vclad;
cout<<"Vvod stavki: ";
cin>>stavka;
cout<<"Vvod chisla let: ";
cin>>god;
//блок обработки и вывода данных
cout<<"God"<<setw(20)<<"Summa depozita"<<endl;
//depozit=vclad*(1.0+stavka)^i); i=1,...,god
for(int i=1; i<=god; i++)
{
depozit=vclad*pow(1.0+stavka, i);
cout<<setw(4)<<god;
cout<<setw(20)<<setiosflags(ios::fixed|ios::showpoint)
<<setprecision(2)<<depozit<<endl;
}
return 0;
}
Пример 5. «Структура повторения с постусловием
do/while»
Условие задачи: распечатать оценки студентов.
Создать проект консольного приложения и ввести имя проекта TPlab1_6. Создается исходный файл TPlab1_6.cpp, который будет содержать одну пустую функцию main():
int t_main(int args, _TCHAR* argv[])
{return 0;}.
Проект должен содержать файл заголовков TPlab1_6.h и файл кодов TPlab1_6.cpp.
Создать файл TPlab1_6.h, ввести текст файла и сохранить его:
//файл заголовков TPlab1_6
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
Добавить в файл кодов TPlab1_6.cpp подключение файла заголовков и текст функции main():
#include "stdafx.h"
#include "TPlab1_6.h"
int _tmain(int argc, _TCHAR* argv[])
{
int kol, f, ocenka;
cout<<"Vvesti kol-bo studentov: ";
cin>>kol;
cout<<"Ocenki studentov"<<endl;
cout<<"Nomer"<<"\tOcenka"<<endl;
int i=1;
do
{
cout<<i<<'\t';
cin>>ocenka;
}
while(++i<=kol);
return 0;
}
Контрольные вопросы
Сколько имеется управляющих структур?
Перечислите структуры ветвления.
Перечислите структуры повторения.
Объясните оператор break.
Объясните оператор continue.
Тема 7. Адресные типы данных
7.1. Указатели
В языке С++ существуют два способа доступа к переменным и функциям : по имени переменной или функции и по адресу с помощью указателей.
Указатель - это переменная, содержащая адрес другой переменной или функции. Использование указателей позволяет упростить алгоритм и повысить его эффективность за счет простого доступа к большим объемам данных с помощью указателя. В стек копируется не весь объем данных, а только одно число -адрес первого байта данных.
Для инициализации указателя адресом переменной служит операция & (операция адресации или операция взятия адреса).Для доступа к переменной через указатель используется операция * (операция разадресации, или разыменования, или обращения по адресу, или косвенной адресации).
Пример:
int tabn1,tabn2,*p=&tabn1;//объявление и инициализация
tabn1=1000; //указателя p адресом переменной tabn1
tabn2=*p;//tabn2=1000; Выражение *p означает, что нужно извлечь
// значение по адресу, равному значению указателя p
Операция разадресации может быть использована также в левой части оператора присваивания для того, чтобы данные были запомнены по адресу, который содержит указатель.
Пример:
int tabn,*p=&tabn;
tabn=1000;
*p=2000;// Значение tabn изменится на 2000
Над указателями можно выполнять следующие операции:
- операции адресации(&) и разадресации(*);
- операция присваивания(=);
- арифметические операции(+,-,++,--);
- операции сравнения.
При выполнении арифметических операций с указателями предполагается, что указатель указывает на массив объектов. Таким образом, если указатель объявлен как указатель на type, то прибавление к нему целого значения перемещает указатель на соответствующее количество объектов type . Если type имеет размер 4 байта, то прибавление целого числа 5 к указателю этого типа перемещает указатель в памяти на 20 байтов.
Указатели - это удобный способ обработки больших объемов данных: массивов, структур, объединений.
Использование ключевого слова const определяет, что указатель и/ или указываемая переменная не должны изменяться. Если необходимо, чтобы указываемая переменная не изменялась, нужно записать const перед типом указателя.
Пример:
int tabn1, tabn2;
const int *p=&tabn1; //p - указатель на константу типа int
*p=1000; //Присвоение объекту tabn1, на который указывает
// указатель на константу p, недопустимо
p=&tabn2; //Присвоение указателю на константу допустимо
Если необходимо, чтобы сам указатель не изменялся, нужно записать const после обозначения типа указателя.
Пример:
int * const p=&tabn1; //Указатель-константа на int
*p=1000; //Присвоение объекту tabn1, на который указывает
// указатель на константу p, допустимо
p=&tabn2; // Присвоение указателю на константу недопустимо
Адрес именной константы не может быть присвоен указателю-константе, даже если ее значение не будет изменено.
Пример:
const int kol=25;
int * const p=&kol; //Недопустимо
const int *p=&kol; //Допустимо
Преимущества указателей следующие:
экономия памяти, более компактное размещение данных с использованием массивов указателей;
эффективное выполнение программы при использовании указателей в качестве параметров функции при передаче агрегированных данных за счет того, что в стек копируется не весь объем данных, а только одно число -адрес первого байта данных;
возможность изменения значений переменных вызывающей функции при изменении значений параметров вызываемой функции, т.е. возможность возврата значений помимо оператора return;
Альтернативой указателям являются ссылки.