Характеристика алгоритмизации и программирования

Изучение основных частей персональной электронно-вычислительной машины и технических возможностей компьютера. Кодирование текстовой информации. Операции с дисками, папками и файлами. Характеристика программирования арифметических выражений на С++.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 13.12.2016
Размер файла 180,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

,

где значения могут являться элементами заданного массива , вычисляться по рекуррентным соотношениям и т.п. Это означает, что необходимо организовать циклический вычислительный процесс, в котором происходит не только вычисление значений заданной функции y=f(x) при каждом новом значении аргумента, но и одновременное накопление сумм (произведений) путем прибавления (умножения) полученного значения к сумме (произведению) всех предыдущих.

На рис. 7 представлена блок-схема вычисления

где - элементы массива .

Общая формула, используемая для накопления суммы может быть представлена в виде:

.

Отметим, что в этой формуле знак «=» играет не свою необычную роль знака равенства, а роль знака присваивания: переменной S присваивается новое значение, которое на величину больше прежнего значения S.

Если начальное значение переменой S предварительно (до входа в цикл) задать равным нулю (S = 0), то после первого выполнения цикла значение S будет равно первому значению функции и при каждом новом происхождении цикла значение увеличивается на очередной член суммы:

и т.д.

Аналогичным образом организуется циклический алгоритм накопления произведения . Разница состоит в том, что начальное значение P должно быть равно единице (P = 1), а формула накопления имеет вид: .

Решение одного варианта

Вычислить значение выражения

где z = 1.05

// Вложенные циклы

// Выполнил студент 1 - курса гр. ГИ -09-01 Якубов А.Х.

# include <iostream.h>

# include <math.h>

int main ()

{

double x,y,z,s,s1,s2;

double pi = 3.14;

cout <<”Vvedite znachenie z”;

cin<<z;

s1 = 0; s2 = 0;

for(x =1; x<= 10; x++) {

s1 = s1 + (sqrt(fabs(x - 2.1) - pow(x,(1/3)))/ (z + x*x/2 + pow(x,3)));

for( y =4; y<=9; y++ )

s2 = s2 + (1/x *(atan(z/y) + sin(1/y + pi/6)));

s = s1 + s2;

cout <<”\ns=”<<s;}

return 0;

}

Лабораторная работа 8

Разработка программ, связанных с формированием одномерных массивов

Цель работы.

Приобретение навыков написания программ, связанных с формированием массивов, удовлетворяющих данному условию в алгоритмическом языке высокого уровня С++.

Краткая теория.

При использовании простых переменных каждой области памяти для хранения данных соответствует свое имя. Если с группой величин одинакового типа требуется выполнять однообразные действия, им дают одно имя, а различают по порядковому номеру. Это позволяет компактно записывать множество операций с помощью циклов. Конечная именованная последовательность однотипных величин называется массивом. Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):

float a [10]; // описание массива из 10 вещественных чисел

Элементы массива нумеруются с нуля. При описании массива используются те же модификаторы (класс памяти, const и инициализатор), что и для простых переменных. Инициализирующие значения для массивов записываются в фигурных скобках. Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:

int b[5] = {3, 2, 1}; // b[0]=3, b[1]=-2, b[2]=l, b[3]=0, b[4]=0

Размерность массива вместе с типом его элементов определяет объем памяти, необходимый для размещения массива, которое выполняется на этапе компиляции, поэтому размерность может быть задана только целой положительной константой или константным выражением. Если при описании массива не указана размерность, должен присутствовать инициализатор, в этом случае компилятор ны делит память по количеству инициализирующих значений. Размерность может быть опущена также в списке формальных параметров .Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.

Размерность массивов предпочтительнее задавать с помощью именованных констант, поскольку при таком подходе для ее изменения достаточно скорректировать значение константы всего лишь в одном месте программы. Обратите внимание, что последний элемент массива имеет номер, на единицу меньший заданной при его описании размерности.

Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность, например:

int n = 100;

float *р = new float [n];

В этой строке создается переменная-указатель на float, в динамической памяти отводится непрерывная область, достаточная для размещения 100 элементов вещественного типа, и адрес ее начала записывается в указатель р. Динамические массивы нельзя при создании инициализировать, и они не обнуляются.

Преимущество динамических массивов состоит в том, что размерность может быть переменной, то есть объем памяти, выделяемой под массив, определяется на этапе выполнения программы. Доступ к элементам динамического массива осуществляется точно так же, как к статическим, например, к элементу номер 5 приведенного выше массива можно обратиться как р[5] или *(р+5).Альтернативный способ создания динамического массива -- использование функции mallос библиотеки С:

int n = 100;

float *q = (float *) malloc(n * sizeof(float));

Операция преобразования типа, записанная перед обращением к функции

mallос, требуется потому, что функция возвращает значение указателя типа void*, а инициализируется указатель на float.

Память, зарезервированная под динамический массив с помощью new [], должна освобождаться оператором delete [], а память, выделенная функцией malloc -посредством функции free, например:

delete [] p; free (q);

При несоответствии способов выделения и освобождения памяти результат неопределен. Размерность массива в операции delete не указывается, но квадратные скобки обязательны.

Решение одного варианта

Задана последовательность X = (x1, x2, …, x10). Сформировать из неё одномерный массив Y, состоящий из элементов, удовлетворяющих условию B xi A, где

.

Если таковых не окажется, напечатать фразу «Искомых элементов нет». Полученный массив вывести в столбик. Исходные данные: X = {2.2, 3.4, -4.9, 0.71, 2.0, -1.6, 0.35, 2.5, -0.1, .15}.

Текст программы решения задачи на С++ приведен ниже.

// Работа с одномерными массивами

//Выполнил студент гр.ГИ-09-01 Якубов А.Х.

#include <iostream.h>

#include <math.h>

int main ()

{

const int n=10;

int i,k;

double x[n], y[n],a,b,s1,s2;

cout <<"\n Vvedite elementi massiva X\n";

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

cin>>x[i];

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

cout<<x[i]<<" ";

s1= 0;s2= 0;

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

s1 = s1 + fabs(x[i]);

s2= s2 + x[i];} //20

cout<<"\ns1="<<s1;

cout<< "\ns2="<<s2;

a = s1-2.5; b = s2- 2.5;

cout<<"\na="<<a<<" "<<"b="<< b;

k=0;

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

if ((x[i]>=b) && ( x[i]<=a)){ y[k] = x[i]; k=k+1;}

if( k=0 ) cout<<"Исходных эл-ов нет "; else cout <<"Сформированный массив";

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

cout<<"\ny[k]="<<y[k];

return 0;

}

Особенностью решения данной задачи является то, что количество элементов массива Y не совпадают с количеством элементов массива X, т.к. не все элементы массива Х включаются в массив Y, а только те, которые удовлетворяют условию B Xi A. Поэтому для обозначения индекса элементов массива Y нужно предусмотреть другую переменную, например k, значение которой необходимо изменять на единицу k=k+1 перед занесением в массив Y нового значения Y(k)=X(i). До входа в цикл по формированию массива Y нужно положить начальное значение k=0. Величину k можно рассматривать как количество элементов массива Y.

Лабораторная работа 9

Обработка двумерных числовых массивов данных на алгоритмическом языке высокого уровня С++

Цель работы.

Практика составления алгоритмов и программ обработки числовых двумерных массивов на алгоритмическом языке высокого уровня С++.

Краткая теория

Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор

int matr [6][8];

задает описание двумерного массива или матрицы MATR из 6 строк и 8 столбцов. В памяти такой массив располагается в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс. Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j], или более экзотическим способом:

*(matr[i]+j) или *(*(matr+i)+j). Это возможно, поскольку matr[i] является адресом начала i-й строки массива.

При инициализации многомерного массива он представляется либо как массив из массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае левую размерность при описании можно не указывать), либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти:

Для создания динамического многомерного массива необходимо указать в операции new все его размерности (самая левая размерность может быть переменной), например:

int nstr = 5;

int ** m = (int **) new int [nstr][10];

Более универсальный и безопасный способ выделения памяти под двумерный массив, когда обе его размерности задаются на этапе выполнения программы, приведен ниже:

int nstr, nstb;

cin » nstr » nstb;

int **a = new int *[nstr]; // 1

for(int i = 0; i<nstr; i++) // 2

a[i] = new int [nstb]; ..... // 3

В операторе 1 объявляется переменная типа «указатель на указатель на int» и выделяется память под массив указателей на строки массива (количество строк -- nstr). В операторе 2 организуется цикл для выделения памяти иод каждую строку месива. В операторе 3 каждому элементу массива указателей на строки присваивается адрес начала участка памяти, выделенного под строку двумерного массива. Каждая строка состоит из nstb элементов типа int.

Освобождение памяти из-под массива с любым количеством измерений выполняется с помощью операции delete []. Указатель на константу удалить нельзя.

Пример

Ввести таблицу A числовых данных, состоящую из 4 строк и 5 столбцов, и переменную D.

Cоставить алгоритм и программу, которые позволят вычислить суммы элементов строк, напечатать номер строки и значения элементов ее, если сумма элементов строки имеет значение, большее значения переменной D.

Блок - схема алгоритма представлена на рис. 10.

Решение одного варианта

Вычислить элементы матрицы А по следующему условию:

n = m = 5

Определить число элементов матрицы A, значения которых лежат в интервале (c, b]. Напечатать это число. Значения c, b задаются по вводу.

Ниже приведена программа на С++ решения этой задачи.

// Работа с матрицами

// Выполнил студент гр.ГИ-09-01 Якубов А.Х.

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main ()

{

int const n=5,m=5;

int i,j,k;

double c,b,a[n][m];

cout<<"\nVvedite c,b\n";

cin>>c>>b;

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

for(j=0; j<=m; j++)

if (i>j) a[i][j]= 5.7*i - fabs(j-3); else a[i][j]= pow((j+1.93),3)-i;

cout<<"\n Sformirovannaya Matrisa A\n";

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

for(j=0; j<=m; j++)

cout<<setw(4)<<a[i][j]<<" ";

cout<<endl;

}

k = 0;

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

for(j=0; j<=m; j++)

if ((a[i][j]>=c) && (a[i][j]<=b)) k=k+1;}

if (k=0) cout<<"\nTakih el-ov net";else cout<<"\nk="<<k;

return 0;

}

Лабораторная работа 10

Работа с функциями в С++

Цель работы:

Отработка навыков написания и отладки программ содержащих использование функций на С++.

Краткая теория.

Функция -- это именованная последовательность описаний и

операторов, выполняющая какое-либо законченное действие.

Функция может принимать параметры и возвращать значение.

Любая программа на С++ состоит из функций, одна из которых

должна иметь имя main (с нее начинается выполнение

программы). Функция начинает вымолняться в момент вызова.

Любая функция должна быть объявлена и определена. Как и для других величин, объявлений может быть несколько, а определение только одно.

Объявление функции должно находиться в тексте раньше ее вызова для того, чтобы компилятор мог осуществить проверку правильности вызова.

Объявление функции (прототип, заголовок, сигнатура) задает ее имя, тип возвращаемого значения и список передаваемых параметров.

Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках:

[ класс ] тип имя ([ список_параметров ])[ throw( исключения )]

{ тело функции }

Рассмотрим составные части определения.

o С помощью необязательного модификатора класс можно явно задать область видимости функции, используя ключевые слова extern и static:

· extern -- глобальная видимость во вcex модулях программы (по умолчанию);

· static -- видимость только в пределах модуля, в котором определена функция.

o Тип возвращаемого функцией значения может быть любым, кроме массива и функции (но может быть указателем на массив или функцию). Если функция не должна возвращать значение, указывается тип void.

o Список параметров определяет величины, которые требуется передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра, передаваемого в функцию, указывается его тип и имя (в объявлении имена можно опускать).

В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать. На имена параметров ограничений по соответствию не накладывается, поскольку функцию можно вызывать с различными аргументами, а в прототипах имена компилятором игнорируются (они служат только для улучшения читаемости программы).

Функцию можно определить как встроенную с помощью модификатора inline, который рекомендует компилятору вместо обращения к функции помещать ее непосредственно в каждую точку вызова.

Модификатор inline ставится перед типом функции. Он применяется для коротких функций, чтобы снизить накладные расходы на вызов (сохранение и восстановление регистров, передача управления). Директива inline носит рекомендательный характер и выполняется компилятором по мере возможности. Использование inline-функций может увеличить объем исполняемой программы. Определение функции должно предшествовать её вызовам, иначе вместо inline-расширения компилятор сгенерирует обычный вызов.

Тип возвращаемого значения и типы параметров совместно определяют тип функции.

Для вызова функции в простейшем случае нужно указать ее имя, за которым в круглых скобках через запятую перечисляются имена передаваемых аргументов. Вызов функции может находиться в любом месте программы, где по синтаксису допустимо выражение того типа, который формирует функция. Если тип возвращаемого функцией значения не void, она может входить в состав выражений или,в частном случае, располагаться в правой части оператора присваивания.

Решение одного варианта

Пример.

Организовать формирование динамического массива или матрицы А и определить сумму элементов матрицы, а также напечатать матрицу в виде матрицы в общем виде.

Определение суммы и печать матрицы организовать в виде функции.

//Использование функций при программировании на С++

//Выполнил студент гр.ГИ-09-01 Якубов А.Х.

//Определение суммы элементов матрицы и печать матрицы в виде матрицы

#include<iostream.h>

#include<iomanip.h>

int sum(int **a,const int n,const int m);

int matr(int **a,const int n,const int m); // obyavlenie funcsii

int main() {

int n,m;

cout<<"\nVvedite kol.strok-n i kol.stolb-m\n";

cin>>n>>m;

cout<<"n="<<n<<" "<<"m="<<m;

int **a,i,j;

// Формирование матрицы А

cout<<"\nVvedite matrisu A\n";

a=new int *[n];

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

a[i]= new int [m];

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

for(j=0; j<m; j++)

cin>>a[i][j];

cout<<"sum="<<sum(a,n,m)<<"\n";

cout<<matr(a,n,m);

return 0;

}

int sum(int **a,const int n,const int m){ // opredelenie funcsii - sum

int i,j,s=0;

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

for(j=0; j<m; j++)

s+=a[i][j];

return s;

}

int matr(int **a,const int n,const int m){ // opredelenie funcsii -

//печать матрицы

int i,j;

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

for(j=0; j<m; j++)

cout<<setw(4)<<a[i][j]<<" ";

cout<<endl;}

return (**a);

}

Литература

1. С.В. Симонович Информатика. Базовый курс. 2-ое издание Учебник для ВУЗов.СПб.: Питер, 2007. -640 с.:ил.

2 .Т А. Павловская Программирование нга языке высокого уровня С/С++. - Учебник для ВУЗов. СПб.: Питер, 2006. - 461 с .:ил.

3. Т.А.Павловская, Ю.А.Щупак С/С++. Структурное программирование. Практикум. СПб.: Питер, 2007. - 239 с .:ил.

4. Т.А.Павловская, Ю.А.Щупак С++. Объектно - ориентированное программирование. Практикум. СПб.: Питер, 2006. - 265 с .:ил.

5.Б. Страуструп. Язык программирования С++. Специальное издание.- М.:ООО «Бином - Пресс», 2006.- 1104 с.

Размещено на Allbest.ru

...

Подобные документы

  • Понятие информации и ее представление. Хранение, кодирование и преобразование данных. Определение информационной емкости различных носителей информации. Представление о языках программирования. Внутреннее устройство ЭВМ. Операции с файлами и дисками.

    методичка [2,8 M], добавлен 15.02.2010

  • Представление числовой информации с помощью систем счисления. Кодирование символьной, текстовой, числовой и графической информации. Устройство жесткого диска; дисковод компакт-дисков CD-ROM. Использование главного меню Windows; языки программирования.

    контрольная работа [62,9 K], добавлен 16.03.2015

  • Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.

    курсовая работа [292,0 K], добавлен 18.03.2013

  • Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотечных функций ввода, вывода в С++. Описание переменной вещественного типа в языке программирования С++.

    лабораторная работа [137,9 K], добавлен 13.06.2014

  • Теоретическое изучение и практическое применение приёмов работы с файлами в операционной системе Windows 95. Файлы и папки: основные понятия и правила формирования имен файлов в Windows. Характеристика и анализ особенностей операций с файлами и папками.

    контрольная работа [139,9 K], добавлен 09.03.2011

  • Изложение основ информатики, вычислительной техники и технологии программирования на языке Паскаль. Эволюция средств вычислений. Классификация программного обеспечения ЭВМ. Кодирование информации в ЭВМ, системы счисления, принципы программирования.

    учебное пособие [1,4 M], добавлен 25.12.2009

  • Особенности настройки панели быстрого запуска в Windows. Принцип работы оптических накопителей информации. Изменение параметров настроек компьютера. Запись арифметических выражений на языке программирования Qbasic. Функции командного процессора "FAR".

    контрольная работа [7,0 M], добавлен 06.08.2009

  • Изучение сущности и основных задач файловой системы. Принципы работы с папками и файлами. Комплекс системных программных средств, реализующих управление файлами: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами.

    курсовая работа [309,6 K], добавлен 11.11.2013

  • Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.

    курсовая работа [1,2 M], добавлен 07.07.2012

  • Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.

    курсовая работа [75,0 K], добавлен 21.03.2013

  • Изучение инструментальной графической среды программирования промышленных контроллеров и языка программирования FBD. Разработка приложения, реализующего вычисление арифметических и логических выражений. Проверка работы приложения программой "Maple".

    контрольная работа [2,2 M], добавлен 26.05.2015

  • Базовый синтаксис языка программирования С#. Объявление переменных и присваивание им значений. Управление порядком выполнения программы. Выполнение преобразований с помощью команд преобразования. Определение классов, конструктора, работа с файлами.

    курс лекций [692,5 K], добавлен 23.11.2009

  • Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.

    методичка [126,3 K], добавлен 07.12.2011

  • Изучение теории вероятностей и математической статистики, биноминального закона распределения дискретных величин, особенностей числовых функций. Исследование системного и прикладного обеспечения персонального компьютера, алгоритмизации, программирования.

    контрольная работа [277,8 K], добавлен 11.07.2011

  • Устройство и функции портативных персональных компьютеров. Технические характеристики; компоненты ПК: дисплей, клавиатура, устройство указания; преимущества и недостатки. Файловый менеджер: назначение, типовые операции с файлами, папками и дисками.

    контрольная работа [68,4 K], добавлен 14.09.2014

  • Виды записи выражений. Особенности обратной польской записи. Вычисления на стеке. Преобразование из инфиксной нотации. Операторы входного языка. Описание выходной информации. Алгоритмические аспекты программы-распознавателя арифметических выражений.

    курсовая работа [2,1 M], добавлен 26.11.2011

  • Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Характеристика приложения "Мой компьютер": управление файлами, папками, дисками средствами. Прикладное программное обеспечение, его классификация по областям применения и условиям распространения, типы программ и их главные функциональные особенности.

    контрольная работа [660,0 K], добавлен 02.04.2014

  • Значение и применение персонального компьютера и программного обеспечения в профессиональной деятельности. Перечень и содержание работы в системе программирования Pascal и Delphi. Условные операторы, массивы и строки. Общая схема работы с файлами.

    отчет по практике [642,2 K], добавлен 04.06.2013

  • Основные сведения о языках программирования и их состав. Программа для компьютера. Использование компилятора и операторы. Языки программирования высокого уровня. Концепции объектно-ориентированного программирования. Языки искусственного интеллекта.

    презентация [6,3 M], добавлен 14.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.