数组与对象编程入门
数组基础与线性搜索
数组是一种重要的数据结构,它由固定数量的相同类型的元素按特定顺序排列组成。数组中的每个项被称为元素,我们可以使用特定的值来声明和初始化数组。数组的元素通过索引(也称为下标)来引用,索引从 0 开始。
例如,有一个字符串数组,其内容可以通过
printArray()
函数在控制台输出:
[0] "George"
[1] "John"
[2] "Tom"
在数组操作中,线性搜索是一种常见的操作,用于查找数组中特定的值。虽然它效率不高,但实现简单。以下是实现线性搜索的步骤:
1.
创建新程序
:选择“文件”>“新建”,将程序保存为
LinearSearch
。
2.
定义数组和搜索值
:
int[] temperatures = {57, 10, 32, 78, 212, 101};
int seeking = 78;
println("Searching for: " + seeking);
-
使用
for循环遍历数组 :
for (int count = 0; count < temperatures.length; count = count + 1) {
println("temperatures[" + count + "] = " + temperatures[count] );
}
- 检查当前元素是否为搜索值 :
for (int count = 0; count < temperatures.length; count = count + 1) {
println("temperatures[" + count + "] = " + temperatures[count] );
if (temperatures[count] == seeking) {
println(seeking + " has been found at [" + count + "]");
}
}
println("end of search");
- 允许用户输入搜索值 :
import static javax.swing.JOptionPane.*;
int[] temperatures = {57, 10, 32, 78, 212, 101};
String input;
input = showInputDialog("Enter temperature for search:");
int seeking;
seeking = int(input);
println("Searching for: " + seeking);
for (int count = 0; count < temperatures.length; count = count + 1) {
println("temperatures[" + count + "] = " + temperatures[count] );
if (temperatures[count] == seeking) {
println(seeking + " has been found at [" + count + "]");
}
}
println("end of search");
数组的一些重要特性总结如下:
| 特性 | 描述 |
| ---- | ---- |
| 索引 | 从 0 开始,用于引用数组元素 |
| 内存存储 | 数组变量存储数组在计算机内存中的地址 |
| 越界异常 | 使用大于或等于数组长度的索引会导致异常 |
| 循环处理 |
for
循环常用于处理数组 |
| 相关函数 | Processing 提供了
printArray()
、
min()
、
max()
等函数 |
数组练习
以下是一些关于数组的练习,帮助巩固对数组的理解:
1.
声明并显示默认元素
:
- 声明一个包含七个
int
值的数组,并在控制台显示默认元素。
- 声明一个包含 15 个
float
值的数组,并在控制台显示默认元素。
2.
创建特定数组并显示
:
- 创建一个存储五个元音字符的数组,并在控制台显示元素。
- 创建一个存储一周七天名称的数组,并在控制台显示元素。
3.
声明、初始化并显示数组
:
- 声明并初始化一个包含
0, 15, 20, 35, 45, 50, 70
的数组,并在控制台显示元素。
- 修订上述程序,使用
for
循环按特定格式输出元素。
- 修订程序,计算并显示元素的总和。
- 修订程序,计算并显示元素的平均值。
4.
随机填充数组并显示
:
- 声明一个包含 10 个整数的数组,用 1 到 100 之间的随机整数填充,并在控制台显示元素。
- 修订程序,使用
max()
和
min()
函数找出最大和最小元素并显示。
5.
图形绘制相关数组操作
:
- 设置画布大小为 150 像素宽、200 像素高。
- 声明
columns
和
rows
数组,分别存储五个整数。
- 用 0 到画布宽度的随机整数填充
columns
数组,用 0 到画布高度的随机整数填充
rows
数组。
- 在控制台显示每对
row
和
column
的值。
- 以
columns
数组元素为圆心列数,
rows
数组元素为圆心行数,绘制直径为 20 的圆。
对象编程基础
在编程中,除了处理基本数据类型,我们还可以处理数据对象,如
String
对象和数组。通过创建新的类,我们可以创建自己的对象类型。
理解对象
在 Processing 中,对象可以将属性和方法捆绑在一起:
-
属性
:存储关于对象的信息的变量。
-
方法
:使对象能够执行涉及对象属性的某些操作的函数。
例如,一个秒表涉及信息(如经过的时间)和通过涉及该信息的操作(如按下重置按钮重置经过的时间)的使用。
定义新对象类型
以下是创建新对象类型(以
Circle
类为例)的步骤:
1.
创建新程序
:选择“文件”>“新建”,将程序保存为
ObjectsAndClasses
。
2.
设置画布
:
void setup() {
size(200, 200);
}
- 定义类 :
class Circle {
int column;
int row;
int diameter;
void render() {
ellipse(column, row, diameter, diameter);
}
}
在这个
Circle
类中,每个
Circle
对象都有三个属性变量:
column
、
row
和
diameter
,以及一个
render()
方法用于在画布上绘制圆。
实例化对象
创建
Circle
对象的步骤如下:
1.
声明变量
:
void setup() {
size(200, 200);
Circle littleCircle;
}
-
使用
new运算符创建对象 :
void setup() {
size(200, 200);
Circle littleCircle;
littleCircle = new Circle();
}
- 验证对象地址 :
void setup() {
size(200, 200);
Circle littleCircle;
littleCircle = new Circle();
print(littleCircle);
}
运行程序后,控制台会输出对象的内存地址。
设置对象属性
默认情况下,
littleCircle
对象的属性变量初始化为 0。我们可以使用点号表示法来更改这些属性:
littleCircle.column = 30;
littleCircle.row = 50;
littleCircle.diameter = 20;
通过以上内容,我们学习了数组的基本操作和线性搜索,以及如何定义、实例化对象并设置对象属性,为进一步的编程学习打下了基础。
数组与对象编程入门
数组操作的深入理解
在前面我们已经了解了数组的基本操作和线性搜索,接下来我们可以更深入地探讨数组在实际应用中的一些特点和优势。
数组在处理大量相同类型的数据时非常高效,因为它可以通过索引快速访问元素。例如,在处理温度数据时,我们可以使用数组来存储一系列的温度值,然后通过索引来获取特定位置的温度。
int[] temperatures = {57, 10, 32, 78, 212, 101};
int specificTemperature = temperatures[3]; // 获取索引为 3 的温度值,即 78
另外,数组还可以与函数结合使用,将数组作为参数传递给函数,实现更复杂的功能。例如,我们可以编写一个函数来计算数组中元素的总和:
int[] temperatures = {57, 10, 32, 78, 212, 101};
int sum = calculateSum(temperatures);
int calculateSum(int[] arr) {
int total = 0;
for (int i = 0; i < arr.length; i++) {
total += arr[i];
}
return total;
}
对象编程的进一步应用
在了解了对象的基本概念、类的定义、对象的实例化和属性设置后,我们可以进一步探讨对象编程在实际中的应用。
对象编程的一个重要优势是封装性,它可以将数据和操作数据的方法封装在一起,提高代码的安全性和可维护性。例如,在
Circle
类中,我们将圆的属性(
column
、
row
、
diameter
)和绘制圆的方法(
render()
)封装在一起,外部代码只需要调用
render()
方法就可以绘制圆,而不需要关心圆的具体实现细节。
class Circle {
private int column;
private int row;
private int diameter;
public Circle(int col, int r, int d) {
column = col;
row = r;
diameter = d;
}
public void render() {
ellipse(column, row, diameter, diameter);
}
}
void setup() {
size(200, 200);
Circle littleCircle = new Circle(30, 50, 20);
littleCircle.render();
}
在这个例子中,我们使用了构造函数
Circle(int col, int r, int d)
来初始化圆的属性,并且将属性设置为
private
,这样外部代码就不能直接访问和修改这些属性,只能通过类提供的方法来操作。
数组与对象的结合使用
在实际编程中,我们经常会将数组和对象结合使用。例如,我们可以创建一个存储
Circle
对象的数组,然后对这些圆进行批量操作。
class Circle {
private int column;
private int row;
private int diameter;
public Circle(int col, int r, int d) {
column = col;
row = r;
diameter = d;
}
public void render() {
ellipse(column, row, diameter, diameter);
}
}
void setup() {
size(200, 200);
Circle[] circles = new Circle[3];
circles[0] = new Circle(30, 50, 20);
circles[1] = new Circle(80, 100, 30);
circles[2] = new Circle(130, 150, 40);
for (int i = 0; i < circles.length; i++) {
circles[i].render();
}
}
在这个例子中,我们创建了一个包含 3 个
Circle
对象的数组,然后通过
for
循环遍历数组,调用每个
Circle
对象的
render()
方法,实现了多个圆的绘制。
总结与展望
通过本文的学习,我们掌握了数组的基本操作、线性搜索,以及对象编程的基本概念、类的定义、对象的实例化和属性设置。数组和对象是编程中非常重要的概念,它们在处理数据和实现复杂功能方面发挥着重要作用。
在未来的学习中,我们可以进一步学习数组的排序、搜索算法,以及对象编程中的继承、多态等高级特性,这些知识将帮助我们编写更加高效、复杂的程序。
以下是一个简单的流程图,展示了创建
Circle
对象并绘制的流程:
graph TD;
A[开始] --> B[定义 Circle 类];
B --> C[设置画布大小];
C --> D[声明 Circle 数组];
D --> E[实例化 Circle 对象并存储到数组];
E --> F[遍历数组并调用 render() 方法];
F --> G[结束];
同时,为了更好地理解数组和对象的关系,我们可以用表格来对比它们的特点:
| 类型 | 特点 |
| ---- | ---- |
| 数组 | 存储相同类型的元素,通过索引访问,处理大量数据高效 |
| 对象 | 封装属性和方法,提高代码安全性和可维护性,支持继承和多态 |
希望本文能够帮助你更好地理解数组和对象编程的基础知识,为你在编程的道路上迈出坚实的一步。
超级会员免费看
360

被折叠的 条评论
为什么被折叠?



