quarta-feira, 10 de março de 2021

Entrada e Saída de Dados

  Entrada e Saída de dados        

O termo Input, significa inserir alguns dados em um programa. Uma entrada pode ser fornecida na forma de um arquivo ou da linha de comando. A programação C fornece um conjunto de funções integradas para ler a entrada fornecida e alimentá-la ao programa de acordo com o pretendido.

O termo Output, significa exibir alguns dados na tela, impressora ou em qualquer arquivo. A programação C fornece um conjunto de funções integradas para a saída de dados na tela do computador, bem como para salvá-los em arquivos de texto ou binários.

Para efectuar as operações de entrada e saída de dados pode-se recorrer as funções scanf () e printf () para exibir a saída de dados para o utilizador.

 Entrada e Saída de dados númericos      

          Inicialização de variáveis       

As variáveis devem ser sempre inicializadas com um valor antes do seu uso. Se isso não for feito, a variável fica com um valor indefinido. Na memória do computador uma variável com valor indefinido é sinónimo de lixo. Exemplo:

        #include <stdio.h>

        main()
        {
           int a;

           printf("O valor de a = %d\n", a); 
        }

Ao ser executado, o programa pode escrever uma coisa deste estilo:

        O valor de a = 1877;
Devem ter sempre o cuidado de inicializar as variáveis antes destas serem utilizadas. Se isso não for feito, o programa muito provavelmente não irá fazer aquilo que se está à espera.
No exemplo concreto que acabei de ilustrar, 1877 é lixo. Isto é, a variável a ficou com o valor 1877 mas ninguém deu instruções ao computador para ele ter lá esse valor.
Já agora, aposto que quase toda a gente vai cometer este tipo de erro quando estiverem a fazer exercícios nas aulas práticas. Eu próprio costumo fazer esse tipo de erros de vez em quando. Nunca desanimem quando têm erros nos vossos programas. É raro um programa funcionar à primeira. Aquilo que se faz é corrigir os erros e voltar a recompilar até que o programa funcione como deve ser.


          Saída de dados       

Na programação C, printf() é uma das principais funções de saída. A função permite exibir uma informação na tela.

Por exemplo

#include <stdio.h>    
int main()
{ 
    // Exibe a string dentro de aspas
    printf("Programação em C");
    return 0;
}


Como é que este programa funciona?

Todos os programas C válidos devem conter a função main (). A execução do código começa no início da função main ().

    printf() - A função imprime a string entre aspas. Para usar printf () é necessário incluir o arquivo de cabeçalho stdio.h usando a instrução #include <stdio.h>.


Exemplo 2: Exibindo um número inteiro

#include <stdio.h>
int main()
{
    int testInteger = 5;
    printf("Number = %d", testInteger);
    return 0;
}

Usou-se o especificador de formato %d para imprimir o tipo int. Aqui, a %d dentro das aspas será substituído pelo valor de testInteger.


Formatação de valores decimais

Em linguagem C, você pode formatar dados decimais (números de ponto flutuante) usando especificadores de formato na função `printf()` para controlar a precisão, largura do campo e outras opções de formatação. Aqui estão alguns exemplos:

**Controle de Precisão:**

Pode controlar a precisão (número de casas decimais exibidas) ao formatar valores decimais usando o especificador de formato %f na função printf(). Você pode especificar a precisão colocando um número após o ponto dentro do especificador de formato %f.

Exemplo 3:
#include <stdio.h>

int main() {
    float valor = 123.456789;
    printf("%.2f\n", valor); // Imprime com 2 casas decimais
    printf("%.4f\n", valor); // Imprime com 4 casas decimais
    printf("%.8f\n", valor); // Imprime com 8 casas decimais
    return 0;
  }


**Largura do Campo:**

Exemplo 4:
#include <stdio.h>
int main() {
    int numero = 42;
    printf("%5d\n", numero); // Largura do campo de 5 caracteres
    printf("%10d\n", numero); // Largura do campo de 10 caracteres
    printf("%-10d\n", numero); // Largura do campo de 10 caracteres, alinhado à esquerda
    return 0;
}


**Notação Científica:**
Exemplo 5:
#include <stdio.h>

int main() {
    double grande_numero = 1234567.89;
    printf("%.2e\n", grande_numero); // Notação científica com 2 casas decimais
    return 0;

}


**Sinal e Zeros à Esquerda:**

Exemplo 6:
#include <stdio.h>

int main() {
    int valor = -42;
    printf("%+d\n", valor); // Inclui sinal (+ ou -)
    printf("%010d\n", valor); // Preenche com zeros à esquerda
    return 0;

}

Lembre-se de que a função `printf()` oferece várias opções de formatação, e você pode combiná-las de acordo com suas necessidades para formatar números decimais da maneira desejada. Consulte a documentação da função `printf()` para obter mais detalhes sobre os especificadores de formato disponíveis.


 Entrada e Saída de dados Literais       

Em linguagem C, a entrada e saída de dados literais (ou seja, dados fixos e pré-definidos) geralmente envolvem o uso de funções de entrada/saída padrão (printf para saída e scanf para entrada). 
Os especificadores de formato %c e %s são usados na função printf() em C para formatar diferentes tipos de dados:

%c - Caractere: O especificador %c é usado para formatar um caractere. Ele é utilizado para imprimir um único caractere, como letras, dígitos ou símbolos. Por exemplo:

     char letra = 'A'; printf("A letra é: %c\n", letra); // Imprime: A


%s - String (Sequência de Caracteres): O especificador %s é usado para formatar uma string (sequência de caracteres). Ele é utilizado para imprimir uma sequência de caracteres terminada por um caractere nulo ('\0'). Por exemplo:

char nome[] = "João"; printf("Olá, %s!\n", nome); // Imprime: Olá, João!



Portanto, a principal diferença entre %c e %s é que %c é usado para formatar caracteres individuais, enquanto %s é usado para formatar strings completas.

Lembre-se de que, ao usar %s, o argumento deve ser um ponteiro para a primeira posição da string (um array de caracteres). Enquanto que, ao usar %c, o argumento deve ser um caractere simples (uma variável do tipo char).

Aqui estão exemplos de como você pode trabalhar com dados literais:

Exemplo 7:
#include <stdio.h>
int main() {
    int idade;
    float altura;
    printf("Digite a sua idade: ");
    scanf("%d", &idade); // Lê o valor da idade
    printf("Digite a sua altura: ");
    scanf("%f", &altura); // Lê o valor da altura
    printf("Idade: %d, Altura: %.2f\n", idade, altura);
    return 0;
}


A entrada de dados literais é possível ao solicitar ao usuário que insira valores específicos usando a função scanf.

A combinação de formatação e entrada/saída permite manipular tanto dados literais quanto dados dinâmicos (fornecidos pelo usuário ou calculados) em um programa C.


Exemplo 8: Exibindo caracteres 

#include <stdio.h>
int main()
{
    char chr = 'a';    
    printf("character = %c", chr);  
    return 0;
} 

Para imprimir char, usa-se o especificador de formato %c.


          Entrada de dados            

Na programação C, scanf () é uma das funções comumente usadas para obter informações do usuário. A função scanf () permite ler os caracteres inseridos via teclado.

Exemplo 9: Entrada de números inteiros e double

Para imprimir valores do tipo float, usamos o especificador de formato %f. Da mesma forma, usamos %lf para imprimir valores double.

#include <stdio.h>
int main()
{
    float num1;
    double num2;

    printf("Digite um número: ");
    scanf("%f", &num1);
    printf("Digite o outro número: ");
scanf("%lf", &num2); printf("num1 = %f\n", num1); printf("num2 = %lf", num2); return 0; }

Aqui, usamos o especificador de formato% d dentro da função scanf() para obter a entrada interna do utilizador. Quando o utilizador insere um número inteiro, ele é armazenado na variável num1.

Observe que usou-se &num1 dentro de scanf(). É porque o &num1 obtém o endereço de num1, e o valor inserido pelo utilizador é armazenado nesse endereço.


          Entrada de strings            

Podemos aceitar a entrada de string em C usando scanf (“% s”, str) . Mas, ele aceita string apenas até encontrar o primeiro espaço. A expressão `scanf("%[^\n]s", nome);` é usada em linguagem C para ler uma linha inteira de entrada, incluindo espaços em branco, até encontrar o caractere de nova linha (`\n`). O `%[^\n]` é um especificador de formato que diz ao `scanf` para ler todos os caracteres até encontrar uma nova linha, e o `s` no final indica que é esperada uma sequência de caracteres (string).

Aqui está um exemplo de uso dessa expressão:

Exemplo 10

#include <stdio.h>
int main() {
    char nome[100]; // Assume que o nome tem no máximo 100 caracteres
    printf("Digite o seu nome: ");
    scanf("%[^\n]s", nome);
    printf("O nome digitado é: %s\n", nome);

    return 0;

}

Neste exemplo, a função `scanf` vai ler uma linha inteira de entrada (até o caractere de nova linha) e armazenar essa linha na variável `nome`. Isso permite que o programa capture um nome completo, incluindo espaços, e o imprima usando o `printf`.


          Comandos de entrada e saída: getchar() e putchar()            

Vamos discutir algumas funções de entrada de dados (diferente do scanf()). A entrada de texto é considerada como um fluxo de caratecteres. Um fluxo texto é uma sequência de caracteres dividida em linhas; cada linha consiste de zero ou mais caracteres seguido do caractere de nova linha (\n). Como programador, você não quer se preocupar em como as linhas são representadas fora do programa. Quem faz isso por você são funções de uma biblioteca padrão.

Suponha que você queira ler um único caractere, mas não quer usar o scanf(). Isso pode ser feito usando a função getchar(). A função putchar() aceita um argumento de entrada, cujo valor será impresso como caracter:

Exemplo 11:

#include <stdio.h>
int main(){
   char ch;
   printf("Digite algum caracter: ");
   ch = getchar();
   printf("\n A tecla pressionada eh %c.\n", ch);
}

O Resultado deste programa na tela é:

   Digite algum caracter: A
    A tecla pressionada eh A.

Outro exemplo:

Exemplo 12:

#include <stdio.h>

int main(){
   char ch;
   printf("Digite outro caracter: ");
   ch = getchar();
   putchar(ch);

}

O Resultado deste programa na tela é:

   Digite outro caracter: B
   B
Share:

Estrutura de um Programa em C

 

Antes de estudarmos os blocos de construção básicos da linguagem de programação C, vamos examinar uma estrutura de um programa C mínima para que possamos tomá-la como uma referência nos próximos tópicos.

Exemplo Olá, Mundo
Um programa C consiste basicamente nas seguintes partes:
 - Comandos do pré-processador
 - Funções
 - Variáveis
 - Declarações e Expressões
 - Comentários

Vejamos um código simples que imprime a mensagem "Olá, Mundo" -

Share:

segunda-feira, 8 de março de 2021

Diferença Linguagem C, C++ & Java

 Diferença  Linguagens C, C ++ e Java


As linguagens de programação C, C ++ e Java são as linguagens de programação mais populares e amplamente utilizadas no mercado. Nesta seção, discutiremos as diferenças entre C, C ++ e Java. Além das semelhanças de sintaxe e de ambos serem orientados a objetos, seu objetivo de design e filosofia são diferentes.


C

C é uma linguagem de programação de uso geral, estruturada, procedimental e de alto nível desenvolvida por Dennis MacAlistair Ritchie em 1972 na Bell Laboratories. O sucessor da linguagem C foi a CPL (Combined Programming Language). É usado principalmente para a programação do sistema, como para desenvolver o sistema operacional, drivers, compiladores, etc.

O exemplo mais conhecido de sistema operacional desenvolvido em linguagem C é o Unix e o Linux.


Características da linguagem C

  • Grande conjunto de operadores
  • Simples, rápido e eficiente
  • Case'sensitive
  • Baixo uso de memória
  • Facilmente extensível
  • Com tipagem estática


C ++

C ++ é uma linguagem de programação orientada a objetos e de propósito geral desenvolvida por Bjarne Stroustrup na Bell Labs em 1979. É baseada na linguagem C ou podemos dizer que é uma extensão da linguagem C. É usado para desenvolver aplicativos de alto desempenho.

Recursos da linguagem C ++

  • Case-Sensitive
  • Linguagem compilada
  • Plataforma independente
  • Alocação de memória dinâmica


Java

Java também é uma linguagem de programação orientada a objetos, baseada em classes, estática, forte, robusta, segura e de alto nível. Foi desenvolvido por James Gosling em 1995. É compilado e interpretado por bot. É usado para desenvolver aplicativos corporativos, móveis e baseados na web.

Recursos do Java

  • Orientado a Objeto
  • Plataforma independente
  • Dinâmico e Distribuído
  • Robusto
  • Multithreaded

A figura a seguir demonstra que C ++ é baseado na linguagem C e Java é baseado na linguagem C ++ e C.


Diferenças básicas

Característica

C

C++

Java

Origem

baseada em BCPL

baseada na linguagem C

baseada em C e C ++

Padrão de programação

Linguagem procedural

Linguagem orientada a objetos

Linguagem orientada a objetos

Estaticidade

Estática

Estática

Dinâmica

Execução do código

Executado diretamente

Executado diretamente

Executado pela JVM

Dependência da plataforma

Depende da plataforma

Depende da plataforma

É independente de plataforma

Tradução

Usa um compilador apenas para traduzir o código em linguagem de máquina

Usa um compilador apenas para traduzir o código em linguagem de máquina

Java usa compilador e interpretador

Tipo de ficheiros

Arquivos .exe

Arquivos .exe

Arquivo .class

Extensão

Extensão .c

Extensão .cpp

Extensão .cpp

Conceito de ponteiro

Oferece suporte a ponteiro

Oferece suporte a ponteiro

Não oferece suporte

União e tipo de dados de estrutura

Oferece suporte

Oferece suporte

Não oferece suporte

Tratamento de exceções

Não oferece suporte  

Oferece suporte  

Oferece suporte  

Gestão da memória

Usa os métodos calloc (), malloc (), free () e realloc ()

Usa o operador new e delete

Usa um coletor de lixo

Instrução goto

Oferece suporte

Oferece suporte

Não suporta

Aplicação

É amplamente usado para desenvolver drivers e sistemas operacionais

É amplamente utilizado para programação de sistema

Desenvolver aplicativos da web, aplicativos móveis e aplicativos do Windows

Tamanho da matriz

Uma matriz deve ser declarada com tamanho

Matriz deve ser declarada com tamanho

Pode ser declarada sem declarar o tamanho


Referências

https://www.javatpoint.com/c-vs-cpp-vs-java

https://leverageedu.com/blog/hi/difference-between-c-and-java/

https://www.educba.com/c-vs-java/

Share:

segunda-feira, 1 de março de 2021

Programação e Algortimos

         Programação e Algoritmos          


No mundo cada vez mais globalizante e globalizado – era da informação e de programação, há uma tendência de se manipular e transmitir grandes volumes de informação usando a programação, criando pequenos e grandes programas, influenciando, continuamente, a forma de viver e trabalhar das pessoas em toda a sua dimensão. É neste contexto que a disciplina Programação e Algoritmos I é ministrada no curso de Engenharia Informática com o objectivo de introduzir os conceitos base de programação, de forma a criar o algoritmo e o programa para um dado problema. 


      Plano      

- Historial
- Linguagens de programação
- Paradigmas

 - Conceitos gerais
 - Directrizes para a elaboração 
 - Formas de representação
 - Directrizes
 - Programa para o desenho de algoritmo (https://app.diagrams.net/)
 - 

Ambiente de desenvolvimento JAVA
   


Share:

quinta-feira, 18 de fevereiro de 2021

Plano - Inteligência Artificial

 

        Plano - Inteligência Artificial                                                                             


       Objectivos      

  No final da disciplina, o estudante deverá:

  • Modelar problemas de procura, especificar heurísticas e avaliar o seu comportamento na prática.
  • Implementar algoritmos de procura informada e de procura local. Parametrização e experimentação dos algoritmos.
  • Modelar conhecimentos com lógica. Modelar e resolver problemas combinatórios em Programação por Conjunto de Resposta.

 

        Plano Temático            

ü  Panorâmica e breve história da IA

ü  Resolução de problemas

ü  Representação do Conhecimento e Raciocínio

ü  Planeamento

ü  Aprendizagem Automática

ü  Incerteza e raciocínio probabilístico

ü  Futuro da Inteligência Artificial e problemas filosóficos

 

        Plano analítico            

Apresentação dos alunos e do professor

Considerações sobre a cadeira

Panorâmica e breve história da IA

 - Resenha histórica da IA e aplicações

 - Conceito de IA e inteligência computacional

 - Paradigmas e aproximações

 - Agentes

Resolução de problemas

  - Agentes e problemas de procura

  - Procura cega, Procura heurística (informada) em espaços de estados, Procura local e problemas de otimização, Procura com Adversários (Jogos)

  - Agentes adaptativos

  - Problemas de Satisfação de Restrições

Representação do Conhecimento e Raciocínio

 - Agentes lógicos

 - Lógica Proposicional

 - Lógica de Predicados de Primeira Ordem

 - Conhecimento de senso comum e lógicas não-monótonas

 - Lógica de Predicados de Primeira Ordem

 - Programação em Lógica e Programação por Conjuntos de Resposta Tipos recursivos

Planeamento

 - Agentes planeadores

 - Representação de problemas de planeamento clássicos 

 - Linguagens de planeamento

 - GRAPHPLAN

Aprendizagem Automática

 - Agentes aprendizes. Abordagens ao problema da aprendizagem

 - Aprendizagem conceptual e indutiva

Incerteza e raciocínio probabilístico

 - Planeamento proposicional

 - Teoria das Probabilidades e Regra de Bayes

Aproximações alternativas (teoria da evidência, conjuntos vagos, regras)


 

         Estratégia e Metodologia           

As aulas desta disciplina serão de carácter teórico pratica, não fugindo a regra geral com maior incidência para a componente prática, as aulas serão abordadas duma forma aberta onde o estudante será o principal protagonista, tomando a iniciativa e dirigindo a própria aula, sempre com o acompanhamento do professor.


        Bibliografia            

 

The adopted book in this course is [Stuart Russell & Peter Norvig, 2003]. Some specific topics are covered only in the Portuguese book [Costa & Simões, 2004]. The remaining books are optional readings.

 

Recomendada

1. Stuart Russel and Peter Norvig. Artificial Intelligence. A Modern Approach, 2nd edition. Prentice-Hall, Inc., 2003

 

 Ernesto Costa e Anabela Simões. Inteligência Artificial. Fundamentos e Aplicações. FCA, 2004


Complemantar

 Matt Ginsberg. Essentials of Artificial Intelligence. Morgan Kaufmann Publishers, 1994

 Nils J. Nilson. Artificial Intelligence: A new synthesis. Morgan Kaufmann Publishers, 1998. 


Share:

Seguidores

Visitantes do blog

Pesquisar neste blogue

posts recentes

Traduzir