Файл: 1. Вводная часть. 1 Краткая история развития языков программирования.rtf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 1981

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Оглавление
1. Вводная часть

.1 Краткая история развития языков программирования

.2 Описание и сравнение основных языков и сред программирования

.3 Отсортированный список наиболее используемых языков программирования на текущее время

. Описание основных алгоритмов и синтаксиса языка С++

.1 Операции базового ввода/вывода

.2 Краткое описание правил составления блок-схем

.3 Выполнение арифметических операций в программе

.4 Использование условного оператора

.5 Назначение и применение одномерных/многомерных массивов

. Практические задания

Задание 1. Базовый вывод информации

Задание 2. Составление блок-схем алгоритмов

Задание 3. Анализ программного кода

Задание 4. Вычисление выражений

Задание 5. Условный оператор

Задание 6. Работа с одномерными массивами

Заключение

Список литературных источников

1. Вводная часть



.1 Краткая история развития языков программирования



Программирование - это сложный процесс, который требует специальных знаний и умений.

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

Для более простого общения человека с ЭВМ были созданы языки программирования типа Ассемблер.

Одним из первых языков программирования является Фортран. Он был создан группой разработчиков компании IBM под руководством инженера Джона Бэкуса. Язык представлял собой не просто совокупность разрозненных простых команд, а группы более крупных кодов, которые стали называть операторами. Для перевода этих операторов на машинный язык были изобретены трансляторы, с помощью которых алгоритмы переводятся на язык понятный ЭВМ.

Чтобы решать экономические задачи был создан язык программирования - Кобол. Для обработки текстовой информации был создан алгоритмический язык Снобол, для алгоритмической обработки символов - Липс (и сейчас язык Липс широко используется в исследованиях по созданию искусственного интеллекта).


В 1968 году был создан язык для обучения студентов программированию. Этот язык получил название - язык программирования Паскаль, который сейчас является одним из популярных языков.

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

Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования Си в начале 70-х. Он является одним из универсальных языков программирования.

1.2 Описание и сравнение основных языков и сред программирования



Современные языки программирования:) С - язык относительно низкого уровня, лаконичный, отвечает большинству задачи системного программирования.) С++ - это язык программирования высокого уровня. Разработан Бьярном Страустрапом на базе языка С. Язык С++ реализует принципы объектно-ориентированного программирования. С помощью данного языка реализуются сложные программы.) С# - объектно-ориентированный язык программирования. По своему характеру похож на С++ и Java. Предназначен для разработчиков программ, которые используют языки С и С++ для того, чтобы они могли эффективно разрабатывать Интернет-приложения. Язык С# интегрирован с языком XML.) Паскаль - процедурно-ориентированный язык программирования высокого уровня. Был создан как язык для обучения студентов, но постепенно был доработан и стал универсальным языком, который широко используется для написания программ, как маленьких, так и больших.

e) Delphi - «наследник» языка Паскаль. Основные операторы в этих языках одинаковые. Но в Delphi имеются средства для работы с графическими объектами: создание форм, кнопок, текстовых полей, меню, а также средства для обработки сложных структур данных. Язык Delphi популярен при разработке Windows-приложений. Фортран - первый язык высокого уровня. Использовался и используется в настоящее время для научных вычислений. В нем отсутствуют многие привычные языковые конструкции и атрибуты, нет поддержки современных способов структурирования кода и данных.) Бейсик (Basic) - язык программирования высокого уровня. Первоначально предназначался для обучения программированию.

g) Java - это «молодой» язык программирования, является основным инструментом программирования для Интернет.



.3 Отсортированный список наиболее используемых языков программирования на текущее время



Рейтинг языков программирования по версии RedMonk:



- JavaScript;

- Java;

- PHP;

- C#;

- Python;

- C++;

- Ruby;

- C;

- Objective-C;

- CSS (новый);

- Perl;

- Shell;

- Scala;

- Haskell;

- R;

- Matlab;

- Clojure;

- CoffeeScript;

- VisualBasic;

- Groovy.

2. Описание основных алгоритмов и синтаксиса языка С++



.1 Операции базового ввода/вывода



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

Функции ввода и вывода:

- getchar () - читает символ с клавиатуры;

- getche () - читает символ, но не отображается на экране;

- getch () - читает символ, но не отображается на экране;

- putchar () - отображает символ на экране;

- gets () - читает строку с клавиатуры;

- puts () - отображает строку на экране;

- printf () - является функцией стандартного вывода. С помощью неё на экран можно вывести строку символов, число, значение переменной и т.д.

- scanf - функция форматированного ввода. С помощью данной функции можно вводить данные с клавиатуры. Вводимым данными могут быть: целые числа, числа с плавающей точкой, указатели, строки. Так же функция возвращает число переменных, которым было присвоено значение.

2.2 Краткое описание правил составления блок-схем



Блок-схема - это последовательность блоков, предписывающих выполнение определенных операций, и связей между ними.

Размеры блоков, конфигурация и порядок графического оформления блок-схем регламентированы ГОСТ 19002-80 и ГОСТ 19003-80 «Схемы алгоритмов и программ»

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

Расстояние между параллельными линиями должно быть не менее 3мм, между остальными элементами схемы не менее 5 мм. Горизонтальный и вертикальный размеры блока должны быть кратны 5 мм.

Блоки: «Начало», «Конец», «Соединитель» имеют высоту a/2.

Наиболее используемые блоки представлены в таблице 1.
Таблица 1 - Наиболее используемые символы блок-схем

Название

Обозначение

Пояснение

Процесс

Последовательность действий, вычислений




Решение

Проверка условий




Данные

Ввод и вывод данных в общем виде




Модификация

Начало цикла




Предопределенный процесс

Вычисления по подпрограмме




Пуск-остановка

Начало и конец алгоритма




Документ

Вывод результатов





2.3 Выполнение арифметических операций в программе



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

Cтандартные математические функций представлены в таблице 2.
Таблица 2 - Стандартные виды математических функций

Математическая запись

Запись на С++

- квадратный корень

sqrt(X)

|X| - абсолютное значение

abs(X)

ln x - натуральный логарифм

log(x)

lg x - десятичный логарифм

log10(x)

mod x - остаток от деления

mod(x)

- экспонента

exp(x)

cos x

cos (x)

sin x

sin (x)

tg x

tan (x)

arctg x

atan (x)


Виды арифметических операций:

- ^ - возведение в степень (y=x^3);

- * - умножение (y=x*z);

- / - деление (y=x/z);

- - и + - присвоение знака числу (унарные операции);

- + - сложение (y=x+z);

- - - вычитание (y=x-z).

При составлении арифметических выражений необходимо учитывать приоритет выполнения арифметических операций. Наивысший приоритет имеют стандартные математические функции, затем возведение в степень. Далее идет присвоение знака числу. Умножение и деление осуществляется после присвоения знака числу. Более низкий приоритет, за умножением и делением, имеют целочисленное деление и взятие остатка от числа. Самый низкий приоритет у вычитания и сложения.

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

Для простоты программирования в языке С++ реализованы операторы инкремента и декремента (увеличения и уменьшения значения переменной на 1). Данные операторы могут быть представлены в виде:

- j++ - операция инкремента (постфиксная операция увеличения);

- ++j - операция инкремента (префиксная операция увеличения).

- j-- - операция декремента (постфиксная операция уменьшения);

- --j - операция декремента (префиксная операция уменьшения).

2.4 Использование условного оператора



Разветвляющийся процесс в языке С++ реализован условным оператором if.

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

Линейный синтаксис оператора if имеет вид :

if (<условие>) <оператор_1>;

<оператор_2>;

<оператор_3>;

Если <условие>, расположенное после ключевого слова if истинно, то сначала выполняется <оператор_1>, затем последовательно выполняются <оператор_2> и <оператор_3>. Если <условие> ложно, то <оператор_1> пропускается и сразу выполняются <оператор_2> и <оператор_3>. Линейный синтаксис условного оператора имеет и второй вид формата:

if (<условие>) <оператор_1>; else <оператор_2>;

<оператор_3>;

Если <условие>, расположенное после ключевого слова if истинно, то сначала выполняется <оператор_1>, <оператор_2> при этом пропускается, затем выполняется <оператор_3>. Если <условие> ложно, то <оператор_1> пропускается, а выполняются <оператор_2> и <оператор_3>.

Блочный синтаксис условного оператора имеет три вида форматов представления.

Первый вид имеет формат представления:

if (<условие>) <блок операторов>;

Если условие истинно, то выполняются операторы, которые расположены в фигурных скобках, затем выполняются операторы, расположенные после фигурных скобок. Если условие ложно, операторы, расположенные в фигурных скобках пропускаются и начинают выполняться операторы, которые расположены после фигурных скобок.

Второй вид формата блочного представления условного оператора имеет вид:
if (<условие>)

<блок операторов 1>;

еlse

<блок операторов 2>;
Если условие истинно, то выполняется <блок операторов 1>, расположенный между первыми фигурными скобками. Далее, будут выполняться операторы, расположенные после второй закрывающейся фигурной скобки. Если условие ложно, то <блок операторов 1> пропускается, выполняется <блок операторов 2>, находящийся между вторыми фигурными скобками. Далее также выполняются операторы, расположенные после второй закрывающейся скобки.

Третий вид блочного представления условного оператора имеет вид:
if (<условие 1>)

{

<блок операторов 1>;

}

else if (<условие 2>)

{

<блок операторов 2>;

}

else if (<условие 3>)

{

<блок операторов 3>;

}

else if (<условие 4>)

{

<блок операторов 4>;

}

else (<условие 5>)

{

<блок операторов 5>;

};
Если <условие 1> истинно, то выполняется <блок операторов 1>, который находится между первой парой фигурных скобок, затем будут выполняться операторы, расположенные после последней закрывающейся фигурной скобки. Если <условие 1> будет ложно, то осуществляется проверка <условие 2>. Если данное условие истинно, то выполняется <блок операторов 2>, а затем будут выполняться операторы, расположенные после последней закрывающейся фигурной скобки. Таким образом, последовательно осуществляется проверка всех условий и, в зависимости от их истинности выполняется тот или иной блок операторов. Если ни одно из условий не выполняется, то выполняется <блок операторов 5>, который расположен между последними фигурными скобками, далее будут выполняться операторы расположенные после последней закрывающейся скобки.

2.5 Назначение и применение одномерных/многомерных массивов



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

Массивы бывают одномерные и многомерные, числовые и символьные, статические и динамические.

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

Массивы характеризуются параметрами: имя, тип элементов, размер.

В общей форме одномерный массив объявляется так:

Тип_элементов Имя_массива [размер_массива]

где Тип_элементов - это любой стандартный тип данных.

Имя_массива - уникальное имя, идентификатор.

размер_массива - количество элементов.

Пример: int B[6] - одномерный массив из 6 целочисленных элементов с именем В.

Нумерация элементов в массиве начинается с нуля, то есть первый элемент массива имеет индекс - 0, второй - 1, третий - 2 и так далее. Массивы бывают не только одномерными, но и двух (и более) -мерными. Так, например, прямоугольная матрица - структура, которую можно представить с помощью двумерного массива.

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

Тип Имя[N1][N2]…[NM],

где Тип - это любой стандартный тип данных.

Имя - уникальное имя.

М - число индексов массива.

Пример: int A[4][3].

Первый индекс является номером строки, а второй индекс является номером столбца.

Доступ к элементам многомерного массива производится так же, как и в одномерных массивах.

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

3. Практические задания



Задание 1. Базовый вывод информации



Программный код:
//Задание 1

//Программа выводит имя в рамке и автопортрет из символов ASCII

//Автор:Докунина Ольга, группа 639зсб

#include "stdafx.h"

#include //подключаем нужные библиотеки

#include

#include "locale"namespace std;_tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL, "Russian"); //подключаем русский язык

// Вывод на экран

printf("Имя символами \n");

printf("\n"

" * * * * * * * * * * * * * * * * * * * *\n"\

" * __ ... ... ... ___ *\n"

" * / \\ |*| \\*\\ /*/ /***\\ *\n"\

" * | ** | |*| \\*\\/*/ /**_**\\ *\n"\

" * |* *| |*| \\**/ /**/ \\**\\ *\n"\

" * | ** | |*|___ |**| /**/___\\**\\ *\n"\

" * \\__/ |_*_*_| |..| /_*_/ \\_*_\\ *\n"\

" * *\n"

" * * * * * * * * * * * * * * * * * * * *\n"

);

printf("\n");

printf(" Автопортрет\n");

printf (" . ........... ..\n"

" .=&P&&..P&&..P&&..P&&P$P&&..P&&P..= /\\/\\/\\/\\\n"

" .OO... * * * * * * ...OO\\\/\\/\\/\\/\\ \n"

" .OO... * * * * * * ...OO.\\/\\/\\/\\/\\ \n"

" OP.. * * * * * * ...OP\\/\\/\\/\\/\\\n"

" $P.. ..$P.\\/\\/\\/\\/\\\n"

".MP. /****\\ /****\\ .MP.. \\/\\/\\/\\/\\\n"

"+PP. _ _ ..PP. \\/\\/\\/\\/\\\n"

"=P0. /_\\ /_\\ ..P0. \\/\\/\\/\\/\\\n"

".O0.. ..O0. \\/\\/\\/\\/\\\n"

"=M0.. ___ ..M0. \\/\\/\\/\\/\\\n"

"-IO.. /. .\\ ..IO$ \\/\\/\\/\\/\\\n"

".K... \\___/ ...K. \\/\\/\\/\\/\\\n"

".M... ...M. \\/\\/\\/\\/\\\n"

".LJ.. ..LJ. \\/\\/\\/\\/\\\n"

".NP.. | | ..NP. \\/\\/\\/\\/\\\n"

".OO.. | | ..OO. \\/\\/\\/\\/\n"

".BB.. \\____*****_____/ ..OF. \\/\\/\\/\n"

" .P.. ******* ..PP. \\/\\/\n"

" .O.. ***** ..OO. \\/\n"

" OP.. ..OP. \\/\n"

" MP.. ..MP\n"

" ..YU.. ..YU..\n"

" ..OR.. ..OR..\n"

" ..$O..""..OO..OO..OO.."(); // Ожидание нажатия клавиши перед завершением работы0;

Результат выполнения программы:

Задание 2. Составление блок-схем алгоритмов












язык программирование массив арифметический









Задание 3. Анализ программного кода



Программный код: #define CRASH_SOMETIMES 10/(rand()%10)

Директива #define используется обычно для задания ключевых слов, констант, операторов и различных выражений, которые используются в программе. В данном случае директива используется для генерации целых чисел от 0 до 10.

В данном примере ошибка будет возникать при значении 0 в знаменателе ( 10/0 - по правилам математики известно, что на 0 делить нельзя).

Чтобы избавиться от этой ошибки код необходимо изменить так: #define CRASH_SOMETIMES 10/((rand()%10)+1)

Если прибавлять единицу к знаменателю, то значение 0 не появится и ошибка не будет возникать, а целые числа будут генерироваться от 1 до 10.

Задание 4. Вычисление выражений



Программный код:

//Задание 4 - Программа вычисляет значения выражений

// Автор: Докунина Ольга, группа 639зсб
#include "stdafx.h"

#include

#include

#include "locale"namespace std;_tmain()

{

setlocale(LC_ALL, "Russian");

printf("Инициализация программы...\n");

printf("\n");

double a=12.3;

double alpha=0.43;

double y1,y2,z1,z2;

printf("Расчет y1.\n");

y1=(((a+2)/sqrt(2*a))-(a/(sqrt(2*a)+2))+(2/(a-sqrt(2*a))))*(sqrt(a)-sqrt(2.0))/(a+2);

printf("Ответ: y1= %f\n",y1);

printf("\n");

printf("Расчет y2.\n");

y2=1/(sqrt(a)+sqrt(2.0));

printf("Ответ: y2= %f\n",y2);

printf("\n");

printf("Расчет z1.\n");

z1=(sin(2*alpha)+sin(5*alpha)-sin(3*alpha))/(cos(alpha)+1 -2*pow(sin(2*alpha),2));

printf("Ответ: z1= %f\n",z1);

printf("\n");

printf("Расчет z2.\n");

z2=2*sin(alpha);

printf("Ответ: z2= %f\n",z2);

getch();

return 0;

}
Результат выполнения программы:




Задание 5. Условный оператор



Исходная задача:


Составленная схема неравенств
Фрагмент А:



Фрагмент В:



Составленный программный код:

if(((x+2)^2+(y-2)^2<=4 && x<=0 && y>=0)|| //Фрагмент А

(x<=4 && y>=-2 && x>=0 && y<=0))// Фрагмент В

Точка с координатами (x,y) попадает в заштрихованную область

Точка не попадает в заштрифованную область

Задание 6. Работа с одномерными массивами



Программный код:

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

// Автор: Докунина Ольга, группа 639зсб
#include "stdafx.h"

#include

#include

#include

#include

#include "locale"namespace std;_tmain()

{ (LC_ALL, "Russian");int n=27;A=1;// A - произведение ненулевых элементов;B=0; //В - последний отрицательный элемент с нечетным номером;C=0;// С- среднее арифметическое положительных элементов;

int i;sum=0;count=0;

double result;

//Предопределенный одномерный массивmas[n]={ 3,-1,4,-1,5,-9,2,-6,5,

,5,-8,9,-7,9,-3,0,-3,

8,-4,0,-2,6,-4,3,-3,8};(i=0; i
{ //цикл по всему массиву

//Произведение ненулевых элементов( mas[i]!=0)

{=A*mas[i];//Находим произведение ненулевых элементов

}

// Последний отрицательный элемент с нечетным номером

if (mas[i]<0 && i%2!=0)

{ =mas[i];

}

//Среднее арифметическое положительных элементов(mas[i]>0)

{+=mas[i];//Находим сумму всех положительных элементов++;//Находим общее количество положительных элементов=sum/count;//Находим среднее арифметическое

}

}

//Выводим результаты вычислений("Результаты промежуточных вычислений:\n");("A= %f;\n",A);("B= %f;\n",B);("C= %f;\n",C);

// Вычисляем итоговый результат= A*B/(C+2);

// Выводим итоговый результат("\nИтоговый результат:\n");("result= %f;\n",result);("\nНажмите любую клавишу для выхода...");();0;

} //Конец программы
Результат выполнения программы:


Заключение



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

Во время выполнения курсовой работы был подробно изучен язык программирования С++. Были описаны операции базового ввода и вывода в языке С++, правила составления блок-схем. Рассмотрено описание и выполнение арифметических операций в программах, использование условного оператора, назначение и применение одномерных и многомерных массивов.

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

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

Список литературных источников



1Архангельский, А. Я. Программирование в C++ Builder 6 / А. Я. Архангельский. - М. : Бином, 2002. - с. 368.

Павловская, Т. А. С/С++. Программирование на языке высокого уровня : учебник для вузов / Т. А. Павловская. - СПб. : Питер, 2010. - с. 467.

Коплиен, Дж. Программирование на С++ / Дж. Коплиен. - СПб.:ПИТЕР, 2005. - 624 с.

Краткая история и классификация языков программирования [Электронный ресурс] : информационный портал, посвященный информатике. - Режим доступа: http://kobriniq.ru/spravochnik-po-informatike/kratkaya-istoriya-i-klassifikatsiya-yazikov-programmirovaniya, свободный. - Загл. с экрана.

Блок-схема и ее элементы [Электронный ресурс] : информационный портал, посвященный построения блок-схем. - Режим доступа: http://fvn2009.narod.ru/Manuscripts/Algorithmization/algorithm8.htm, свободный.- Загл. c экрана.

Массивы С/C++ [Электронный ресурс]: база знаний Allbest. - Режим доступа: http://knowledge.allbest.ru/programming/2c0a65625b2ac68b5d43a89421316d37_0.html, свободный. - Загл. с экрана.

Современные системы программирования [Электронный ресурс]: электронная библиотека. - Режим доступа: http://www.bibliofond.ru/view.aspx?id=552898, свободный. -Загл. с экрана.0>