写在25%:不劳无获

no pains no gains

昨天晚上完成第25个作品时,回头看了一下更新的作品列表,一股成就感油然而生,哈哈!~在刚开始的那几天,或许连我自己都不相信能坚持下来,以前想坚持做一件事,总是半途而废……

正如上图中的那四个字:不劳无获,就是这25天最切切实实的感受。虽然每天晚上都加班至深夜,但这一个月来的收获,总是给我坚持的动力,希望在接下来的日子里,继续加油!~

为了未来!

CS106A 学习笔记(9):Assignment #2-1

cs106a-assignment-2-1

主要思路:

  • 从下往上,最底层(第0行),有14块砖;第1行,有13块砖;第2行,有12块砖…
  • 以此类推,每一行的砖块数量等于底层数(14)减去行数
  • 获取砖块放置的坐标:
    • 横坐标:窗口宽度/2 – 每行砖块总宽度/2 + 相应砖块的数量的宽度
    • 纵坐标:窗口高度 – 相应行数砖块的高度

参考代码:

/*
 * File:    Pyramid.java
 * -------------------------
 * Draws a pyramid consisting of bricks arranged in horizontal rows.
 */

import acm.program.*;
import acm.graphics.*;

public class Pyramid extends GraphicsProgram {

    private static final int BRICK_WIDTH = 30; // brick 宽度:30px
    private static final int BRICK_HEIGHT = 12; // brick 高度:12px
    private static final int BRICK_IN_BASE =14; // 底层 brick 数量:14

    public void run() {

        /*
         * 从下往上,第0行,14个 bricks;第1行,13个 bricks;第2行,12个 bricks;
         * 所以,每一行的 bricks 数量为 BRICK_IN_BASE - 行数;
         * 总共 14 行;
         */

        // 主循环,定义行数
        for (int row = 0; row < BRICK_IN_BASE; row++) {
            int bricksInRow = BRICK_IN_BASE - row; // 每一行brick的数量等于底层数量减去行数

            // 定位每行中bricks的位置
            for (int brickNum = 0; brickNum < bricksInRow; brickNum++) {

                // brick 横坐标
                int x = getWidth() / 2 - ( BRICK_WIDTH * bricksInRow ) /2 + brickNum * BRICK_WIDTH;
                // brick 纵坐标
                int y = getHeight() - BRICK_HEIGHT * ( row + 1 );
                // 添加bricks
                GRect brick = new GRect ( x, y, BRICK_WIDTH, BRICK_HEIGHT );
                add(brick);
            }
        }
    }

}

Obj-C 学习笔记(2):布尔类型(Boolean)

布尔类型(BOOL)

C语言中的布尔数据类型 bool,具有 truefalse 两个值;而Obj-C中的布尔数据类型 BOOL,具有 YESNO 两个值。

Obj-C 中的 BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用 8 位的存储空间。通过 #define 指令把 YES 定义为 1,把 NO 定义为 0。

Obj-C 并不会将 BOOL 作为仅能保存 YES 和 NO 值的真正布尔类型来处理。

boolString()

boolString() 的返回值类型是一个指向 NSString 的指针。这意味着函数会返回一个 Cocoa 字符串。

NSLog() 末尾添加 %@ 格式的说明符,是为了通知 NSLog() 接受适当的参数,将其作为 NSString,并使用该字符串中的字符,将其发送到控制台中。

CS106A 学习笔记(9):阶乘

第七课视频中讲的阶乘的例子:

/*
 * File:    Factorial.java
 * -----------------------------
 */

import acm.program.*;

public class Factorial extends ConsoleProgram {

    private static final int MAX_NUM = 10;

    public void run() {

        for (int i = 0; i < MAX_NUM; i++) {
            println(i + "! = " + factorial(i));
        }

    }

    private int factorial(int n) {
        int resault = 1;
        for (int i = 1; i <= n; i++) {
            resault *= i;
        }

        return resault;
    }

}

CS106A 学习笔记(8):方法

方法(Methods)

Java 方法是语句的集合,它们在一起执行一个功能。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

方法调用

reveiver name (arguments)

创建方法

visibility type name (parameters) {
    ...
    body
    ...
}
  • visibility:private 或者 public
  • type:返回值的类型。void 为特殊类型,意为不返回任何值
  • name:方法的名字
  • parameter:方法的参数。多个参数使用逗号(,)隔开,参数类型与参数名之间空格。

define-a-method

100天,为未来!

for-the-future

100天,为未来!

每天一个PPT模板,坚持100天!给自己加油!

  • 每个PPT模板不少于18页(简历等特殊模板除外)。
  • 内容应该包含(不限于):封面、封底、目录页、转场目录,内容页。
  • 每日作品发布PPTSTORE,视频演示上传优酷。    

  • (100/100) June 14th:商务 PPT 模板 100
  • (99/100) June 13th:商务 PPT 模板 99
  • (98/100) June 12th:商务 PPT 模板 98
  • (97/100) June 11th:商务 PPT 模板 97
  • (96/100) June 10th:商务 PPT 模板 96
  • (95/100) June 9th:商务 PPT 模板 95
  • (94/100) June 8th:商务 PPT 模板 94
  • (93/100) June 7th:商务 PPT 模板 93
  • (92/100) June 6th:商务 PPT 模板 92
  • (91/100) June 5th:商务 PPT 模板 91
  • (90/100) June 4th:商务 PPT 模板 90
  • (89/100) June 3rd:超实用扁平化商务汇报总结 PPT 模板
  • 阅读全文

    CS106A 学习笔记(7):运算符、常量及语句

    运算符

    Java 运算:

    • 加(+)
    • 减(-)
    • 乘(*)
    • 除(/)
    • 取余(%)

    加(+)、减(-)、乘(*)这三种运算符使用起来和数学的一般用法基本相同。

    在Java中,如果两个运算数都是整数,那么除法运算符的运算结果也是整数,并且会省略一切小数点后的值(或者说是两个整数相除得到的商)。而取余运算符(%),则对应的是两个整数相除得到的余数。

    运算符的简写

    Long Form Shorthand Form
    x = x + 1 x++
    x = x – 1 x——
    x = x + y x + = y
    x = x – y x – = y
    x = x * y x * = y
    x = x / y x / = y

    常量(Constant)

    虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。

    常量声明方式:

    private static final type NAME = value;
    

    布尔变量(Boolean)

    Boolean expression is just a test for a condition.

    true被显示为”true”,false被显示为”false”

    比较运算符

    • ==:等于
    • !=:不等于
    • >:大于
    • <:小于
    • >=:大于等于
    • <=:小于等于

    逻辑运算符

    • !:非
    • &&:与
    • ||:或

    阅读全文

    CS106A 学习笔记(6):变量

    变量(variable)

    在程序设计中,变量是一种存储数据的载体。计算机中的变量是实际存在的数据,与数学方程中抽象的“变量”存在本质区别。变量的数值可以被读取和修改,是所有计算的基础。

    变量一般具有三个要素:

    • 名称: name
    • 数据类型: type
    • 值: value

    Java 中变量的命名规范:

    • 必须以字母、下划线或美元符号开头
    • 只能出现字母、下划线、数字和美元符号,不得出现任何其他符号或空格
    • 不能使用保留字作为名字
    • 在同一使用范围内,所有变量、函数、类、对象等的名称不得重复

    数据类型

    数据类型是程序设计语言描述事物、对象的方法。

    Java数据类型分为内置类型扩展类型两大类。

    内置类型就是Java语言本身提供的基本数据类型,比如,整型数,浮点数,字符,布尔值等等。而扩展类型则是Java语言根据基本类型扩展出的其他类型,Java要求所有的扩展类型都必须包括在类定义里面,这就是Java为什么是面向对象编程语言的原因。

    常用的内置类型:

    • int:整数
    • double:双精度浮点数
    • boolean:布尔值
    • char(car):字符值

    变量声明语法:

    type name = value;
    

    GObject 类

    • GLabel
    • GRect
    • GOval
    • Gline

    GObject 类可进行的运算:

    • 设置对象颜色

      object.setColor(color)
      

    java.awt.* 中定义了标准的颜色名称:

    Color.BLACK
    Color.RED
    Color.BLUE
    Color.DARK_GRAY
    Color.YELLOW
    Color.MAGENTA
    Color.GRAY
    Color.GREEN
    Color.ORANGE
    Color.LIGHT_GRAY
    Color.CYAN
    Color.PINK
    Color.WHITE
    
    • 设置对象位置

      object.setLocation(x, y)
      
    • 移动对象

      object.move(dx, dy)
      

    GLabel 类可进行的运算:

    • 在(x, y)点创建一个新的标签(Label)

      new GLabel (text, x, y)
      
    • 设置Label中文字的字体

      label.setFont(font)
      

      字体参数的格式:

      family-style-size
      

    绘制图形对象

    • 在(x, y)点创建一个指定长和宽的矩形

      new GRect (x, y, width, height)
      
    • 在(x, y)点创建一个指定长和宽的椭圆形

      new GOval (x, y, width, height)
      
    • 画一条从点(x1, y1)到点(x2, y2)的直线

      new GLine (x1, y1, x2, y2)
      
    • 如果 filltrue 则填充对象,false 则只显示轮廓

      object.setFilled(fill)
      
    • 设置对象填充颜色

      object.setFillColor(color)
      

    获取图象窗口大小

    // Returns the width of the graphics window
    getWidth()
    
    //Returns the height of the graphics window
    getHeight()
    

    上述两个命令只能在 GraphicsProgram 中调用。

    CS106A 学习笔记(5):Hello, Java!

    程序编译

    将用某种编程语言写成的源代码(Source Code),转换成另一种编程语言——目标语言(Object Code)。

    编译的主要目的是将便于人编写、阅读、维护的高级编程语言写作的源代码程序,翻译为计算机能够解读、运行的低阶机器语言的程序,也就是可执行文件。

    源代码一般为高阶语言(High-level language),如C、C++、C# 、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

    一个现代编译器的主要工作流程如下: 源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(Linker)→ 可执行文件(executables)

    Java 通过虚拟机(Java Virtual Machine,JVM)进行编译。源代码通过编译器翻译成class文件,即中间语言,中间语言通过虚拟机(JVM)编译为计算机能够理解的目标语言。

    javavirtualmachine

    Java 特性:

    • 跨平台
    • 面向对象
    • 泛型编程

    面向对象的程序设计(Object-oriented programming,OOP)

    对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

    类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。一个类的方法和属性被称为“成员”。

    对象(Object)是类的实例。一个具体对象属性的值被称作它的“状态”。

    类是抽象的,对象是具体的。

    ACM Program Hierarchy

    ProgramHierarchy

    第一个Java程序

    /*
     * File:    HelloJava.java
     * -----------------------------
     * This is my first Java program.
     * It displays 'Hello, Java!' on the screen.
     */
    
    import acm.graphics.*;
    import acm.program.*;
    
    public class HelloJava extends GraphicsProgram {
        public void run() {
            add( new GLabel( "Hello, Java!", 100, 75 ) );
        }
    }
    

    阅读全文