biji/c++.tex

91 lines
4.1 KiB
TeX
Raw Normal View History

2024-09-18 21:28:18 +08:00
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[UTF8]{ctexcap}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{xcolor}
%opening
\title{C++学习笔记}
\author{行走的芦苇}
\begin{document}
\maketitle
%\begin{abstract}
%\end{abstract}
\section{基本概念}
在协作完成一个大的软件时,应如何合理地设计程序结构,并保证每一个子程序之间都能正确地共享和交换数据,这是编程的\textcolor{red}{核心问题}
程序员的任务是将计算表达出来,并且做到:
\begin{itemize}
\item 正确
\item 简单
\item 高效
\end{itemize}
一个看似矛盾的事实:关注代码结构和代码“质量”是程序取得成功的最快捷径。\\
程序的组织体现了程序员的编程思路、目前手段主要是把大的计算任务划分为许多小任务,这一技术主要包括两类方法。
\begin{itemize}
\item[抽象]:即不需要了解的程序具体实现细节被隐藏在相应的接口后边
\item[分治]:把一个大问题分为几个小问题分别解决
\end{itemize}
对于一个好的程序员和系统设计师,软件的\textbf{结构问题}是在开发过程中始终要关注的最重要问题。
将问题不断的分解、细化,直到问题小到能够被我们很好的理解和解决为止\\
表达式是程序的最小组成单元,表达式就是从一些操作数计算一个值。\\
左值:一个变量;右值,一个变量的值\\
符号常量表示那些在初始化后值不再改变的数值量。\\
表达式语句主要包括赋值语句、I/O语句和函数调用。声明语句呢
除了合法输入情况以外,程序必须经过各种非法输入的检验。\\
switch语句括号中值必须是整型、字符型或枚举类型。特别的不能使用字符串型\\
\begin{verbatim}
char* ca = reinterpret_cast<char*>(&a);
\end{verbatim}
判定一个自然数是质量的方法:
对于任一自然数$N$$0 <m <N-1$,若$ \frac{N}{m}\neq 0$,则$N$为质数。\par
\textbf{算法描述}
\begin{description}
\item[输入]输入正整数$N$,$N>=3$
\item[判定]对于$\forall M~~2<M<N-1$,若$N\%M == 0$,则$N$为质数。
\end{description}
\textcolor{red}{为什么vector不做越界检查呢}
2024-09-18 21:29:14 +08:00
错误的来源:
\begin{itemize}
\item 缺少规划,如果事先没有规划好程序做什么,就不能检查所有的“死角”,并确认所有可能的情况都会被正确处理
\item 不完备的程序,不可能考虑所有可能的情况
\item 意外的参数,如果为一个函数输入了一个不能处理的参数
\item 意外的输入,键盘、文件、图形界面和网络都有可能出错
\item 意外状态,多数程序都保留了很多系统的各个部分的状态,如果这些状态数据出错或不完整会导致程序出错
\item 逻辑错误,程序没有按照我们期望的逻辑运行。
\end{itemize}
做过分析(理解问题)和设计(决定解决方案的整体结构)以后才进行程序设计。分析判断应该做什么并且给出对当前问题理解的描述,也称为需求集合或规范,设计给出系统的整体结构图,并确定具体的实现内容以及它们之间的相互关系,实现编写代码、调试并测试,确保程序完成预期的功能。
定义一个文法来定义表达式的语法,然后在程序中实现这些文法规则。
如何来读入一个文法呢?基本文法是这样的:对于给定输入,从顶层规则开始,搜索与输入单词匹配的规则。根据文法读取单词流的方式称为语法分析,实现的程序称为分析器或语法分析器。
2024-09-19 22:05:57 +08:00
阅读代码是积累编程技巧的有效途径。
尤其危险的程序是在很多情况下给出正确的结果。
最基本的做法是阅读代码并猜测错误在哪里,但通常这不是一个好方法。因为我们必须理解程序代码在做什么。错误分析通常也是能找出正确求解方案的最好方法。
类的定义主要说明类能够做什么,成员函数定义则指明如何做。
程序设计的本质:不断地寻找更简单的方法。
2024-09-18 21:29:14 +08:00
2024-09-18 21:28:18 +08:00
\end{document}