정보과학 실습3
1. 코드 해석하기(주석 달기): 코드 전체, 내용별로 묶어 나누기 *책 참고하기
해야 할 것
2. 출력 결과 캡처해 붙여넣기
Ⅰ. 프로그래밍
주제
1. 프로그래밍 기초
반(체크)
실습1
V1반 □2반 □3반 □4반 □5반
번호
이진수 연산
교과서 34쪽
이진수 연산(과정도 적기)
● 1의 보수
● 2의 보수
(1) 19 – 3 =
(1) 19 – 3 =
(2) 8 – 2 =
(2) 8 – 2 =
(3) 7 – 7 =
(3) 7 – 7 =
실행화면
실행한 화면을 캡처하면 붙여 넣어주세요
실습2
비트 연산자
교과서 35쪽
프로그램 코드
2109
이름
이동훈
#include <stdio.h>
int main( )
{
printf("%d ", 10&7);//01010&00111=00010=2//둘 다 참,1
printf("%d ", 10|7);//01010 | 00111=01111=15//둘 중 하나 참,1
printf("%d ", 10^7);// 01010 ^00111=//다르면 1, 같으면 0
printf("%d ", ~10);//~01010=10101//비트 수준에서 변환
printf("%d ", 2<<3);
printf("%d ", 15>>2);
}
실행화면
실습3
연산자를 이용하여 int형의 최댓값을 알아내기
교과서 35쪽
힌트(작성하지 않아도 됨)
프로그램 코드
1. 정수형(int)의 크기는?4byte
- 1byte에 몇 비트? 8bit
- 1비트는 부호
2. 비트 연산자의 종류는?
3. 피연산자들의 가장 적절한 형태는?
실행화면
실습4
교과서
출력 형태 확인하기
36~37쪽
프로그램 코드
출력 형식
1. 1에서 10과 .1이 의미하는 것은?
10은 칸수, .1은 소수점 첫째자리까지 출력(반올림)
#include<stdio.h>
int main( ){
2. 2에서 –가 의미하는 것은? (5에서 –도 같은 의미)
printf("1. %10.1f \n",123.456);
왼쪽정렬
printf("2. %-16.9f \n",123.12345678954321);
printf("3. %010.1f \n",123.456);
3. 2의 출력되는 값이 123.123456790인 이유는?
printf("4. %013d \n",12345);
소수점 9째자리까지
printf("5. %-13d \n",12345);
}
,반올림
4. 3에서 010이 의미하는 것은? (4에서 013도 같은 의미)
10자리를 쓰고, 쓰는 자리 중 남은 자리는 0으로
채운다.
실행화면
실습5
연산자 우선순위
교과서 35쪽
(아래 연산자 우선순위 참고)
프로그램 코드
#include<stdio.h>
int main( ){
프로그램 설명
// 1. s = x++ * -3; 의 연산 순서 (우선순위 고려)
1. x인식 (x자리에 1 치환)
int x = 1, y = 0, z = -1, s = 0;
2. x가 1 증가
// 1.
3. -3 인식
s = x++ * -3;
4. 1*-3 연산
printf("%d %d\n", s, x);
5. S에 -3 대입
// 2. s = x ? --y: z--; 의 연산 순서 (우선순위 고려, z값이 바뀌지
// 2.
않는 이유)
s = x ? --y: z--;
1. X만 인식
printf("%d %d %d %d\n", s, x, y, z);
2. x는 2이다. 따라서 참
3. 앞의 것 실행, y가 1감소 따라서 s=-1, x=2, y=-1,z=-1
// 3.
s = !x - y;
printf("%d %d", s, x);
}
// 3. s = !x – y; 의 연산 순서 (우선순위, 고려)
1. x는 2이므로 참
2. !x=0
3. 0-(-1)=1, s=1, x=2
실행화면
(참고자료)
[프로그램 개발 시 발생할 수 있는 오류]
1. 구문오류(컴파일오류, Syntax error)
- 컴파일러가 찾아내는 오류로, 일반적으로 컴파일러가 오류 메시지를 출력하여 사용자에게 알려줌
- 프로그래밍 언어의 문법 규칙에 위배되어 컴파일러가 이를 이해하지 못하는 경우
(예시)
1. 세미콜론 없음
2.중괄호 불균형
3. 잘못된 변수이름, 예약어
4. 잘못된 함수 호출, 매개변수 전달
5. 잘못된 연산자 사용
2. 실행오류(Runtime error)
- 컴파일 시에 발견되지 않고, 프로그램 실행 중에만 발견됨
- 프로그램 실행 중에 발행하여 프로그램이 비정상적으로 종료되는 경우
(예시)
1. 0으로 나누는 경우(나누기 오류)
2.배열 범위를 벗어나는 인덱스로 접근하는 경우(배열 오버플로우)
3. 포인터가 널을 가리키는 경우(널 포인터 역참조)
4. 할당되지 않은 메모리 참조하는 경우(미할당 메모리 엑세스)
3. 논리오류(Logic error)
- 컴파일되고 실행되는 동안에도 발견되지 않고, 프로그램의 결과가 예상과 달라 발견됨
- 프로그램이 예상대로 동작하지 않는데, 코드가 잘못된 논리나 계산으로 인해 발생함
(예시)
1. 잘못된 알고리즘 구현
2. 잘못된 조건으로 인한 무한 루프
3. 잘못된 조건문 또는 논리식 사용으로 인한 잘못된 프로그램 동작
4. 잘못된 데이터 변환 또는 계산
실습6
오류의 종류와 이유 주석으로 적고, 옳게 고치기
프로그램 코드(주석: 오류 종류와 이유)
수정된 프로그램 코드
#include <stdio.h>
int main( ){
int arr[5] = {1, 2, 3, 4, 5};
printf("%d\n", arr[10]);//실행오류, 이유:
배열오버플로우
}
실행화면
실습7
실행화면
오류의 종류와 이유 주석으로 적고, 옳게 고치기
프로그램 코드(주석: 오류 종류와 이유)
수정된 프로그램 코드
#include <stdio.h>
int main( )
int x = 5//구문 오류, 세미콜론 없음
printf("x = %d\n", x);
return 0;
}
실행화면
실행화면
실행한 화면을 캡처하면 붙여 넣어주세요
실습8
오류의 종류와 이유 주석으로 적고, 옳게 고치기
프로그램 코드(주석: 오류 종류와 이유)
수정된 프로그램 코드
#include <stdio.h>
int main( ) {
int x = 10;
int y;//지역변수 초기화 필요
if (x < 5) y = 1;
else if(x = 3) y = 2;
printf("y = %d\n", y);
return 0;
}
실행화면
실행화면