![](/user_photo/2706_HbeT2.jpg)
- •1. Основные этапы решения задач на эвм
- •Формулировка задачи
- •Математическая постановка задачи
- •Разработка алгоритма решения задачи
- •Написание текста программы на языке программирования
- •Ввод текста программы в эвм
- •Поиск и устранение синтаксических ошибок
- •Тестирование программы. Поиск и устранение логических ошибок в программе
- •Этапы создания исполняемой программы
- •Базовые компоненты программ
- •Буквы и цифры
- •Пробельные символы
- •Знаки пунктуации и специальные символы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Лексемы
- •Типы данных
- •Целые константы
- •Константы с плавающей точкой
- •Константа-символ
- •Строковые литералы
- •Универсальные функции ввода и вывода любых типов данных
- •Структуры и форма написания программы
- •Программирование разветвляющихся вычислительных процессов
- •Цикл while – цикл с предусловием.
- •Цикл do while – цикл с постусловием
- •Цикл for
- •Безусловная передача управления внутри цикла
- •Описание некоторых стандартов алгоритмов
- •Работа с файлами (функции ввода вывода верхнего уровня)
- •Указатели
- •Одномерные массивы Объявление массива.
- •Стандартные функции обработки строк
- •Многомерные массивы на примере двумерных
- •Классы памяти
- •Способы передачи данных в функцию
- •Функции и строки
- •Функции и одномерные числовые массивы
- •Функции и двумерные массивы
- •Функции с параметрами по умолчанию
- •Перегрузка функции
- •Шаблоны функции
- •Типы данных, определяемые пользователем
- •4.1. Структуры
- •Шаблон структуры
- •Структурные переменные
- •Инициализация структуры
- •Доступ к полям структуры
- •Массив структур
- •Вложенные структуры
- •Битовые поля структур
- •Передача структуры в функцию
- •Двоичный ввод-вывод структур
- •Функции двоичного ввода-вывода
- •Динамические структуры данных
- •4.2. Объединения
- •4.3. Перечисления
- •Файловые операции ввода/вывода
- •Файловый ввод/вывод с прямым доступом
Универсальные функции ввода и вывода любых типов данных
scanf и printf
scanf вводит данные из stdin в форматированном виде.
Синтаксис вызова:
scanf(arg1, arg2...);
функция вводит различное количество данных разного типа.
Где arg1 – управляющая строка - константа, содержащая только набор спецификаций формата, который отражает тип вводимых данных. Спецификации разделяются между собой пробелами или запятыми. Вводимые при выполнении программы значения так же разделяются этим же символом. Не ставить пробел в начале или в конце управляющей строки.
Основные спецификации формата:
%d – десятичное условие типа int.
%i – int (в любой системе счисления).
%u – unsigned.
%ld – long.
%c – один символ.
%s – строка символов без пробелов внутри (слово).
%f - float.
%lf – double.
%p – для вывода адреса переменной.
%e – для вывода очень больших или очень маленьких данных с десятичной точкой в экспоненциальной форме.
arg2... – адрес переменных, по которым записывается данное. При вводе строки символов & не пишется – только имя строки. Количество адресов совпадает с количеством спецификаций. В качестве результата функция возвращает качество результата операций качеством успешных операций. Например:
int a;
float b;
scanf(“%d %f”, &a,&b);
Функция вывода printf пишется по аналогичным правилам, только вместо адресов пишутся имена переменных и в управляющей строке можно писать комментирующий текст.
Например:
printf(“Ваши данные - %d и %f\n”, a,b);
Структуры и форма написания программы
Программы состоят из одной или нескольких функций, среди которых обязательно есть функция main. Любая функция состоит из заголовка и тела функции. Заголовок функции состоит из директивы препроцессора и имени функции. # include <iostream>. при выполнении директивы include содержание указанного файла будет вставлено в текст программы вместо самой директивы.
Имя функции main пишется стандартным образом:
int main (void)
Тело функции – несколько операторов, заключенные в фигурные скобки. Сначала пишутся операторы объявления типа переменных, затем – операторы действия: ввод исходных данных, вычисление результата и вывод его на экран.
Форма написания программы. Текст пишется маленькими латинскими буквами, большие буквы используются в именах переменных и константах.
Задача.
Фокусное расстояние собирающей линзы
F
= 30 см, расстояние предмета
от фокуса
l = 10 см, линейные размеры предмета h
= 5 см. Определить размеры изображения
по формуле
Программа будет строиться в виде проекта, состоящего из файлов:
– main.cpp – файл с текстом функции main;
– Rus.cpp – файл с текстом функции Rus;
– Rus.h – файл с прототипом функции Rus.
Полный текст программы будет выглядеть так:
//содержимое файла main.cpp
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "Rus.h" //прототип функции русификации
int main(void) //имя функции main
{
double focus, distance, size, h; //объявили переменные
//здесь и далее: приглашение к вводу, текст выводится на экран монитора //отдельной строкой
cout<<Rus("\n Введите фокусное расстояние ");
//ввод исходного данного с клавиатуры в переменную focus
cin>>focus;
cout<<Rus("Введите расстояние предмета от фокуса ") ;
cin>>distance;
cout<<Rus("Введите размеры предмета ");
cin>>size;
//вычисление по формуле, результат помещается в h
h=focus*size/distance;
//вывод результата из переменной h на монитор с комментарием
//в одном операторе Rus вызываем один раз
cout<<Rus("Размеры изображения ")<<h ;
cout<<Rus("см\n");
//оператор return завершает работу функции main
return 0;
}
//содержимое файла Rus.cpp
#include<windows.h>
char bufrus[256];
char*Rus(const char*text)
{
CharToOemA(text, bufrus);
return bufrus;
}
//содержимое файла Rus.h
#ifndef RUS_H
#define RUS_H
char*Rus(const char*text);
#endif
Примечание. В последующих примерах будут приводиться тексты только функции main. Использование функции Rus будет опускаться, так как это не относится к самому языку С++, а к особенностям среды программирования VS2008.