Introdução à Programação



Documentos relacionados
Introdução à Programação

Programação: Estruturas de seleção

LINGUAGEM C. Estrutura básica de um programa

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Operadores unários de incremento/decremento. Ciclo for

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

INTRODUÇÃO À LINGUAGEM C++

Convertendo Algoritmos para a Linguagem C

Programando em C++ Histórico da Linguagem C

7. Estrutura de Decisão

ATENÇÃO!!! Rui Morgado - TLP 2

Algoritmos e Programação

Estruturas de repetição (Ciclos)

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Elementos de programação em C

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Introdução a Computação

Estruturas de entrada e saída

valor_dolar = converte(valor_compra, taxa_dolar); valor_final = converte(valor_dolar, taxa_real) * ;

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

INF 1007 Programação II

A linguagem C oferece quatro estruturas de decisão: if, if-else, switch e o operador condicional.

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Linguagem de Programação I

Estrutura de Dados. Prof. Gustavo Willam Pereira. Créditos: Profa. Juliana Pinheiro Campos

5 Apresentando a linguagem C

Tabela ASCII de caracteres de controle

Prof. Vania Gimenez.Notas de aula Lógica de programação- Este material não substitui os livros indicados no site no link bibliografia.

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Module Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Introdução à Linguagem C

Curso C: Controle de Fluxo

José Romildo Malaquias

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

INF 1005 Programação I

14.1 Vetor - Problemas

Conceitos básicos da linguagem C

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Linguagem de Programação C

INF 1005 Programação I

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P2 20/10/2010. Aluno: Exemplo (apenas um exemplo!):

Técnicas de Programação I

Técnicas de Programação I

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Tipos de Dados Simples

Introdução à Programação em C Input / Output

insfcanceof new public switch transient while byte continue extends for int null

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Java Como Programar, 8/E

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

GFM015 Introdução à Computação Linguagem C / Introdução à Modularização de Programas (uso de subprogramas)

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Estruturas de Controle em PHP

9 Comandos condicionais

#define SIM 1 equivale a definição de constantes; a palavra SIM é substituída por 1 toda vez que é utilizada no programa.

Introdução à Programação em C (II)

Programação por Objectos. Java

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Apresentar os conceitos básicos e as estruturas de linguagem relacionadas à tomada de decisão ofertadas pela linguagem C, tais como:

Exercícios práticos - Folha 3

Estrutura Condicional em Java

LTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Programação Estruturada I

Curso de C: uma breve introdução

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

Linguagem C (estruturas condicionais)

Computação II Orientação a Objetos

Panorâmica geral sobre PHP. PHP é uma linguagem que permite fazer. um ficheiro em PHP contem código PHP misturado com HTML.

O COMPUTADOR. Introdução à Computação

CURSO BÁSICO DE PROGRAMAÇÃO EM TURBO C DESCRIÇÃO DO PROGRAMA. Introdução e conceitos básicos

Algoritmos e Técnicas de

Curso C: Funções e Macros

Variáveis e Comandos de Atribuição

2 Orientação a objetos na prática

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Um Exemplo de Refatoração. Prof. Alberto Costa Neto DComp/UFS

FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA

Transcrição:

Aula Teórica 5: ciclos e funções

Getchar e putchar Escrever e ler caracteres A função getchar da biblioteca stdio.h permite de receber exatamente um (1) carácter da o "teclado"ou stdin Definição: int getchar(void) Notam: o tipo int permite de gravar o char, que é um inteiro mais pequeno (1 byte) Uso típico: receber uma sequencia de carateres ate o final (EOF) A função putchar faz o oposto, seja escreve um carácter no stdout int putchar(int c)

Getchar e putchar Exemplo: double.c #include <stdio.h> int main(void) { int c; while ((c = getchar())!= EOF) { putchar(c); putchar(c); return 0; Para experimentar: Double < double.c

Getchar e putchar Stdout: Double < double.c ##iinncclluuddee <<ssttddiioo..hh>> iinntt mmaaiinn((vvooiidd)) {{ iinntt cc;; wwhhiillee ((((cc == ggeettcchhaarr(())))!!== EEOOFF)) {{ ppuuttcchhaarr((cc));; ppuuttcchhaarr((cc));; rreettuurrnn 00;;

Getchar e putchar Exemplo: capitalize.c #include <stdio.h> int main(void) { int c; while ((c = getchar())!= EOF) if (c >= a && c <= z ) putchar(c + A - a ); else putchar(c); return 0; Lembram o exercício sobre os caracteres e os numerais? a +1 == b, b +1 == c... ( A - a ) == ( B - b )... c + A - a == C

Getchar e putchar Stdout: Capitalize < capitalize.c #INCLUDE <STDIO.H> INT MAIN(VOID) { INT C; WHILE ((C = GETCHAR())!= EOF) IF (C >= A && C <= Z ) PUTCHAR(C + A - A ); ELSE PUTCHAR(C); RETURN 0;

Getchar e putchar Exemplo: cnt-char.c /* Count blanks, digits, letters, newlines, and others. */ #include <stdio.h> int main(void) { int blank_cnt = 0, c, digit_cnt = 0, letter_cnt = 0, nl_cnt = 0, other_cnt = 0; while ((c = getchar())!= EOF) /* braces not necessary */ if (c == ) ++blank_cnt; else if (c >= 0 && c <= 9 ) ++digit_cnt; else if (c >= a && c <= z c >= A && c <= Z ) ++letter_cnt; else if (c == \n ) ++nl_cnt; else ++other_cnt; printf("%10s%10s%10s%10s%10s%10s\n\n", "blanks", "digits", "letters", "lines", "others", "total"); printf("%10d%10d%10d%10d%10d%10d\n\n", blank_cnt, digit_cnt, letter_cnt, nl_cnt, other_cnt, blank_cnt + digit_cnt + letter_cnt + nl_cnt + other_cnt); return 0;

Getchar e putchar Stdout: CntChar < cnt-char.c blanks digits letters lines others total 197 31 348 27 180 783

Tabela verdade Ciclos encaixados Podemos utilizar ciclos encaixados para construir uma tabela verdade para uma data formula Exemplo: cinco variáveis inteiras (b1 b5) com valor 0 o 1 Tabela para a função de maioridade e dois formulas 1 função da um quando a majoria das variáveis ha valor 1 2 Formula fct1: b1 b2 b3 3 Formula fct2: b1 && b2 b4 && b5

Tabela verdade Exemplo: tabela.c /* Print a table of values for some boolean functions. */ #include <stdio.h> int main(void) { int b1, b2, b3, b4, b5; /* boolean variables */ int cnt = 0; printf("\n%5s%5s%5s%5s%5s%5s%7s%7s%11s\n\n", /* headings */ "Cnt", "b1", "b2", "b3", "b4", "b5", "fct1", "fct2", "majority"); for (b1 = 0; b1 <= 1; ++b1) for (b2 = 0; b2 <= 1; ++b2) for (b3 = 0; b3 <= 1; ++b3) for (b4 = 0; b4 <= 1; ++b4) for (b5 = 0; b5 <= 1; ++b5) printf("%5d%5d%5d%5d%5d%5d%6d%7d%9d\n", ++cnt, b1, b2, b3, b4, b5, b1 b3 b5, b1 && b2 b4 && b5, b1 + b2 + b3 + b4 + b5 >= 3); putchar( \n ); return 0;

Tabela verdade Stdout Cnt b1 b2 b3 b4 b5 fct1 fct2 majority 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 3 0 0 0 1 0 0 0 0 4 0 0 0 1 1 1 1 0 5 0 0 1 0 0 1 0 0 6 0 0 1 0 1 1 0 0 7 0 0 1 1 0 1 0 0 8 0 0 1 1 1 1 1 1 9 0 1 0 0 0 0 0 0 10 0 1 0 0 1 1 0 0 11 0 1 0 1 0 0 0 0 12 0 1 0 1 1 1 1 1 13 0 1 1 0 0 1 0 0 14 0 1 1 0 1 1 0 1 15 0 1 1 1 0 1 0 1 16 0 1 1 1 1 1 1 1 17 1 0 0 0 0 1 0 0 18 1 0 0 0 1 1 0 0 19 1 0 0 1 0 1 0 0 20 1 0 0 1 1 1 1 1 21 1 0 1 0 0 1 0 0 22 1 0 1 0 1 1 0 1 23 1 0 1 1 0 1 0 1 24 1 0 1 1 1 1 1 1 25 1 1 0 0 0 1 1 0 26 1 1 0 0 1 1 1 1 27 1 1 0 1 0 1 1 1

Operador virgula Operador virgula Já utilizamos este operador na definição das variáveis int x=0, y, z=2; // equivalente a int x=0; int y; int z=2; A mesma coisa acontece no ciclo for for (sum=0, i=1; i <=n; ++i) sum=sum+1; Código equivalente: for (sum=0, i=1; i <=n; sum=sum+1, ++i) ; Notam o ordem no ultimo comando : sum=sum+1, ++i Se o ordem muda, o resultado muda também: ++i, sum=sum+1

Comando do Comando do do { O do é diferente do while enquanto o comando e sempre executado Exemplo: receber um numero do stdin que seja positivo A função scanf na biblioteca stdio.h permite de ler o stdin (cf. printf) Exemplo: scanf("%d", &n) atribui o inteiro do stdin a variável n Notam o simbolo "&"! Mais em frente estudaremos o que e o "&" printf("input a positive integer: "); scanf("%d", &n); if (error 0 (n <= 0)) printf("\n ERROR: n must be > 0"); while (error);

Comando switch Switch and break O switch permite de evitar o uso de if encaixados Ideia: fazer um test sobre um valor de uma variavel Uso: switch (x){ case 1: comandos (break);... case n: comandos (break); default: comandos; Notam: o break permite de sortir do switch imediatamente Sem o break, o controlo passa ao case seguinte

Comando switch Exemplo: switch.c #include <stdio.h> int main(void) { int x=0, c= a ; switch (x) { case 0: printf("x is %d==0\n",x); break; case 1: printf("x is %d==1\n",x); case 2: default: printf("x is %d\n",x); switch (c) { case a : printf("c is a. No break here.\n"); case A : printf("c is A. Not true yet, c is %c.\n",c); default: c= A ; printf("c is %c (printing c s value).\n", c); return 0;

Comando switch Switch.c: stdout // C snippet switch (x) { case 0: printf("x is %d==0\n",x); break;... switch (c) { case a : printf("c is a. No break here.\n"); case A : printf("c is A. Not true yet, c is %c.\n",c); default: c= A ; printf("c is %c (printing c s value).\n", c); // Output on stdout x is 0==0 c is a. No break here. c is A. Not true yet, c is a. c is A (printing c s value).

Comando switch Ciclos e break Na mesma maneira o break pode ser utilizado para interromper um ciclo #include <stdio.h> int main(void){ int n; while (1) { printf("insert an integer:\n"); scanf("%d", & n); if (n<0) break; else if (n==0) printf("%d: defined as 0\n", n); else printf("%d:function f returns %d\n", n, f(n)); return 0; Insert an integer: 0: defined as 0 Insert an integer: 1:function f returns 1 Insert an integer: 2:function f returns 2 Insert an integer:

Conditional operator Operador ternário Operador?: utilizado para fazer if-else em maneira compacta Exemplo: x = ( y < z)? y : z e equivalente a if (y < z) x=y; else x=z;

Conditional operator

Invocar as funções Quando programamos, a majoria dos cálculos são efetuados das funções Invocar uma função significa chamar a função com um argumento de tipo compatível Exemplo: chamada de uma função sem utilizar or resultado #include <stdio.h> int id (int x){ return x; int main(void){ int y=0; id(y); return 0;

Invocar as funções Quando programamos, a majoria dos cálculos são efetuados das funções Invocar uma função significa chamar a função com um argumento de tipo compatível Exemplo: chamada de uma função para utilizar or resultado #include <stdio.h> int segredo(int x){ return ((1-x)*(1+x)); int main(void){ int z; z=segredo(3); return 0;

Exemplo Exemplo: chamada de uma função para utilizar or resultado A função segredo usa dois funções para fazer o calculo int prim_seg(int x){ return x*x-(x+x); int sec_seg(int x){ return x+(x*(x-1)); int segredo(int x){ return (prim_seg(1-x)*sec_seg(1+x));

Scope das variáveis Reutilizar os mesmos nomes para as variáveis não e um problema Cada nome e noto só no scope delimitado da { int prim_seg(int x){ return x*x-(x+x); int sec_seg(int x){ return x+(x*(x-1)); int segredo(int x){ return (prim_seg(1-x)*sec_seg(1+x));

Scope das variáveis Podemos delimitar o scope com { em cada parte de um programa/função { int a = 2; printf("a is %d\n",a); //a is 2 { int a = 5; printf("a is %d\n",a); //a is 5 printf("a is %d==3\n",++a); //a is 3==3

Variáveis globais Podemos também definir variáveis acessíveis em todas as funções Mais a regra do scope sempre vales #include <stdio.h> int a=1,b=5,c=6; int test(void) { int a = c+2; printf(" a is %d\n b is %d\n c is %d\n",a,b,++c); //a is 8, b is 5, c is 7 return 0; int main(void){ test(); printf(" c is %d\n",c); //c is 7

Funções e scope: recapitular Estratégia call by value Uma função com parâmetros de tipo int, char, float, double,... (não apontadores) não muda o valor dos parâmetros O parâmetro é formal, seja a declaração no header limita o scope na função int segredo (int x){... Todas as ocorrências de x no corpo da função são referidas ao parâmetro Notam: se x e também o nome de uma variável global... O x na função refere bem ao parâmetro formal e não a variável global!