04.05
이번 주 월요일은 재택수업~🥳
오전에는 지난 시간에 배웠던 중요한 개념들을 복습했다.
이 날의 진도
1) 전체 복습
1) 변수 : 변하는 수 / 메모리에 하나의 값을 담을 수 있는 것
자료형 변수명;
자료형 변수명 = 초기값;
자료형 : 정수 , 실수 , 문자 , 논리
기본 : 정수(int) 실수(double) 문자(char) 논리(boolean)
Class(참조자료형) : String = 문자열 java에서 제공하는 클래스
byte가 큰 쪽으로 자동 형변환
상수 : final 자료형 변수명 = 초기값; (상수는 변하지 X)
인코딩 : 컴퓨터가 알 수 있게끔 숫자로 변환
디코딩 : 사람들이 알 수 있는 문자 출력을 위해 코드 숫자를 문자로 변환
2) 연산자
산술 연산자 + - * / %
관계 연산자 > < >= <= == !=
논리 연산자 &&(AND) ||(OR) !(NOT)
비트 연산자 책 참고(p.83)
복합 대입 연산자 -= / *= / /= / %=
a += b; a = a+b;와 같음
3) 그 외 조건문
2) 반복문
(for문, while문 , do-while문, continue, break)
3) 문제풀이
package Day3;
//p.109 소스예제 while문 활용하여 1부터 10까지 더하기
public class WhileExample1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 1;
int sum = 0;
while(num <= 10) {
sum += num;
num++;
}
System.out.println("1부터 10까지의 합은 "+ sum +"입니다.");
}
}
while문
while(조건식){
}
조건식이 참이면 계속하여 반복 수행,
조건이 거짓이 되면 반복문 탈출한다.
package Day3;
//p.112 소스예제 do-while문
public class DoWhileExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 1;
int sum = 0;
do {
sum += num;
num++;
}while(num <= 10);
System.out.println("1부터 10까지의 합은 "+ sum + "입니다.");
}
}
do - while문
do-while : 조건이 맞지 않아도 한 번은 무조건 실행한다
do {
명령어
}
while(조건식);
* 조건식 뒤에 세미콜론이 붙는다
package Day3;
//p.114 소스예제 for문
public class ForExample1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
int sum;
for(i = 1, sum = 0; i <= 10; i++) {
sum += i;
}
System.out.println("1부터 10까지의 합은 "+ sum +"입니다.");
}
}
for문
for ( int i = 0(초기식); i < 10(조건식); i++(증가 감식)) {
명령문
}
package Day3;
//p.116~117 소스예제 중첩된 반복문
public class NestedLoop {
public static void main(String[] args) {
// TODO Auto-generated method stub
int dan;
int times;
for(dan = 2; dan <= 9; dan++) {
for(times = 1; times <= 9; times++) {
System.out.println(dan + "X" + times + "=" + dan * times);
}
System.out.println();
}
}
}
중첩된 반복문
package Day3;
//p.119 소스예제 continue문
public class ContinueExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
int total = 0;
int num;
for(num = 1; num <= 100; num++) {
if(num % 2 == 0 ) // 즉, num이 짝수인 경우 이후 수행을 생략하고 num++을 수행
continue;
total += num; // num이 홀수일 때만 진행
}
System.out.println("1부터 100까지의 홀수 합은 : "+ total + "입니다.");
}
}
continue문
반복문 안에서 continue문을 만나면 이후 문장은 수행하지 않고,
for문으로 돌아가 증감식을 수행한다.
package Day3;
//p.121 소스예제 break문 예제
public class BreakExample2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
int num = 0;
for(num = 0; ; num++) { // 조건식을 생략하는 대신 break문 사용
sum += num;
if(sum >= 100)
break; // 반복문 중단
}
System.out.println("num : "+ num);
System.out.println("sum : "+ sum);
}
}
break문
break문을 만나면 제일 가까운 반복문을 탈출한다.
package Day3;
import java.util.Scanner;
/*
* Q4. 구구단 만들기
* 1. 전체 출력
* 2. 단 입력
* 3. 종료
*
* 1번 입력 시 구구단을 전체 출력
* 2번 입력 시 단을 입력 / ex) 5하면 구구단 5단만 출력
* 이렇게 출력이 되고 나면 첫화면으로 이동시킴
* 3번 입력 시 구구단 프로그램을 종료합니다
* (단, 첫 화면에서는 1,2,3 이 외의 숫자가 입력 시에는 잘못 입력했습니다. 출력 후 첫 화면 이동)
* (단, 2번 원하는 구구단 출력 시에는 단을 입력 했을 때,
* 2~9이외의 숫자가 입력되면 잘못된 입력입니다. 출력 후 첫화면으로 이동)
*
* */
public class Question1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("구구단 프로그램입니다.");
System.out.println("1 : 구구단 전체 출력 || 2 : 원하는 단만 출력 || 3 : 프로그램 종료");
System.out.println("원하시는 메뉴를 선택해주세요");
int choice = sc.nextInt();
if(choice == 1) {
for(int i = 2; i<10; i++) {
for(int j = 1; j<10; j++) {
System.out.println(i +" X " + j + " = " + i * j);
}
}
System.out.println("첫 화면으로 돌아갑니다.");
}else if(choice == 2) {
System.out.println("원하시는 단을 입력하세요");
int choice2 = sc.nextInt();
if( choice2 >= 2 && choice2 <= 9) {
for(int k = 1; k < 10; k++) {
System.out.println(choice2 + "X" + k + " = " + choice2 * k );
}
System.out.println("첫 화면으로 돌아갑니다.");
}else {
System.out.println("잘못된 입력입니다. 초기 화면으로 돌아갑니다.");
System.out.println();
}
}else if(choice == 3) {
System.out.println("프로그램을 종료합니다.");
break;
}else {
System.out.println("잘못된 입력입니다. 첫 화면으로 돌아갑니다.");
System.out.println();
}
}
}
}
반복문으로 구구단 출력 프로그램 만들기
이 외 과제는
랜덤 알파벳 출력하기와
대망의 ☆별 찍기!!★
이 둘은 과제 카테고리에 올려야겠다.
오늘의 느낀 점은
슬슬 밑천이 드러나고 있다.🙄ㅎ
04.06
화요일은 대면 수업!
매주 화요일에는 파이썬과 네트워크 등의
수업을 듣는 날이다.
개강하고 처음 듣는 파이썬 수업이라
오늘은 하루 종일 오리엔테이션 및 간략한 IoT, 프로그래밍 개념 수업을 들었다.
중간중간 필기 정리본
IoT(Internet of things)
(=IP를 가지고 있는 사물)
사물에 인터넷이 들어간다
내가 사물과 커뮤니케이션을 하는 것(사람이 제어 O)
IoT가 되기 위한 조건 :
사물에 IP를 부여하고 사람이 제어할 수 있는 것
ex) 홈네트워크 등
통신(Communication)
정보통신(IC) : 통신자 <->수신자 (통신이 있으면 수신이 있음)
M2M(M to M) : 머신 투 머신 = 사물과 사물의 대화
ex) 스마트폰으로 영상을 보다가 차량에 탑승했을 때 내비게이션에
스마트폰으로 보던 영상이 그대로 뜸
∴ 스마트폰과 내비게이션이 소통을 함
아날로그 신호( 음성 등 )
디지털 정보 : 컴퓨터가 알아들을 수 있는 신호
컴퓨터는 0,1만 알아듣기 가능
0 : 전력이 공급 X , 스위치 OFF
1: 전력이 공급 O, 스위치 ON
문자, 숫자 - 1byte
한국어,남미어 등 - 2byte
2의 10승 = 1024
1bit(크기) = 데이터를 담을 수 있는 단위
1바이트 = 8비트
1킬로 바이트 = 1024바이트
1메가 바이트 =1024킬로바이트
1 테라바이트 = 1024메가 바이트
1페타바이트 = 1024 테라 바이트
Hz헤르츠 - 데이터 전송 속도의 기본단위
(1초에 1000번의 신호 실행 = 1KHz 킬로 헤르츠
100만 번 1 MHz 메가헤르츠 , 1000만 번 1 GHz 기가 헤르츠)
RPM - 하드 디스크 속도의 기본 단위
bps - 전송 속도를 나타내는 기본 단위
프로그래밍 : 프로그램을 만드는 과정
프로그램 : 미리 작성된 것 = 진행 계획
어원 : pro : 미리 gram : 작성된 것
컴퓨터 프로그램 : 컴퓨터가 무엇을 해야 할지 미리 작성한 진행 계획
이진 숫자(binary digit(단위)) : 0과 1로 이루어진 컴퓨터의 언어
이진 코드(binary code) : 이진 숫자로 이루어진 코드
프로그래밍 언어 : 사람이 이해하기 쉬운 언어로 프로그램을 만들기 위해 만들어짐 ex) c, java
소스 코드 : 프로그래밍 언어로 작성한 프로그램
코드 실행기 : 프로그래밍 언어는 컴퓨터가 이해할 수 없으므로
이를 이진 숫자로 변환해주는 역할
파이썬 : 91년 귀도 반 로섬이 개발 (비단뱀 로고)
초보자가 쉽게 배울 수 있는 프로그래밍 언어
장점 :
다양한 분야에서 활용
대부분의 운영체제(윈도, 맥, 리눅스 등)에서 동일하게 사용
단점 :
C에 비해 10~350배 느림
(but, 최근에는 컴퓨터 성능이 좋아져 연산이 많이 필요한 프로그램이 아니라면 차이를 크게 느낄 수 없다. )
인텔 : CPU(중앙처리장치)를 만드는 회사 (또 다른 회사는 AMD)
인텔 i9-9900 K processor
브랜드명 / 등급 / 세대명, SKU / 옵션(K)
= 인텔 i 코어 i9 등급의 9세대 9900 배수락이 풀린 CPU다.
i9등급 9세대 900(SKU) K(오버클럭 가능)한 CPU라는 뜻
cpu : 중앙처리장치
두뇌
i7 성능
i3 보급형
i5 메인스트림
i7 고성능
i9 최고 성능
RAM(Random access memory) : 랜덤 연산처리 메모리
연습장
두뇌가 생각하는걸 바로 연습장에 쓴다고 생각
기능 :
1) 주기억장치
2) 임시 기억장치
메인보드(main board)
월드컵 축구경기장
(경기장(메인보드) 안에서 CPU라는 호날두와 램이라는 메시 등이 뜀
이때 주심 역할은 칩셋)
전산 컴퓨터에서, 각종 케이블이나 배선을 통합하여 연결하는 회로가 장치되어 있는 판
CPU나 그래픽카드, 하드 디스크 등이 PC의 성능을 좌우하는 요소라 안다면 메인보드는 이들 구성품 간의 호환성이나 차후 기능 확장의 범위를 정하며, 궁극적으로 PC전반의 안정적인 동작 여부를 좌우하는 요소
그래픽카드
코어 : 사무실
쿠다 프로세서(스트림 프로세서) :
화면에 보이는 영상을 처리하는 프로세서(일꾼)로 개수가 많을수록 3D 그래픽 처리속도가 빨라진다.
GDDR
지싱크 프리싱크
하드 디스크 드라이브 : 보조기억장치(주기억장치 X)
비휘발성
탐색 시간 SeekTime :
데이터를 읽기 위해 해당 위치의 트랙으로 움직이는 과정
접근시간 Access Time :
CPU가 데이터의 읽기를 요구한 이후부터 기억 장치가 데이터를 읽어내서
그것을 CPU에 돌려주기까지의 시간.
04.07
수요일 또한 처음으로 배우는 html 수업이었다.
이날은 따로 툴을 사용하지 않고
오로지 메모장만으로 만들었다.
<html>
<head>
<title>나의 첫 홈페이지</title>
</head>
<body>
반갑습니다. <br/><br/><br/><br/><br/>
<!--<br/> : 순수하게 줄을 바꿈 여러개쓰면 여러번 효과 O-->
줄바꿈 태그를 연습해 봅시다.<p><p><p><p><p>
<!--<p> : 문단을 표현,개행 O,문단의 개념이라 여러번 사용해도 하나만 효과
홈페이지를 만들어 봅시다.
<h1>안녕하세요</h1>
<h2>안녕하세요</h2>
<h3>안녕하세요</h3>
<h4>안녕하세요</h4>
<h5>안녕하세요</h5>
<h6>안녕하세요</h6>
<!--<h1~6> : 줄 개행의 효과도 있다.-->
</body>
</html>
<html>
<head>
<title>두 번째 페이지</title>
</head>
<body>
<h1 id = "top" align ="center">우리나라의 계절</h1>
<hr width = 50% align = "center">
<table width = 480 align = "center">
<tr>
<td><a href = "#s1"> 봄</a></td>
<td><a href = "#s2"> 여름</a></td>
<td><a href = "#s3"> 가을</a></td>
<td><a href = "#s4"> 겨울</a></td>
</tr>
</table>
<hr width = 50% align = "center">
<br><br><br>
<ol>
<h2 id = s1><li>봄</h2><br>
<img src = "C:\homepage_sample\spring.png" width ="200px" height = "150px"><br><br>
기상학에서는 기온 변화에 따라 계절을 구분한다.<br>
일 평균 기온이 5도 이상으로 올라가 9일간 유지될 때, 그 첫 번째 날을 봄의 시작일로 정의한다.<br>
이는 다음과 같이 더 세분화한다.<br>
<ul>
<li style="list-style-type:disc;">초봄 : 일평균기온이 5℃∼10℃, 일최저기온이 0℃ 이상<br>
<li style="list-style-type:square;">봄 : 일평균기온이 10℃∼15℃, 일최저기온이 5℃ 이상<br>
<li>늦봄 : 일평균기온이 15℃∼20℃이고 일최저기온이 10℃ 이상<br>
</ul><br><br>
<a href = "#top"><img src ="top.png" align = "right" ></a><br><br><br><br>
<h2 id = s2><li>여름</h2><br>
<img src = "summer.png" width ="200px" height = "150px"><br><br>
기상학에서는 기온 변화에 따라 계절을 구분한다. <br>
대한민국 기상청은 여름의 시작을 일평균 기온이 20도 이상으로 올라간 뒤 다시 떨어지지 않는 첫날로 정의하며, <br>
나흘 전부터 나흘 후까지 9일 동안의 평균 기온이 이틀 연속 유지될 때를 기준으로 한다.<br>
이는 다음과 같이 더 세분화한다.<br>
<ul>
<li>초여름 : 일평균기온이 20℃∼25℃이고 일최고기온이 25℃ 이상
<li>장마 : 일평균기온이 20℃∼25℃이고 일최고기온이 25℃ 이상이며 강수량이 집중
<li>한여름 : 일평균기온이 25℃ 이상이고 일최고기온이 30℃ 이상
<li>늦여름 : 일평균기온이 20℃∼25℃이고 일최고기온이 25℃ 이상
</ul><br><br>
<a href = "#top"><img src ="top.png" align = "right"></a><br><br><br><br>
<h2 id = s3><li>가을</h2><br>
<img src = "fall.png" width ="200px" height = "150px"><br><br>
기상학에서는 기온 변화에 따라 계절을 구분한다. <br>
일 평균 기온이 20도 이하로 내려가 9일간 유지될 때, 그 첫 번째 날을 가을의 시작일로 정의한다.<br>
이는 다음과 같이 더 세분화한다.<br>
<ul>
<li>초가을: 일최고기온이 25℃ 이하
<li>가을: 일평균기온이 10℃∼15℃이고 일최저기온이 5℃ 이상
<li>늦가을: 일평균기온이 5℃∼10℃이고 일최저기온이 0℃∼5℃
</ul><br><br>
<a href = "#top"><img src ="top.png" align = "right"></a><br><br><br><br>
<h2 id = s4><li>겨울</h2><br>
<img src = "winter.png" width ="200px" height = "150px"><br><br>
기상학에서는 기온 변화에 따라 계절을 구분한다. <br>
일 평균 기온이 5도 이하로 내려가 9일간 유지될 때, 그 첫 번째 날을 겨울의 시작일로 정의한다.<br>
이는 다음과 같이 더 세분화한다.<br>
<ul>
<li>초겨울, 늦겨울 : 일평균기온이 5℃ 이하이고 일최저기온이 0℃ 이하
<li>한겨울 : 일평균기온이 0℃ 이하이고 일최저기온이 -5℃ 이하
<a href = "#top"><img src ="top.png" align = "right"></a><br><br><br><br>
</ul>
</ol>
</body>
</html>
<ul> : unorder list 순서가 없다(● ■ 등)
<ol> : order list 순서가 있다. (123 , 가나다 등)
<li> : list
<img src = "" alt = "설명글"> : src(소스)
<html>
<head>
<title>세 번째 페이지</title>
</head>
<body>
<h1>링크 연습하기</h1>
<a target = "_blank" href ="https://www.naver.com">네이버</a><br><br>
<a target = "_blank" href ="https://www.daum.net/">다음</a><br><br>
<a href ="https://www.google.co.kr/">구글</a><br><br>
<a href ="https://www.incheon.go.kr">인천시청</a><br><br>
</body>
</html>
<html>
<head>
<title>네 번째 페이지</title>
</head>
<body>
<!-- 오늘 처음 테이블 만들음, border 설정을 해줘야 선이 나옴 -->
<h1 style ="color : tomato;">테이블 만들기</h1>
<table border = "1px">
<tr >
<th>요일/교시</th>
<td>월 요 일 입 니 다</td>
<td>화요일</td>
<td rowspan = 3>수요일<br>수업중</td>
<td>목요일</td>
<td>금요일</td>
</tr>
<tr>
<th>1교시</th>
<td colspan = 2>월요일</td>
<td>목요일</td>
<td rowspan=2>금요일</td>
</tr>
<tr>
<th>2교시</th>
<td>월요일</td>
<td>화요일</td>
<td>목요일</td>
</tr>
</table>
<br><br><br>
<h1>테이블 만들기2</h1>
<table border = 1 width = "30%" style ="border:2px solid pink;">
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr align="center">
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr align="center">
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
<br><br><br>
<table border = "1px" width = "30%" style ="background-color : pink;" >
<tr align="center">
<td rowspan = 4>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr align="center">
<td>4</td>
<td>5</td>
</tr>
<tr align="center">
<td>6</td>
<td>7</td>
</tr>
<tr align="center">
<td colspan =2 >8</td>
</tr>
</table>
<br><br><br>
<table border = "1px" width = "30%" >
<tr align="center">
<td colspan = 2 width="50%">1</td>
<td colspan = 2 width ="50%">2</td>
</tr>
<tr align="center">
<td>3</td>
<td colspan = 2>4</td>
<td rowspan = 2>5</td>
</tr>
<tr align="center">
<td colspan = 2 >6</td>
<td>7</td>
</tr>
</table>
</body>
</html>
<th> : 테이블의 제목 / 자동정렬
<td rowspan = 2> : 2개의 행을 쓰겠다는 뜻
사용 시 아래 <tr>의 동일행을 지워줘야 함
<td colspan = 2> : 2개의 열을 쓰겠다는 뜻
사용 시 <tr>의 아래 열을 삭제해줘야 함
<html>
<head>
<title>iframe 연습</title>
</head>
<body>
<h1>iframe 예제</h1>
<iframe src ="test03.html" height = "350" width ="450" name = "my"></iframe><br>
<table border = 0 width ="450">
<tr>
<th><a href = "test01.html" target ="my">test01</a></th>
<th><a href = "test02.html" target ="my">test02</a></th>
<th><a href = "test03.html" target ="my">test03</a></th>
<th><a href = "test04.html" target ="my">test04</a></th>
<!--target = "_blank" : 새창으로 띄우기-->
</tr>
</table>
</body>
</html>
이후 배운 것을 토대로
나만의 홈페이지 만들기를 했는데...
반응형으로 만들지 않아 버렸더니 깨지고 난리가 나버렸다.
그래서 내가 만든 캡처는 스킵 ^^!
04.08
학원에서 듣는 C수업 날
#include <stdio.h>
void main(void){
// 삼항연산자 예제
int a,b
scanf("%d",a);
if(a%2){
puts("홀수");
}else{
puts("짝수");
}
printf("%s", a%2 ? "홀수" : "짝수"); // 삼항연산자
}
삼항 연산자 예제
#include <stdio.h>
void main(void){
//Q1. 숫자 한 개를 입력받아 홀수 짝수를 구분하시오.
int a;
printf("숫자를 입력해주세요\n");
scanf("%d", &a);
if(a%2==0){
printf("%d 는 짝수입니다.\n", a);
}else{
printf("%d 는 홀수입니다.\n", a);
}
}
Q1. 숫자 한 개를 입력받아 홀수, 짝수 구분하기
#include <stdio.h>
void main(void){
//Q2. 숫자 한 개를 입력받아 소수인지 판별하시오.(소수 : 1과 나 자신으로만 나누어진 수)
int b;
int i;
printf("숫자를 입력해주세요.\n");
scanf("%d", &b);
for(i=2; i<b; i++){
if(b%i==0){
printf("%d 는 소수가 아닙니다.\n",b);
break;
}else{
printf("%d 는 소수입니다.\n",b);
break;
}
}
}
Q2. 숫자 한 개를 입력받아 소수인지 구분하기
#include <stdio.h>
void main(void){
//Q3. 숫자 두 개를 입력받아 큰 수를 출력하시오.
int c;
int d;
printf("숫자를 두개 입력해주세요.\n");
scanf("%d", &c);
getchar();
scanf("%d",&d);
if(c>d){
printf("%d 와 %d 중 더 큰 수는 %d 입니다.",c,d,c);
}else{
printf("%d 와 %d 중 더 큰 수는 %d 입니다",d,c,d);
}
}
Q3. 숫자 두 개를 입력받아 더 큰 수를 출력하기
#include <stdio.h>
void main(void){
/*int a;
scanf("%d", &a); // &a : 변수의 주소, 메모리의 위치
printf("input data : %d\n", a);*/
//국어, 영어, 수학 점수를 각각 입력받고 각 과목의 점수와 평균점수를 출력하세요
int korean;
int english;
int math;
float avg;
printf("국어,영어,수학점수를 순서대로입력하세요");
scanf("%d %d %d", &korean , &english, &math);
printf("국어 : %d\n", korean);
printf("영어 : %d\n", english);
printf("수학 : %d\n", math);
//avg = (float)(korean+english+math)/3; 강제(수동) 형변환 or (float)3해도됨
avg = (korean+english+math)/3.0; // int -> float으로 자동 형변환됨
printf("평균 점수 : %f\n",avg);
}
Q4. 국, 영, 수 점수를 각각 입력받고 각 과목의 점수와 평균점수 출력하기
#include <stdio.h>
void main(void){
//위키독스 printf 예제
int i;
float x;
i = 40;
x = 839.21f;
printf("|%d|%5d|%-5d|%5.3d|\n", i, i, i, i);
// 결과 |40| 40|40 | 040| %5.3d -> 5 : 자릿수 3 : 보여주는 수
printf("|%10.3f|%10.3e|%-10g|\n", x, x, x);
// 결과 | 839.210|8.392e+002|839.21 | %10.3f -> 10 : 자릿수 .3 : 소수점자리(둘쨋자리까지 밖에 없어 0추가)
// %10.3e : 지수표현 3자리의 지수표현을 하겠다 -> +002
}
printf 예제
#include <stdio.h>
#define B 20
#define PLUS 10+20
#define PRINT_IN printf("%d\n", PLUS)
void main(void){
//상수
const int A = 10;
//a = 20; : 에러남, 상수는 변경X = 읽기 전용 절대적인것은 아니나 소문자 - 변수 / 대문자 - 상수로 표현하기도 한다
printf("A : %d\n",A);
printf("B : %d\n", B); // #define B 20 매크로같은 것
printf("plus : %d\n", PLUS); // #define은 문자,숫자,수식에 할 것 없이 컴파일전에(전처리단) 치환해줌 = 상수화
printf("plus : %d\n", PLUS*2);//결과 = 50 why? 10+20*2 -> 10+(20*2)가 됨
printf("plus : %d\n", (PLUS)*2); // (10+20)을 먼저하고 싶으면 #define PLUS (10+20)하는게 제일 좋고, 그게 아니라면 이렇게 함
PRINT_IN;
int a = 10;
int b = 20;
a = a+1;
a +=1;
a++;
printf("a : %d\n", ++a);
}
상수 예제
그 외 간단 예제
if문 예제
int a = 10;
if(a>10)
printf("1");
else if(a>5)
printf("2");
else if(a>0)
printf("3");
else
printf("4");
// = 2번만 실행된다
if문 예제
int a = 10;
if(a>20){
//c언어에서는 if(0을 제외한 모든 수, 말이 되면 참(1!=2) , 숫자는 주로 1을 씀)= true , 0 = false
puts("참");
puts("aaa");
} else if(a>5){
puts("a>5");
} else {
puts("거짓");
}
printf("Hello world\n");
puts("hello"); // 문자열을 출력할 때 씀 엔터를 포함하고 있다.
puts("world");
char c1 = getchar(); // 두 개 이상의 문자를 쓰면 앞에 하나만!
printf("c1 : % c\n", c1);
char c2 = getch();
printf("c2 : % c\b", c2);
04.09
금요일은 집에서 듣는 자바 수업 날이었다.
이 날은 진도보단
전체 복습과
예제 문제를 풀어
그동안 배운 조건문과 반복문을 복습하는 날이었다.
package Day4;
import java.util.Random;
import java.util.Scanner;
/*
* Q7.
* 문자열 변수에 "인천직업능력개발원"으로 초기화된 변수를 생성
* 그리고 나서 랜덤을 이용하여 문자를 하나 추출해 컴퓨터가 가지고 있습니다.
* 그리고 유저는 글자를 입력해서 컴퓨터가 가지고 있는 값이랑 일치를 할 때까지 게임을 합니다.
* 컴퓨터가 가지고 있는 문자와 일치되면 게임은 끝납니다.
* 게임이 끝나면 컴퓨터가 가지고 있는 문자와 몇번만에 맞춰지는 출력을 해주세요.
* (단, 인천직업능력 개발원중에 문자가 아니면 잘못된 입력이라고 하고 시도횟수에 포함하지 않습니다.)
* */
public class Question1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "인천직업능력개발원";
Random r = new Random();
int i = r.nextInt(9);//0~8까지 랜덤함수
char com = str.charAt(i); // 컴퓨터에 문자 하나 추출하기
int cnt = 0;
while(true) {
System.out.println("'인천직업능력개발원' 중 문자 하나를 입력해주세요");
Scanner sc = new Scanner(System.in);
String user = sc.next();
if(str.contains(user)) { //문자열에 문자가 포함되는지 확인하는 함수
if(user.equals(Character.toString(com))) { // char를 String으로 변환해줌
System.out.println("컴퓨터의 문자 :" + com);
System.out.println("유저의 문자 :"+ user);
System.out.println("총 시도 :"+ cnt);
System.out.println("컴퓨터의 문자와 일치합니다. 게임을 종료합니다.");
break;
}else {
System.out.println("컴퓨터의 문자 :" + com);
System.out.println("유저의 문자 :"+ user);
System.out.println("컴퓨터의 문자와 일치하지 않습니다. 게임을 계속합니다.");
cnt += 1;
}
}else {
System.out.println("잘못된 입력입니다. 초기화면으로 돌아갑니다.");
}
}
}
}
Q1. 문자를 입력받아 문자열과 비교하기(첫 번째 버전)
첫 번째 버전은 아직 배우지 않은 함수를 이용해서 만들어버리는 바람에
오로지 조건문과 반복문만을 이용한 두 번째 버전도 만들어 보았다.
package Day4;
import java.util.Random;
import java.util.Scanner;
/*
* Q7.
* 문자열 변수에 "인천직업능력개발원"으로 초기화된 변수를 생성
* 그리고 나서 랜덤을 이용하여 문자를 하나 추출해 컴퓨터가 가지고 있습니다.
* 그리고 유저는 글자를 입력해서 컴퓨터가 가지고 있는 값이랑 일치를 할 때까지 게임을 합니다.
* 컴퓨터가 가지고 있는 문자와 일치되면 게임은 끝납니다.
* 게임이 끝나면 컴퓨터가 가지고 있는 문자와 몇번만에 맞춰지는 출력을 해주세요.
* (단, 인천직업능력 개발원중에 문자가 아니면 잘못된 입력이라고 하고 시도횟수에 포함하지 않습니다.)
* */
public class Question7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "인천직업능력개발원";
Random r = new Random();
int i = r.nextInt(9);//0~8까지 랜덤함수
char com = str.charAt(i); // 컴퓨터에 문자 하나 추출하여 저장
//char com = str.charAt(r.nextInt(9)); 이렇게도됨
int cnt = 0;//몇 번 시도했는지 카운트
while(true){
System.out.println("'인천직업능력개발원' 중 문자 하나를 입력해주세요");
Scanner sc = new Scanner(System.in);
String user = sc.next();//= char user = sc.next().charAt(0);
int check = 0;//반복 돌릴 때 마다 초기화
for(int j=0; j<9; j++) {
if(user.charAt(0) == str.charAt(j)) { //문자열에 문자가 포함되는지 확인
check += 1; //문자열에 포함될 시 check 표시해줌
break;//일치할 때 break걸어줌
}
}
if(check==1) { //문자열에 포함이 될 시
if(user.charAt(0)==com) {
System.out.println("컴퓨터의 문자 :" + com);
System.out.println("유저의 문자 :"+ user);
System.out.println("총 시도 횟수 :"+ cnt);
System.out.println("컴퓨터의 문자와 일치합니다. 게임을 종료합니다.");
break;
}else {
System.out.println("컴퓨터의 문자 :" + com);
System.out.println("유저의 문자 :"+ user);
System.out.println("컴퓨터의 문자와 일치하지 않습니다. 게임을 계속합니다.");
System.out.println();
cnt += 1;
}
}else {
System.out.println("잘못된 입력입니다. 초기화면으로 돌아갑니다.");
}
}
}
}
Q1. 문자를 입력받아 문자열과 비교하기(두 번째 버전)
괜히 시간만 두 번 잡아먹음ㅎㅎ
package Day4;
import java.util.Random;
import java.util.Scanner;
/*Q3. 가위바위보 게임문제 재풀이 + 추가
* 1) 문자열 "가위","바위","보"를 입력받습니다
* 2) 컴퓨터는 랜덤을 이용해서 "가위","바위","보"를 냅니다 (단, 이 입력 이외의 입력은 "잘못된 입력입니다" 출력)
* 3) 유저와 컴퓨터의 가위바위보를 비교하여
* 4)
* 유저가 승일 시 => "유저가 이겼습니다"
* 비겼을 시 => "비겼습니다"
* 컴퓨터 승일 시 => "컴퓨터가 이겼습니다" 출력
*
* +) 추가 계속 반복할 것 , 종료할 땐 "종료" 입력, 유저의 승무패 출력(유저가 10전 8승 1무 1패입니다)
* */
public class Question3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int total = 0; //전체 게임 수
int vic = 0; // 유저가 이긴 수
int draw = 0; // 무승부 수
int loss = 0; // 컴퓨터가 이긴 수
while(true) {
System.out.println("원하시는 가위바위보 패를 내주세요.");
System.out.println("종료를 원할 시엔 '종료'를 입력해주세요");
String user = sc.next();
if(user.equals("가위")||user.equals("바위")||user.equals("보")) { // 유저가 낸 패가 가위,바위,보와 일치할 때
Random r = new Random();
int com = r.nextInt(2);//0,1,2부여
String computer = "";
total += 1;//전체 게임수 추가
switch(com) { //랜덤으로 받은 수를 패로 변환하여 computer에 부여
case 0 :
computer = "가위";
break;
case 1 :
computer = "바위";
break;
case 2 :
computer ="보";
break;
}
//유저와 컴퓨터간의 가위바위보 게임 시작
System.out.println("유저의 패 : "+user);
System.out.println("컴퓨터의 패 : "+computer);
switch(user) {
case "가위" :
if(computer.equals("가위")) {
System.out.println("무승부입니다.");
draw+=1;
}else if(computer.equals("바위")) {
System.out.println("컴퓨터의 승리입니다.");
loss+=1;
}else {
System.out.println("유저의 승리입니다.");
vic+=1;
}
break;
case "바위" :
if(computer.equals("가위")) {
System.out.println("유저의 승리입니다.");
vic+=1;
}else if(computer.equals("바위")) {
System.out.println("무승부 입니다.");
draw+=1;
}else {
System.out.println("컴퓨터의 승리입니다.");
loss+=1;
}
break;
case "보" :
if(computer.equals("가위")) {
System.out.println("컴퓨터의 승리입니다.");
loss+=1;
}else if(computer.equals("바위")) {
System.out.println("유저의 승리입니다.");
vic+=1;
}else {
System.out.println("무승부 입니다.");
draw+=1;
}
break;
}
System.out.println();
}else if(user.equals("종료")){
System.out.println("시스템을 종료합니다.");
System.out.println("유저의 전적은 "+ total +"전 "+vic+"승 "+draw+"무 "+loss+"패 입니다.");
break;
}else {
System.out.println("잘못입력하셨습니다. 초기화면으로 돌아갑니다.");
System.out.println();
}
}
}
}
Q2. 지난주에 만들었던 랜덤 가위바위보 게임 업그레이드 버전
package Day4;
import java.util.Scanner;
/*
* Q8.
* 별 마름모 찍기 숫자를 입력해서 마름모를 찍습니다.
*
* 입력 : 3 => 입력 시 홀수만 입력이 되어야합니다. 짝수가 입력이 들어오면 잘못된 입력입니다 가 출력됩니다. -1을 입력하면 프로그램이 종료됩니다.
* *
* ***
* *
* */
public class Question2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("홀수 숫자를 입력해주세요");
System.out.println("(단,프로그램 종료하고 싶으실 시 -1을 입력해주세요)");
int num = sc.nextInt();
if(num%2==1 && num!=-1) {
//윗 삼각형
for (int i=0; i<num; i+=2) {//2개씩 증가, i에 +2를 해준다.(저기에 증감식말고 어떻게 들어가는지 몰라서 저 부분 검색해봄)
for (int j=num; j>=i; j-=2) {
System.out.print(" ");
}
for (int k=0; k<=i ; k++) {
System.out.print("*");
}
System.out.println();//개행
}
//밑 삼각형(위와 반대 but, num보다 -2해줌)
for (int i=0; i<=num-2; i+=2) {
System.out.print(" ");
for (int j=0; j<=i; j+=2) {
System.out.print(" ");
}
for (int k=num-2; k>i; k--) {
System.out.print("*");
}
System.out.println();
}
break;
}else if(num==-1){
System.out.println("프로그램을 종료합니다.");
break;
}else{
System.out.println("잘못된 입력입니다. 초기화면으로 돌아갑니다.");
}
}
}
}
Q3. 입력받은 수로 마름모(다이아몬드) 별 찍기
나는 늘 별을 찍을 때마다
머리가 빠개진다...
2주 차 완료~!
'공부 > 학원.' 카테고리의 다른 글
국비 개발 학원 5주차(04.26~04.30) (0) | 2021.04.26 |
---|---|
국비 개발 학원 4주차(04.19~04.23) (0) | 2021.04.20 |
국비 개발 학원 3주차(04.12~04.16) (0) | 2021.04.12 |
국비 개발 학원 1주차(03.31~04.02) (0) | 2021.04.05 |
국비 개발 학원 개강 (0) | 2021.04.04 |
댓글