рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Алгоритм. Проектирование сверху вниз. Принцип черного ящика. Структурное программирование

Алгоритм. Проектирование сверху вниз. Принцип черного ящика. Структурное программирование - раздел Программирование,   1. Алгоритм Алгоритм – Это Конечная Посл...

 

1. Алгоритм

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

Алгоритм разбивается на шаги. Для каждого шага есть конкретный исполнитель.

Исполнитель алгоритма может быть человеком или автоматом.

Вид алгоритма зависит от исходных данных.

Результат работы алгоритма с одними и теми же исходными данными не зависит от исполнителя.

 

2. Алгоритм , характеристики и свойства

Алгоритм имеет две характеристики.

Конечность, или результативность. Алгоритм приводит к получению результата за конечное число шагов..

Однозначность, или определенность. При одинаковых входных данных алгоритм выдает одинаковый результат.

Алгоритм также обладает следующими свойствами.

Массовость, или универсальность. Алгоритм выдает результат при любых однотипных входных данных.

Модульность, или дискретность. Алгоритм можно представить в виде последовательности более элементарных алгоритмов.

 

3. Проектирование сверху вниз

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

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

Главные модули все равно приходится проектировать программистам. Таким образом, алгоритм является деревом модулей:

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

При проектировании сколько-нибудь больших алгоритмов невозможно держать в памяти одновременно детали всех модулей алгоритма. Если модуль составлен правильно, то с ним можно обращаться как с черным ящиком.

 

 

4. Принцип черного ящика

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

1) какова функция модуля, т. е. что он делает;

2) описание входных и выходных данных модуля.

Правильное проектирование алгоритмов позволяет абстрагироваться от внутренней структуры модулей и рассматривать при сборке полного алгоритма только функции модулей.

 

5. Структурное программирование

Структурное программирование позволяет проектировать алгоритмы только из трех элементарных алгоритмов. Каждый модуль является иерархией этих элементарных алгоритмов. Алгоритм, состоящий только из этих трех элементарных алгоритмов, присутствующих на всех его уровнях, называется структурным.

Основная теорема структурного программирования утверждает, что любой алгоритм можно преобразовать к структурному виду.

Тремя элементарными структурными алгоритмами являются следующие.

1. Следование, или цепочка, или составная инструкция.

2. Выбор, или ветвление, или условная инструкция.

3. Цикл, или возврат, или циклическая инструкция.

 

6. Компилятор, два способа компиляции

Компилятор — программа-переводчик с языка программирования в машинные коды, а процесс перевода — это компилирование программы. Комплекс программ, включающий компилятор и другие средства написания программ, называется системой программирования.

Возможны два способа компиляции.

Первый способ называется трансляцией и заключается в компилировании сразу всей программы в машинные коды. Затем строится выполняемый файл, содержащий эту программу. И только потом программа выполняется путем запуска выполняемого файла. Благодаря трансляции получается более быстрая по времени работы программа, но выполняемый файл имеет большой объем. Кроме того, выполняемый файл запускается только на компьютере того типа, где программа была транслирована.

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

 

 

7. Средства изображения алгоритмов

Средства изображения алгоритмов

v словесный; v формульно-словесный; v блок-схемный;

Цикл с постусловием

  11. Цикл с предусловием

Безусловный циклический алгоритм (цикл с параметром)

13. Данные в языке С++ Для решения задачи в любой программе выполняется обработка каких-либо данных.… Типы данных в языке C++

Операция присваивания

a=b; где a – имя переменной или элемента массива, b – выражение, переменная,…

Множественное присваивание

a=b=c=3.14159/6;   16. Операции увеличения (инкремента) и уменьшения (декремента)

Ввод с помощью функции scanf

Scanf(s1, s2);

Вывод с помощью функции printf

Printf(s1, s2);

%тип scanf("%f%f",&a,&b); scanf("%f%d«,&c,&d);

Вывод с помощью функции cout

cout<<"X="<<X; … cout<<"x="<<x<<"y="<<y<<endl;

Цикл с предусловием Оператор while

While (условие) оператор;

While условие

{

Оператор 1;

Оператор 2;

Оператор n;

}

 

29. Оператор do-while

Цикл с постусловием Оператор do-while

Do

{

Оператор;

} while (условие);

 

30. Оператор for

Оператор for

For(начальные_присваивания ; условие; приращение)

Оператор;

For(начальные_присваивания ; условие; приращение)

{

Оператор 1;

Оператор 2;

Оператор n;

}

for (i=in; i<=ik; i=i+di)

Оператор;

for (i=in; i<=ik; i+=di)

Оператор;

 

31. Найти сумму элементов динамического массива вещественных чисел.

#include "stdafx.h"

#include <iostream.h>

#include <malloc.h>

Int main()

{int i,n;

float *a,s;

cout<<"n=“;cin>>n;

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

cout << "Vvedite massiv A";

for(i=0;i<n;i++)// cin>>a[i];

cin>>*(a+i);

for(s=0,i=0;i<n;i++)//s+=a[i];

s+=*(a+i);

cout << "S="<<s;

Free(a);

  32. Поиск максимального элемента и его номера for (max=X[0],nmax=0,i=1;i<n;i++)

Int main()

{ float x[20];

Int i,j,n;

cout<<"Massiv xn"; for(i=0; i<n; i++) cin>>x[i]; for(j=1; j<=5; j++)

Int main()

{

float b,max,a[20];

Int i,j,n,k,nom;

cout<<"n=";

cin>>n;

cout<<"Massiv an";

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

cin>>a[i];

K=n;

for(j=0;j<=k-2;j++)

{

max=a[0];nom=0;

for(i=1;i<k;i++)

if (a[i]>max)

{ max=a[i];

nom=i; }

b=a[k-1];

a[k-1]=a[nom];

a[nom]=b;

k--; }

cout<<"Massiv an";

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

cout<<"a("<<i<<")="<<a[i]<<"t";

cout<<endl;

return 0; }

 

35. Сортировка методом пузырька

Int main()

{

float b,max,a[20];

Int i,j,n,k,nom;

cin>>n; cout<<"Massiv an"; for(i=0; i<n; i++)

Int main()

{int i,n;

float *a,s;

cout<<"n=“; cin>>n;

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

cout << "Vvedite massiv A";

for(i=0;i<n;i++) // cin>>a[i];

cin>>*(a+i);

for(s=0,i=0;i<n;i++) //s+=a[i];

s+=*(a+i);

cout << "S="<<s;

Free(a);

return 0; }

 

38. Свойства матриц

Свойства матриц

Ø если номер строки элемента совпадает с номером столбца (i = j), это означает что элемент лежит на главной диагонали матрицы; Ø если номер строки превышает номер столбца (i > j), то элемент… Ø если номер столбца больше номера строки (i < j), то элемент находится выше главной диагонали.

Й способ работы с динамическими матрицами.

A=(тип *) calloc(n*m, sizeof(тип)) или A=(тип *) malloc(n*m*sizeof(тип))

Й способ работы с динамическими матрицами.

Основан на использовании двойного указателя, указателя на указатель. float **a;

Это указатель на float *, или указатель на массив.

Void main()

Создали массив указателей в количестве n штук на float, каждый элемент массива, является адресом, в котором хранится указатель на float. Осталось… for(i=0;i<n;i++) a[i]=new float(m); ai,j – a[i][j]

Gt;0) k--;

cout<<"k="<<k<<endl;

Free(a); return 0;

42. Сформировать вектор P(m), в который записать номера строк максимальных элементов каждого столбца. Задана матрица A(n,m). Сформировать вектор P(m), в который записать номера…

Double fun(double x);

int main()

{double a, b, h, x; char s[20];

cout << "Enter the beginning and end of the segment, step-tabulation: ";

cin >> a >> b >> h;

cout << "File name? "; cin >> s;

Ofstream f;

F.open(s);

for (x=a; x<=b; x+=h)

{f.width(10); f << x;

f.width(15); f << fun(x) <<

endl; }

F.close();

system("PAUSE");

return EXIT_SUCCESS;

}

Double fun(double x)

45. Указатели, динамические массивы В Си++ существуют динамические массивы – массивы переменной длины, они… Указатель – переменная, значением которой является адрес памяти, по которому хранится объект определенного типа. При…

P2++;

I++;

Операция p1++ увеличивает значение адреса на 8, операция p2++ увеличивает значение адреса на 4, а операция i++ на 2. Операции адресной арифметики выполняются следующим образом:

v операция увеличения приводит к тому, что указатель будет сcлаться на следующий объект базового типа (для p1 – это double, для p2 – float, для i – int);

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

v после операции p1=p1+n, указатель будет передвинут на n объектов базового типа; p1+n как бы адресует n-й элемент массива, если p1 – адрес начала

 

47. Динамические массивы. Основные понятия

 

48. Динамические массивы. Порядок основных действий

49. Строки

Строка – последовательность символов. Если в выражении встречается одиночный символ, он должен быть заключен в одинарные кавычки. При использовании в выражениях строка заключается в двойные кавычки. Признаком конца строки является нулевой символ ‘’. В СС++ в отличии от других языков программирования отсутствует тип данных строка, строки в Си можно описать с помощью массива символов (массив элементов типа char), в массиве следует предусмотреть место для хранения признака конца строки ('').

Например, описание строки из 25 символов должно выглядеть так: char s[26];

Здесь элемент s[25] предназначен для хранения символа конца строки.

char s[7]="Привет";

Можно описать и массив строк

char m[3][25]={"Пример ", "использования", " строк"}

Определен массив из 3 строк по 25 байт в каждой.

Для работы можно использовать указатели (char *).Адрес первого символа и будет начальным значением указателя.

 

 

50. Структуры

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

Определение структуры состоит из двух шагов:

• объявление структуры (задание нового типа данных определенного пользователем),

• объявление полей.

 

51. Файлы

Файлом называют способ хранения информации на физическом устройстве. Файл — это понятие, которое применимо ко всему — от файла на диске до терминала.

В C++ отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т.д. Эти устройства сильно отличаются друг от друга. Однако файловая система преобразует их в единое абстрактное логическое устройство, называемое потоком.

 

52. Организация работы с файлами

Текстовый поток— это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).

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

Объявление файла

FILE *идентификатор;

Пример

FILE *f;

 

53. Неформатированные файловый ввод-вывод

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

Примеры.

f = fopen(s, "wb");

k = fopen("h:ex.dat", "rb");

Запись в файл

fwrite(адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);

fwrite(&dat, sizeof(int), 1, f);

Чтение из файла

fread(&dat, sizeof(int), 1, f);   54. Форматированный файловый ввод-вывод

Fstream

Связь файла с потоком вывода

Ofstream имя логического файла;

Связь файла с потоком ввода

Ifstream имя логического файла;

Открытие файла

Имя логического файла.open(имя физического файла);

Закрытие файла

Имя логического файла.close();

#include <cstdlib>

#include <iostream>

#include <fstream>

#include <cmath>

using namespace std;

Double fun(double x);

int main()

{double a, b, h, x; char s[20];

cout << "Enter the beginning and end of the segment, step-tabulation: ";

cin >> a >> b >> h;

cout << "File name? "; cin >> s;

Ofstream f;

F.open(s);

for (x=a; x<=b; x+=h)

{f.width(10); f << x;

f.width(15); f << fun(x) <<

endl; }

F.close();

system("PAUSE");

return EXIT_SUCCESS;

}

Double fun(double x)

{ return x*cos(x); }

В файле abc.txt хранятся матрицы A(N,M) и B(M,K). Пусть структура файла следующая: в первой строке хранятся числа n и m, затем построчно матрица A, за тем строка, в которой хранится m и k. Затем – построчно матрица B. Найти матрицу С=A.B и записать ее в файл rez.txt.

 

56. Операции с двоичными файлами

Операции с двоичными файлами

При работе с двоичными файлами в параметре mode должна быть добавлена буква b: «rb+», «wb+».

Ввод-вывод при работе с двоичными файлами осуществляется с помощью функций:

fread (void *ptr, size, n, FILE *filename)

Функция возвращает количество считанных элементов.

Функция fread считывает из файла filename в массив ptr n элементов размера size.

fwrite (const void *ptr, size, n, FILE *filename)

Функция fwrite записывает в файл filename из массива ptr n элементов размера size.

Функция возвращает количество записанных элементов.

Для контроля достижения конца файла есть функция feof.

int feof(FILE * filename)

функция возвращает ненулевое значение, если достигнут конец файла.

 

57. Решение уравнений вида f(х)=0. Отделение корней

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

В этих (критических) точках или в непосредственной близости от них определяют знак функции f(хi), т. е. находят sign f(хi). Затем строят ряд знаков функции в критических точках, включая в рассмотрение и крайние точки числовой оси -¥ и +¥. Анализируют этот ряд, и по числу смен знаков определяют количество корней (равно числу смен знаков sign f(хi)) и интервалы, где локализованы эти корни. На левой и на правой границах такого интервала функция f(х) должна иметь разные знаки.

Пример. Дано уравнение: 5х–6х–3 = 0. Найти количество корней и интервалы нахождения этих корней.

Решение

5х ln5 – 6 = 0; 5х = 6/ln5; xlg5 = lg6–lg(ln5); х = (lg6–lg(ln5))/lg5 = (0,7782 – 0,2065)/0,6990 = 0,5717/0,6990 = 0,82. Составим таблицу знаков функции f(х), полагая х,равным:

– Конец работы –

Используемые теги: Алгоритм, Проектирование, сверху, вниз, нцип, Черного, ящика, Структурное, Программирование0.073

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

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Алгоритм и требования к алгоритму свойства алгоритма
Object Inspector Options goEditing True... StringGrid FexedCols Rows n... Var I J integer Begin...

В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования структурное программирование
В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования структурное программирование... Структурное программирование это технология создания программ позволяющая... Компиляторы и интерпретаторы Трансляторы бывают...

НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. ИСТОРИЧЕСКИЙ И СОЦИАЛЬНЫЙ КОНТЕКСТ ПРОГРАММИРОВАНИЯ. ИСТОЧНИКИ ОШИБОК В ПРОГРАММНОМ СРЕДСТВЕ
ВВЕДЕНИЕ... Лекция НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ... Программа как формализованное описание процесса обработки данных Программное средство...

Постановка задачи линейного программирования и двойственная задача линейного программирования.
Всвязи с развитием техники, ростом промышленного производства и с появлением ЭВМвсе большую роль начали играть задачи отыскания оптимальных решений… Именно в силу этого процесс моделированиячасто носит итеративный характер. На… Здесь имеется полная аналогия с тем, как весьма важнаи зачастую исчерпывающая информация о поведении произвольной…

Понятие алгоритма, его свойства. Описание алгоритмов с помощью блок схем на языке Turbo Pascal
Каким же образом компьютер решает сложнейшие задачи обработки информации Для решения этих задач программист должен составить подробное описание… В разных ситуациях в роли исполнителя может выступать электронное или… Составление алгоритмов и вопросы их существования являются предметом серьзных математических исследований. Свойства…

Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки
Класс это шаблон который определяет форму объекта Он задает как данные так и код который оперирует этими данными Объекты это экземпляры... Объявление объекта типа Building... Building house new Building...

Лабораторная работа №2 по "Основам теории систем" (Решение задач линейного программирования симплекс-методом. Варианты разрешимости задач линейного программирования)
Будем увеличивать , т.к. ее увеличение вызовет большее увеличение функции цели.Предположим, что , тогда Запишем новый опорный план . Все оценки… Теперь базисными переменными являются , а свободными . Для анализа этого плана… Будем увеличивать . Пусть , тогда откуда получаем Все оценки опорного плана должны бытьнеотрицательны, а значит должны…

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К ДОМАШНЕМУ ЗАДАНИЮ НА ТЕМУ: «Технологическое проектирование участка цеха по изготовлению авиационных деталей размерной обработкой», по дисциплине «Проектирование цехов авиационного производства»
КАФЕДРА ТЕХНОЛОГИИ ПРОИЗВОДСТВА... ЛЕТАТЕЛЬНЫХ АППАРАТОВ... ПОЯСНИТЕЛЬНАЯ ЗАПИСКА...

Методические указания по курсовому проектированию Часть I. Эскизное проектирование и расчет преселектора
Методические указания по курсовому проектированию... Часть I Эскизное проектирование и расчет преселектора...

Принцип суперпозиції. Для системи зарядів напруженість поля визначається за допомогою принципу суперпозиції
Електричний заряд Електричний заряд це невід ємна властивість елементарних частинок як і їх маса Електричні заряди в природі виникають і... Закон Кулона Сила взаємодії між двома точковими зарядами визначається законом... F...

0.028
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам