Простейшие примеры программирования на языке С++
Характеристика этапов компиляции. Виды выделяемой памяти при работе программы. Базовые типы данных и операторы языка С++. Коды программ по работе с массивами и выполнению простейших операций. Особенности создания и использования собственных функций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 16.04.2017 |
Размер файла | 434,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
Новосибирский государственный технический университет
Факультет мехатроники и автоматизации
Кафедра электропривода и автоматизации промышленных установок
Расчетно-графическая работа
по дисциплине: "Диагностика и надежность электромеханических систем"
Выполнили: студенты гр. ЭМ-33
Анкудинова Л.В.,
Казмухамбетова К.Б.,
Пестова О.Д.
г. Новосибирск - 2017
Модуль 1. Описать этапы компиляции на примере
Для понимания о том, как работает компиляции, следует знать о её четырех этапах. Задание заключается в постепенном преобразовании текстового файла, написанного на понятном для машины языка (язык С).
1. Препроцессинг: Первый этап заключается в замене директив (препроцессоры) чистыми инструкциями С. Обычно это означает вставку заголовка (#include) или определение макрокоманд (#define). В конце этого этапа генерируется чистый код С.
Препроцессирование - это процесс, на вход которого подаётся текст (текстовый файл) и на выходе формируется текст. Во время работы препроцессор занимается тем, что видоизменяет исходный текстовый файл. И только после этого изменённый текстовый файл в дальнейшем попадает в компиляцию. Команды препроцессора (их называют директивами) начинаются на символ #, который должен первым не пробельным символом в строке. Первыми директивами препроцессора, с которыми сталкиваются начинающие, являются директивы #include и #define.
2. Ассемблирование: Этот этап заключается в преобразовании кода С в код языка ассемблера (символическое представление машинного языка). Сгенерированный код зависит от архитектуры, для которой он предназначен.
Язык ассемблера - тип языка программирования низкого уровня. Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и аргументов. Также, язык ассемблера обеспечивает связывание частей программы и данных через метки, выполняемое при ассемблировании (для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес).
Обычно программы или участки кода пишутся на языке ассемблера в случаях, когда разработчику критически важно оптимизировать такие параметры, как быстродействие (например, при создании драйверов) и размер кода (загрузочные сектора, программное обеспечение для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, навесные защиты).
Пример программ: Программа суммирует значения всех элементов массива. Интересна работой с массивами и реализацией цикла типа "for".
3. Компиляция: Этот этап заключается в генерации объектного кода (или бинарного кода) из кода на языке ассемблера. Результатом его работы является объектный файл, полученный на основе всего того текста, что был предоставлен в компиляционном листе. Поэтому можно говорить, что каждый объектный файл проекта соответствует одному компиляционному листу проекта.
Объектный файл - это бинарный файл, фактически состоящий из набора функций.
4. Линковка: Линковка - то же, что и компоновщик. Компоновщик (от англ. link editor, linker) - программа, которая производит компоновку - принимает на вход один или несколько обратных модулей и собирает по ним исполнимый модуль. Определенные или экспортируемые имена - функции и переменные, определенные в данном модуле и предоставляемые для использования другим модулям.
Неопределенные или импортируемые имена - функции и переменные, на которые ссылается модуль, но не определяет их внутри себя. Работа компоновщика заключается в том, чтобы разрешить ссылке на неопределенные имена.
Типы выделяемой памяти:
· Статическая память - область памяти выделяемая при запуске программы до вызова функции main() из свободной статической памяти, для размещения глобальных и статических объектов.
· Автоматическая память - область памяти, выделяемая при вызове функции в рамках этой функции;
· Динамическая память - область памяти, выделяемая во время работы программы.
Задача 1.1 Станция
Задача 1.2 Беспрерывный ввод чисел с клавиатуры
Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое.
Модуль 2
Большинство программ на языке C++ используют типы данных, представленные в табл. 1.
Таблица 1. Базовые типы данных языка С++
Таблица 2. Базовые операторы языка С++
Операции |
Краткое описание |
|
= |
Присваивание |
|
+/? |
Сложение / Вычитание |
|
++ |
Увеличение на 1 |
|
?? |
Уменьшение на 1 |
|
+= |
Сложение с присваиванием |
|
?= |
Вычитание с присваиванием |
|
?= |
Умножение с присваиванием |
|
/= |
Деление с присваиванием |
|
n++ |
Постфиксный инкремент |
|
++n |
Префиксный инкремент |
|
n?? |
Постфиксный декремент |
|
??n |
Префиксный декремент |
|
&& |
Логическая операция "И" |
|
|| |
Логическая операция "ИЛИ" |
|
! |
Логическое отрицание |
|
== |
Проверка на равенство |
|
!= |
Проверка на неравенство |
|
enum |
Перечисление |
Тип char служит для определения символьных переменных и строк. Символьная переменная - это один символ, заключенный в одинарные кавычки, например: 'а', '+', '&'. Строка символов в языке C++ - это массив символов, заканчивающийся нулевым байтом. Конец символьной строки (нулевой байт) обозначается символом NULL ('\0'). Строки символов заключаются в кавычки, например: "Строка символов".
Чтобы использовать переменную в программе, ее нужно объявить - указать тип переменной и ее имя. Оператор объявления переменных языка C++ в общем виде выглядит так: тип переменной, имя 1,..., имяN;
Например: int i; float x,y,z; char c,s [64];
При таком объявлении с - это символьная переменная (хранит один символ), a s [64] - это строка символов (массив символов).
Задача 2.1
Вывести на экран строку размером в 50 символов, подсчитать количество элементов без пробелов, отдельно подсчитать пробелы. Нужно использовать, например, Char [50], символы вводить с клавиатуры, вывод это printf соотвественно, а чтобы считать из потока ввода нужно использовать fgets(someString, <sizeOfString>, stdin)
#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE,"Russian");
int probels = 0;
char Char [50];
srand(time(NULL));
for (int i=0; i<50; i++)
{
int symbol_id;
if(rand() %2)
symbol_id='a'+(rand() %26);
else
symbol_id=' ';
Char [i]= symbol_id;
printf(" %c", Char [i]);
if (Char [i]== ' ') probels++;
}
printf("\n");
printf("probelov: %d",probels);
return 0;
}
Результат:
Задача 2.2
Заполните двумерный массив размером 40 элементов рандомными значениями, нужно определить количество четных чисел, нечетных и подсчитать сумму всех значений в массиве. Необходимо использовать функцию rand() которая определена в заголовочном файле <stdlib.h> если выбираете C++ то библиотека <cstdlib>.
#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define N 4
int main()
{
setlocale(LC_CTYPE,"Russian");
srand(time(NULL));
int array [N] [N];
for (int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
array [i] [j]= rand() %100;
printf("A [ %d] [ %d]= %d \t", i,j,array [i] [j]);
}
printf("\n");
}
printf("\n");
int cnt_chet=0, cnt_nechet=0,summa=0;
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
if((array [i] [j] %2)== 0)
cnt_chet++;
else
cnt_nechet++;
summa+=array [i] [j];
}
} printf("chetnyh chisel: %d; Nechetnyh chisel: %d; summa vseh chisel: %d", cnt_chet, cnt_nechet, summa);
return 0;
}
Результат: компиляция программа массив функция
Модуль 3
Собственные функции - это функции, написанные пользователем для решения конкретной подзадачи.
Каждая функция в языке Си должна быть определена, то есть должны быть указаны:
· тип возвращаемого значения;
· имя функции;
· информация о формальных аргументах;
· тело функции.
В языке Си нельзя определять одну функцию внутри другой.
В языке Си нет требования, чтобы семантика функции обязательно предшествовало её вызову. Функции могут определяться как до вызывающей функции, так и после нее. Однако, если семантика вызываемой функции описывается ниже ее вызова, необходимо до вызова функции определить прототип этой функции, содержащий:
· тип возвращаемого значения;
· имя функции;
· типы формальных аргументов в порядке их следования.
Прототипом функции в языке Си или C++ называется объявление функции, не содержащее тела функции, он необходим для того, чтобы компилятор мог осуществить проверку соответствия типов передаваемых фактических аргументов типам формальных аргументов. Имена формальных аргументов в прототипе функции могут отсутствовать.
Общий вид вызова функции:
Переменная = ИмяФункции(СписокФактическихАргументов);
Возврат в вызывающую функцию осуществляется оператором return в одной из форм:
· return(ВозвращаемоеЗначение);
· return ВозвращаемоеЗначение;
Разбиение программ на функции дает следующие преимущества:
· Функцию можно вызвать из различных мест программы, что позволяет избежать повторения программного кода.
· Одну и ту же функцию можно использовать в разных программах.
· Функции повышают уровень модульности программы и облегчают ее проектирование.
· Использование функций облегчает чтение и понимание программы и ускоряет поиск и исправление ошибок.
enum - это тип перечисление, в enum записываются константы и каждой новой константе присваивается порядковый номер.
Структура - это совокупность переменных, объединенных одним именем, предоставляющая общепринятый способ совместного хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру, называются членами структуры. (Члены структуры также часто называются элементами или полями.)
struct Name
{
type atrib;
// остальные элементы структуры
} structVar1, structVar2,...;
Объявление структуры всегда должно начинаться с ключевого слова struct. Необязательно, чтобы структура имела имя, но тогда такая структура обязательно должна иметь структурные переменные, объявленные между закрывающей фигурной скобкой и точкой с запятой, строка 5. Обязательно в объявлении структуры должны присутствовать фигурные скобочки, они обрамляют тело структуры, в котором объявляются её атрибуты (элементы), строка 3. Структурные переменные, при объявлении структуры, указывать необязательно, строка 5.
Так как структура - это тип данных, то, для того, чтобы использовать этот тип данных, необходимо объявить структурную переменную, а вместо типа данных указать имя структуры.
struct_name structVariable;
Задача 3.1
Возьмите одну из решенных задач в модуле 2, и представьте её в виде реализованной вами функции\функций, например, одна функция подсчитывает сумму, вторая считает только пробелы, третья функция рандомизирует значения и куда-либо их записывает.
Задача 3.2
Создайте свой тип, структуру, которая будет включать в себя базовые типы, используя одну из выше перечисленных задач, задайте поля структуре. Как пример, расписание имеет время(дату), день недели, и что нужно сделать. Т.е struct SheduleOfWeek {int time; char [50] whatToDo; enum/int dayOfWeek;}
#include <iostream>
#include <cstring>
#include <locale>
#include <cstdlib>
#include <stdio.h>
using namespace std;
struct SheduleOfWeek {
int time;
char whatToDo [100];
int dayOfWeek;
};
int main() {
setlocale(LC_CTYPE, "Russian");
SheduleOfWeek Day1;
SheduleOfWeek Day2;
// day 1 specification
Day1.time = 16;
strcpy(Day1.whatToDo, "Защитить РГР");
Day1.dayOfWeek = 4;
// day 2 specification
Day2.time = 15;
strcpy(Day2.whatToDo, "Защитить курсовую");
Day2.dayOfWeek = 3;
// Print Day1 info
cout " "День 1 Время: " " Day1.time " endl;
cout " "День 1 Задание: " " Day1.whatToDo " endl;
cout " "День 1 День недели: " " Day1.dayOfWeek " endl;
cout " "\n" " endl;
// Print Day2 info
cout " "День 2 Время: " " Day2.time " endl;
cout " "День 2 Задание: " " Day2.whatToDo " endl;
cout " "День 2 День недели: " " Day2.dayOfWeek " endl;
return 0;
}
==========
#include <iostream>
#include <locale>
using namespace std;
// Define the enum data type Days
enum Days
{
Monday = 0,//Monday Понедельник = 0
Tuesday,//Tuesday Вторник = 1
Wednesday,//Wednesday Среда = 2
Thursday,//Thursday Четверг = 3
Friday,//Friday Пятница = 4
Saturday,//Saturday Суббота = 5
Sunday//Sunday Воскресенье = 6
};
int main(void)
{
setlocale(LC_CTYPE, "Russian");
Days WhatDay = Friday;
switch (WhatDay)
{
case 0:
cout " "1 > Понедельник" " endl;
break;
case 1:
cout " "2 > Вторник" " endl;
break;
case 2:
cout " "3 > Среда" " endl;
break;
case 3:
cout " "4 > Четверг" " endl;
break;
case 4:
cout " "5 > Пьятница" " endl;
break;
case 5:
cout " "6 > Суббота" " endl;
break;
case 6:
cout " "7 > Воскресенье" " endl;
break;
default: cout " "День недели с другой планеты" " endl;
}
return 0;
}
Размещено на Allbest.ru
...Подобные документы
История и основы структурного программирования в среде Turbo Pascal. Работа с различными типами данных. Операторы языка. Работа с символьными и строковыми переменами, одномерным, двумерным массивами. Классификация компьютерных игр. Игры на языке Паскаль.
курсовая работа [28,8 K], добавлен 06.05.2014Совокупность программ, используемых в работе на компьютере. Функциональное назначение программного обеспечения, правовые нормы его использования. Операционная система и сервисные программы. Разработка компьютерных программ на языке программирования.
презентация [5,0 M], добавлен 10.10.2016Особенности работы с процедурами и двумерными массивами, последовательность вызова процедур. Способы описания и использования многомерных массивов, назначение процедур, их описание и обращение к ним. Набор программы, ее отладка и тестирование данных.
лабораторная работа [112,1 K], добавлен 03.10.2010Изучение и анализ функциональных возможностей СУБД. Структура языка реляционных БД SQL (Structured Query Language). Типы данных SQL. Операторы DDL - операторы определения объектов базы данных. Примеры использования операторов манипулирования данными.
курсовая работа [39,6 K], добавлен 21.07.2012История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.
лабораторная работа [62,0 K], добавлен 15.07.2010Основные типы циклов программирования. Методы применения специальных функций break, continue и цикла while. Обработка массивов информации. Условия применения циклических алгоритмов на языке программирования С++. Инициализация одномерного массива.
курсовая работа [1,7 M], добавлен 06.01.2014Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.
курсовая работа [879,8 K], добавлен 11.02.2016Создание программы калькулятор, вычисляющий простейшие математические примеры на сложение, вычитание, умножение, деление и возведение в степень. Определение входных и выходных данных, требований к программе. Рекомендации по использованию программы.
курсовая работа [717,6 K], добавлен 17.01.2013Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.
дипломная работа [276,6 K], добавлен 26.01.2011Последовательность работ при разработке объектно-ориентированных программ. Виды синтаксических анализаторов и способы их применения. Описание алгоритма и анализ результативности работы программы, написанной на языке С, ее константы, переменные и функции.
курсовая работа [441,7 K], добавлен 03.07.2011Характеристика структурированного языка программирования С, его основных структурных компонентов, области памяти, библиотеки. Методы поиска в массивах данных. Описание программы, функции сортировки и меню выбора, последовательного и бинарного поиска.
курсовая работа [1,7 M], добавлен 19.05.2014Решение инженерных задач при работе с визуальными данными. Базовые структуры данных. Базовые операции над многомерными числовыми массивами. Калибровка камер, элементы восстановления пространственной структуры. Анализ движения, слежение за объектами.
курсовая работа [4,5 M], добавлен 21.06.2011Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.
курсовая работа [454,1 K], добавлен 13.06.2014Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.
курсовая работа [20,0 K], добавлен 05.03.2015Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Основные понятия и назначение языка программирования СИ. Скалярные типы данных. Арифметические, логические и битовые операции над переменными целочисленного, вещественного, символьного, перечислимого типов. Примеры программ, выполняющие операции над ними.
презентация [269,9 K], добавлен 26.07.2013Общие положения о курсовой работе. Цели и задачи курсового проекта, его содержание. Рекомендации к созданию программы, некоторые требования к ее работе. Пример программы "Меню". Образцы оформления титульного листа к курсовой работе и к заданию для нее.
методичка [15,2 K], добавлен 29.11.2009Ознакомление со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов языка программирования высокого уровня С++. Ключевые понятия языка, идентификаторы, ключевые слова, функции, операторы, выражения.
контрольная работа [31,2 K], добавлен 12.12.2009Создание программы на языке программирования С#, которая проверяет наличие в матрице хотя бы одного столбца, содержащего положительный элемент, поиск его номера. Упорядочивание его элементов по возрастанию. Листинг программы и инструкция по работе с ней.
курсовая работа [1,9 M], добавлен 28.05.2014